20 #ifndef Tulip_GLSCENE_H 21 #define Tulip_GLSCENE_H 23 #include <tulip/tulipconf.h> 24 #include <tulip/GlLODCalculator.h> 25 #include <tulip/GlLayer.h> 26 #include <tulip/Color.h> 27 #include <tulip/Observable.h> 33 class GlLODCalculator;
34 class GlGraphComposite;
50 enum SelectedEntityType {
54 SIMPLE_ENTITY_SELECTED = 3
58 : simpleEntity(
nullptr), complexEntityId(uint(-1)), entityType(UNKNOW_SELECTED),
59 complexEntityGraph(
nullptr) {}
61 : simpleEntity(entity), complexEntityId(uint(-1)), entityType(SIMPLE_ENTITY_SELECTED),
62 complexEntityGraph(
nullptr) {}
64 : simpleEntity(
nullptr), complexEntityId(
id), entityType(type), complexEntityGraph(graph) {}
67 assert(simpleEntity !=
nullptr);
71 unsigned int getComplexEntityId()
const {
72 assert(complexEntityId != uint(-1));
73 return complexEntityId;
76 Graph *getComplexEntityGraph()
const {
77 assert(complexEntityGraph !=
nullptr);
78 return complexEntityGraph;
81 SelectedEntityType getEntityType()
const {
95 if (entityType == NODE_SELECTED) {
96 return node(complexEntityId);
113 if (entityType == EDGE_SELECTED) {
114 return edge(complexEntityId);
122 unsigned int complexEntityId;
123 SelectedEntityType entityType;
124 Graph *complexEntityGraph;
169 GlScene(GlLODCalculator *calculator =
nullptr);
177 void initGlParameters();
206 void computeAjustSceneToSize(
int width,
int height, Coord *center, Coord *eye,
float *sceneRadius,
207 float *xWhiteFactor,
float *yWhiteFactor,
209 float *zoomFactor =
nullptr);
216 void ajustSceneToSize(
int width,
int height);
222 void zoomXY(
int step,
const int x,
const int y);
228 void zoom(
float factor,
const Coord &dest);
240 void zoomFactor(
float factor);
245 void translateCamera(
const int x,
const int y,
const int z);
253 void rotateScene(
const int x,
const int y,
const int z);
265 bool selectEntities(RenderingEntitiesFlag type,
int x,
int y,
int h,
int w,
GlLayer *layer,
266 std::vector<SelectedEntity> &selectedEntities);
271 void outputSVG(
unsigned int size,
const std::string &filename);
276 void outputEPS(
unsigned int size,
const std::string &filename);
281 unsigned char *getImage();
288 viewport = newViewport;
299 viewport[3] = height;
314 backgroundColor = color;
321 return backgroundColor;
328 this->viewOrtho = viewOrtho;
344 GlLayer *createLayer(
const std::string &name);
353 GlLayer *createLayerBefore(
const std::string &layerName,
const std::string &beforeLayerWithName);
362 GlLayer *createLayerAfter(
const std::string &layerName,
const std::string &afterLayerWithName);
369 void addExistingLayer(
GlLayer *layer);
377 bool addExistingLayerBefore(
GlLayer *layer,
const std::string &beforeLayerWithName);
385 bool addExistingLayerAfter(
GlLayer *layer,
const std::string &afterLayerWithName);
391 GlLayer *getLayer(
const std::string &name);
399 void removeLayer(
const std::string &name,
bool deleteLayer =
true);
407 void removeLayer(
GlLayer *layer,
bool deleteLayer =
true);
421 for (std::vector<std::pair<std::string, GlLayer *>>::iterator it = layersList.begin();
422 it != layersList.end(); ++it)
431 void getXML(std::string &out);
436 void getXMLOnlyForCameras(std::string &out);
441 void setWithXML(std::string &in,
Graph *graph);
447 return lodCalculator;
454 lodCalculator = calculator;
455 calculator->setScene(*
this);
469 return glGraphComposite;
484 assert(graphLayer !=
nullptr);
485 return graphLayer->getCamera();
493 assert(graphLayer !=
nullptr);
494 graphLayer->setCamera(camera);
501 clearBufferAtDraw = clear;
508 return clearBufferAtDraw;
515 clearDepthBufferAtDraw = clear;
522 return clearDepthBufferAtDraw;
529 clearStencilBufferAtDraw = clear;
536 return clearStencilBufferAtDraw;
540 std::vector<std::pair<std::string, GlLayer *>> layersList;
541 GlLODCalculator *lodCalculator;
542 Vector<int, 4> viewport;
543 Color backgroundColor;
549 bool clearBufferAtDraw;
553 bool clearDepthBufferAtDraw;
555 bool clearStencilBufferAtDraw;
578 void notifyModifyLayer(
const std::string &name,
GlLayer *layer);
591 #endif // Tulip_GLSCENE_H
void setViewport(Vector< int, 4 > &newViewport)
Set the viewport of the scene with a vector The viewport must be in many case the size of the widget ...
edge getEdge() const
getEdge is a convenience method to perform the check on the selected element type and return the corr...
void setGraphCamera(Camera *camera)
By default the most important layer is the layer where the graph is visualized This function set the ...
void setBackgroundColor(const Color &color)
Set the background color of the scene.
Base class for all Tulip OpenGL entities.
void clearLayersList()
Clear layers list Layers will not be deleted in this function.
void setCalculator(GlLODCalculator *calculator)
Set a new lod calculator used to render this scene.
GlGraphComposite * getGlGraphComposite()
Return the current GlGraphComposite used by the scene.
bool isViewOrtho()
Scene is render in orthogonal mode ?
Camera & getGraphCamera()
By default the most important layer is the layer where the graph is visualized This function return t...
bool getClearDepthBufferAtDraw() const
If false, depth buffer will not be cleared before drawing the scene.
bool getClearBufferAtDraw() const
If false, color buffer will not be cleared before drawing the scene.
Color getBackgroundColor() const
Get the background color of the scene.
The edge struct represents an edge in a Graph object.
The node struct represents a node in a Graph object.
GlLayer * getGraphLayer()
Return the layer containing the current GlGraphComposite.
This class represents the 3D bounding box of an object. It is mostly used to determine whether or not...
Tulip OpenGL camera object.
void setClearDepthBufferAtDraw(bool clear)
Set if OpenGL depth buffer will be cleared at draw.
void setViewOrtho(bool viewOrtho)
Set if scene is render in orthogonal mode.
const std::vector< std::pair< std::string, GlLayer * > > & getLayersList()
Return the layer list.
Class use to visualize graph in OpenGL Tulip engine.
GlLODCalculator * getCalculator()
Return lod calculator used to render this scene.
void setClearStencilBufferAtDraw(bool clear)
Set if OpenGL stencil buffer will be cleared at draw.
The Observable class is the base of Tulip's observation system.
bool getClearStencilBufferAtDraw() const
If false, color buffer will not be cleared before drawing the scene.
node getNode() const
getNode is a convenience method to perform the check on the selected element type and return the corr...
Structure to store selected entities.
void setClearBufferAtDraw(bool clear)
Set if OpenGL buffer will be cleared at draw.
A GlLayer is like an 2D drawing software layer system.
void setViewport(int x, int y, int width, int height)
Set the viewport of the scene with 4 int The viewport must be in many case the size of the widget con...
Vector< int, 4 > getViewport() const
Get the viewport of the scene The viewport will be in many case the size of the widget containing the...