Tulip
4.6.0
Better Visualization Through Research
|
#include <GlMainWidget.h>
Public Types | |
enum | RenderingOption { RenderScene = 0x1, SwapBuffers = 0x2 } |
Public Slots | |
void | centerScene (bool graphChanged=false, float zoomFactor=1.0) |
void | closeEvent (QCloseEvent *e) |
void | draw (bool graphChanged=true) |
void | emitGraphChanged () |
void | redraw () |
Signals | |
void | closing (GlMainWidget *, QCloseEvent *) |
void | glResized (int w, int h) |
void | graphChanged () |
void | viewDrawn (GlMainWidget *glWidget, bool graphChanged) |
void | viewRedrawn (GlMainWidget *glWidget) |
Public Member Functions | |
GlMainWidget (QWidget *parent=NULL, View *view=NULL) | |
bool | advancedAntiAliasingActivated () const |
void | computeInteractors () |
void | createPicture (const std::string &pictureName, int width, int height, bool center=true) |
QImage | createPicture (int width, int height, bool center=true) |
QGLFramebufferObject * | createTexture (const std::string &textureName, int width, int height) |
void | doSelect (const int x, const int y, const int width, const int height, std::vector< tlp::node > &sNode, std::vector< tlp::edge > &sEdge, tlp::GlLayer *layer=NULL) |
bool | doSelect (const int x, const int y, tlp::ElementType &type, tlp::node &n, tlp::edge &e, tlp::GlLayer *layer=NULL) |
void | drawInteractors () |
tlp::GlScene * | getScene () |
virtual QImage | grabFrameBuffer (bool withAlpha=false) |
bool | keepScenePointOfViewOnSubgraphChanging () const |
virtual void | makeCurrent () |
bool | outputEPS (int size, int doSort, const char *filename) |
bool | outputSVG (int size, const char *filename) |
bool | pickGlEntities (const int x, const int y, const int width, const int height, std::vector< SelectedEntity > &pickedEntities, tlp::GlLayer *layer=NULL) |
bool | pickGlEntities (const int x, const int y, std::vector< SelectedEntity > &pickedEntities, tlp::GlLayer *layer=NULL) |
void | pickNodesEdges (const int x, const int y, const int width, const int height, std::vector< SelectedEntity > &selectedNodes, std::vector< SelectedEntity > &selectedEdges, tlp::GlLayer *layer=NULL, bool pickNodes=true, bool pickEdges=true) |
bool | pickNodesEdges (const int x, const int y, SelectedEntity &selectedEntity, tlp::GlLayer *layer=NULL, bool pickNodes=true, bool pickEdges=true) |
void | render (RenderingOptions options=RenderingOptions(RenderScene|SwapBuffers), bool checkVisibility=true) |
void | resizeGL (int w, int h) |
bool | selectGlEntities (const int x, const int y, const int width, const int height, std::vector< GlSimpleEntity * > &pickedEntities, tlp::GlLayer *layer=NULL) |
bool | selectGlEntities (const int x, const int y, std::vector< GlSimpleEntity * > &pickedEntities, tlp::GlLayer *layer=NULL) |
void | setAdvancedAntiAliasing (bool advancedAntiAliasing) |
void | setKeepScenePointOfViewOnSubgraphChanging (bool) |
Static Public Member Functions | |
static void | clearFirstQGLWidget () |
static QGLWidget * | getFirstQGLWidget () |
static void | getTextureRealSize (int width, int height, int &textureRealWidth, int &textureRealHeight) |
Protected Slots | |
void | paintEvent (QPaintEvent *) |
This widget provide a simple system to visualize data/graph with OpenGL 3D engine.
This widget is an interface between Qt Widget system and tulip OpenGL engine The central object of GlMainWidget is the GlScene member
To use this class you have to :
If you only want to visualize a graph, you can call the setGraph function
After scene construction you can perform some operation on GlMainWidget :
Definition at line 64 of file GlMainWidget.h.
Configure the rendering process ( see render function)
Definition at line 72 of file GlMainWidget.h.
tlp::GlMainWidget::GlMainWidget | ( | QWidget * | parent = NULL , |
View * | view = NULL |
||
) |
Constructor of GlMainWidget.
Create a GlMainWidget with the GlScene associated to it
parent | Qt Widget parent system |
view | if you want to link this GlMainWidget to a view : use this parameter |
bool tlp::GlMainWidget::advancedAntiAliasingActivated | ( | ) | const [inline] |
Returns the advanced anti-aliasing technique state
Definition at line 313 of file GlMainWidget.h.
void tlp::GlMainWidget::centerScene | ( | bool | graphChanged = false , |
float | zoomFactor = 1.0 |
||
) | [slot] |
Convenience function that call center function on the current scene, apply a zoom (if needed) and draw the view. Same thing than.
getScene()->centerScene(); getScene()->zoomFactor(); draw();
void tlp::GlMainWidget::closing | ( | GlMainWidget * | , |
QCloseEvent * | |||
) | [signal] |
This signal is emit when the GlMainWidget will be deleted
Compute interactors before drawing
void tlp::GlMainWidget::createPicture | ( | const std::string & | pictureName, |
int | width, | ||
int | height, | ||
bool | center = true |
||
) |
Take a snapshot of the Widget and put it in a picture.
width | size |
height | size |
center | if true this function call a centerScene() before picture output |
QImage tlp::GlMainWidget::createPicture | ( | int | width, |
int | height, | ||
bool | center = true |
||
) |
Take a snapshot of the Widget and return it
width | size |
height | size |
center | if true this function call a centerScene() before picture output |
QGLFramebufferObject* tlp::GlMainWidget::createTexture | ( | const std::string & | textureName, |
int | width, | ||
int | height | ||
) |
Take a snapshot of the Widget and put it in an OpenGl texture.
width | power of two number (for example 256) |
height | power of two number (for example 256) You can use this texture with Tulip texture system |
void tlp::GlMainWidget::doSelect | ( | const int | x, |
const int | y, | ||
const int | width, | ||
const int | height, | ||
std::vector< tlp::node > & | sNode, | ||
std::vector< tlp::edge > & | sEdge, | ||
tlp::GlLayer * | layer = NULL |
||
) |
bool tlp::GlMainWidget::doSelect | ( | const int | x, |
const int | y, | ||
tlp::ElementType & | type, | ||
tlp::node & | n, | ||
tlp::edge & | e, | ||
tlp::GlLayer * | layer = NULL |
||
) |
void tlp::GlMainWidget::draw | ( | bool | graphChanged = true | ) | [slot] |
Draw the GlScene and the interactors
void tlp::GlMainWidget::drawInteractors | ( | ) |
Draw interactors
static QGLWidget* tlp::GlMainWidget::getFirstQGLWidget | ( | ) | [static] |
This function return the first QGLWidget created This function is use to share OpenGL context
tlp::GlScene* tlp::GlMainWidget::getScene | ( | ) | [inline] |
Get the GlScene of this GlMainWidget You have to add yours GlLayer and GlEntity to this GlScene At the construction this GlScene is empty.
Definition at line 96 of file GlMainWidget.h.
static void tlp::GlMainWidget::getTextureRealSize | ( | int | width, |
int | height, | ||
int & | textureRealWidth, | ||
int & | textureRealHeight | ||
) | [static] |
Compute texture size in power of two with given height and width For example if you set width to 94 and height to 256, this function set textureRealWidth to 128 and textureRealHeight to 256.
virtual QImage tlp::GlMainWidget::grabFrameBuffer | ( | bool | withAlpha = false | ) | [virtual] |
Grab the FrameBuffer of this GlMainWidget
withAlpha | use alpha chanel |
bool tlp::GlMainWidget::keepScenePointOfViewOnSubgraphChanging | ( | ) | const |
Returns if the scene point of view must be kept when changing between graphs belonging to the same hierarchy.
virtual void tlp::GlMainWidget::makeCurrent | ( | ) | [virtual] |
Extend makeCurrent function of QGLWidget to inform TextureManager and DisplayListManager of context changement
bool tlp::GlMainWidget::outputEPS | ( | int | size, |
int | doSort, | ||
const char * | filename | ||
) |
EPS output of the GlMainWidget.
bool tlp::GlMainWidget::outputSVG | ( | int | size, |
const char * | filename | ||
) |
SVG output of the GlMainWidget.
bool tlp::GlMainWidget::pickGlEntities | ( | const int | x, |
const int | y, | ||
const int | width, | ||
const int | height, | ||
std::vector< SelectedEntity > & | pickedEntities, | ||
tlp::GlLayer * | layer = NULL |
||
) |
Function to do picking on entities. It just calls selectEntities on the GlScene instance.
x | screen coordinates |
y | screen coordinates |
width | screen size |
height | screen size |
pickedEntities | filled with entity under the selection screen rectangle |
layer | if you want to do the selection only on one GlLayer |
bool tlp::GlMainWidget::pickGlEntities | ( | const int | x, |
const int | y, | ||
std::vector< SelectedEntity > & | pickedEntities, | ||
tlp::GlLayer * | layer = NULL |
||
) |
Function to do picking on entities. It just calls selectEntities on the GlScene instance with a small window of twelve pixels.
x | screen coordinates |
y | screen coordinates |
pickedEntities | filled with entity under the selection screen rectangle |
layer | if you want to do the selection only on one GlLayer |
void tlp::GlMainWidget::pickNodesEdges | ( | const int | x, |
const int | y, | ||
const int | width, | ||
const int | height, | ||
std::vector< SelectedEntity > & | selectedNodes, | ||
std::vector< SelectedEntity > & | selectedEdges, | ||
tlp::GlLayer * | layer = NULL , |
||
bool | pickNodes = true , |
||
bool | pickEdges = true |
||
) |
Select nodes and edges in a region of the screen.
Select all nodes and edges lying in the area of the screen of given width and height, and with its upper-left corner at (x,y)
selectedNodes | filled by the method with the nodes found in the region |
selectedEdges | filled by the method with the edges found in the region |
layer | specify the layer in which to perform the picking |
pickNodes | enable or disable the picking of nodes |
pickEdges | enable or disable the picking of edges |
bool tlp::GlMainWidget::pickNodesEdges | ( | const int | x, |
const int | y, | ||
SelectedEntity & | selectedEntity, | ||
tlp::GlLayer * | layer = NULL , |
||
bool | pickNodes = true , |
||
bool | pickEdges = true |
||
) |
Select a node or edge at a point Try to select at point (x,y) a node in the first place then if no result try to select an edge.
type | tells what has been found: NODE, EDGE |
layer | specify the layer in which to perform the picking |
pickNodes | enable or disable the picking of nodes |
pickEdges | enable or disable the picking of edges |
void tlp::GlMainWidget::redraw | ( | ) | [slot] |
That function is given for optimisation purpose. If the hardware enable it, it enables to redraw only the Augmented display and the interactors and not the graph it is really usefull for interactors such as zoom box etc.. Warning, if you change the graph or the porperties of element (Colors, size, etc...) applying that fonction will not display the change, in that case, use the draw function.
void tlp::GlMainWidget::render | ( | RenderingOptions | options = RenderingOptions(RenderScene|SwapBuffers) , |
bool | checkVisibility = true |
||
) |
This function performs all the rendering process of the graph. Use this function only for advanced purpose, if you want to perform simple rendering use the draw or redraw functions instead.
options | Configure the rendering process, see the RenderingOption documentation for more information on each rendering option effect. |
checkVisibility | If check visibility is set as true : the engine check if GlMainWidget QWidget is visible. If set at false : the engine render the scene in all cases |
void tlp::GlMainWidget::resizeGL | ( | int | w, |
int | h | ||
) |
Resize openGL view
bool tlp::GlMainWidget::selectGlEntities | ( | const int | x, |
const int | y, | ||
const int | width, | ||
const int | height, | ||
std::vector< GlSimpleEntity * > & | pickedEntities, | ||
tlp::GlLayer * | layer = NULL |
||
) | [inline] |
Definition at line 214 of file GlMainWidget.h.
bool tlp::GlMainWidget::selectGlEntities | ( | const int | x, |
const int | y, | ||
std::vector< GlSimpleEntity * > & | pickedEntities, | ||
tlp::GlLayer * | layer = NULL |
||
) | [inline] |
Definition at line 235 of file GlMainWidget.h.
void tlp::GlMainWidget::setAdvancedAntiAliasing | ( | bool | advancedAntiAliasing | ) | [inline] |
Specify if an advanced technique for better scene anti-aliasing has to be activated.
That option allows to obtain a better scene antialiasing through the use of offscreen rendering and sampling. The result rendering will look better while the performance will be slightly altered. That option is desactivated by default. Use it with caution as it could cause crashes with some buggy OpenGL drivers.
Definition at line 306 of file GlMainWidget.h.
Specify if the scene point of view must be kept when changing between graphs belonging to the same hierarchy.
void tlp::GlMainWidget::viewDrawn | ( | GlMainWidget * | glWidget, |
bool | graphChanged | ||
) | [signal] |
This signal is emit when GlMainWidget::draw() is call
void tlp::GlMainWidget::viewRedrawn | ( | GlMainWidget * | glWidget | ) | [signal] |
This signal is emit when GlMainWidget::redraw() is call