21 #ifndef Tulip_GLGRAPHINPUTDATA_H
22 #define Tulip_GLGRAPHINPUTDATA_H
24 #include <tulip/tulipconf.h>
25 #include <tulip/Observable.h>
26 #include <tulip/LayoutProperty.h>
27 #include <tulip/DoubleProperty.h>
28 #include <tulip/StringProperty.h>
29 #include <tulip/BooleanProperty.h>
30 #include <tulip/SizeProperty.h>
31 #include <tulip/IntegerProperty.h>
32 #include <tulip/ColorProperty.h>
36 class PropertyManager;
39 class EdgeExtremityGlyph;
40 class GlVertexArrayManager;
41 class GlMetaNodeRenderer;
42 class GlGraphRenderingParameters;
43 class GlGlyphRenderer;
48 class TLP_GL_SCOPE GlGraphInputData :
public Observable {
58 VIEW_LABELBORDERCOLOR,
59 VIEW_LABELBORDERWIDTH,
83 GlGraphInputData(Graph* graph, GlGraphRenderingParameters* parameters,GlMetaNodeRenderer *renderer = NULL);
90 Graph* getGraph()
const {
94 void treatEvent(
const Event &ev);
100 void setMetaNodeRenderer(GlMetaNodeRenderer *renderer,
bool deleteOldMetaNodeRenderer=
true);
105 GlMetaNodeRenderer *getMetaNodeRenderer()
const {
106 return _metaNodeRenderer;
112 GlVertexArrayManager *getGlVertexArrayManager()
const {
113 return _glVertexArrayManager;
116 GlGlyphRenderer *getGlGlyphRenderer()
const {
117 return _glGlyphRenderer;
123 void setGlVertexArrayManager(GlVertexArrayManager * manager) {
124 _glVertexArrayManager=manager;
132 std::map<std::string, PropertyName>::iterator it =
133 _propertiesNameMap.find(name);
135 if (it != _propertiesNameMap.end())
136 return _propertiesMap[it->second];
146 T* getProperty(PropertyName propertyName)
const {
147 return static_cast<T*
>(_propertiesMap[propertyName]);
154 void setProperty(PropertyName propertyName, PropertyInterface *property) {
155 _properties.
erase(_propertiesMap[propertyName]);
156 _propertiesMap[propertyName]=property;
157 _properties.insert(property);
163 bool setProperty(
const std::string& name, PropertyInterface *property);
168 bool installProperties(
const std::map<std::string, tlp::PropertyInterface*>& propsMap);
173 ColorProperty * getElementColor()
const {
174 return getProperty<ColorProperty>(VIEW_COLOR);
179 void setElementColor(ColorProperty *property) {
180 setProperty(VIEW_COLOR,property);
185 ColorProperty *getElementLabelColor()
const {
186 return getProperty<ColorProperty>(VIEW_LABELCOLOR);
191 void setElementLabelColor(ColorProperty *property) {
192 setProperty(VIEW_LABELCOLOR,property);
197 ColorProperty *getElementLabelBorderColor()
const {
198 return getProperty<ColorProperty>(VIEW_LABELBORDERCOLOR);
203 void setElementLabelBorderColor(ColorProperty *property) {
204 setProperty(VIEW_LABELBORDERCOLOR,property);
209 DoubleProperty *getElementLabelBorderWidth()
const {
210 return getProperty<DoubleProperty>(VIEW_LABELBORDERWIDTH);
215 void setElementLabelBorderWidth(DoubleProperty *property) {
216 setProperty(VIEW_LABELBORDERWIDTH,property);
221 SizeProperty *getElementSize()
const {
222 return getProperty<SizeProperty>(VIEW_SIZE);
227 void setElementSize(SizeProperty *property) {
228 setProperty(VIEW_SIZE,property);
233 IntegerProperty *getElementLabelPosition()
const {
234 return getProperty<IntegerProperty>(VIEW_LABELPOSITION);
239 void setElementLabelPosition(IntegerProperty *property) {
240 setProperty(VIEW_LABELPOSITION,property);
245 IntegerProperty *getElementShape()
const {
246 return getProperty<IntegerProperty>(VIEW_SHAPE);
251 void setElementShape(IntegerProperty *property) {
252 setProperty(VIEW_SHAPE,property);
257 DoubleProperty *getElementRotation()
const {
258 return getProperty<DoubleProperty>(VIEW_ROTATION);
263 void setElementRotation(DoubleProperty *property) {
264 setProperty(VIEW_ROTATION,property);
269 BooleanProperty *getElementSelected()
const {
270 return getProperty<BooleanProperty>(VIEW_SELECTED);
275 void setElementSelected(BooleanProperty *property) {
276 setProperty(VIEW_SELECTED,property);
281 StringProperty *getElementFont()
const {
282 return getProperty<StringProperty>(VIEW_FONT);
287 void setElementFont(StringProperty *property) {
288 setProperty(VIEW_FONT,property);
293 IntegerProperty *getElementFontSize()
const {
294 return getProperty<IntegerProperty>(VIEW_FONTSIZE);
299 void setElementFontSize(IntegerProperty *property) {
300 setProperty(VIEW_FONTSIZE,property);
305 StringProperty *getElementLabel()
const {
306 return getProperty<StringProperty>(VIEW_LABEL);
311 void setElementLabel(StringProperty *property) {
312 setProperty(VIEW_LABEL,property);
317 LayoutProperty *getElementLayout()
const {
318 return getProperty<LayoutProperty>(VIEW_LAYOUT);
323 void setElementLayout(LayoutProperty *property) {
324 setProperty(VIEW_LAYOUT,property);
329 StringProperty *getElementTexture()
const {
330 return getProperty<StringProperty>(VIEW_TEXTURE);
335 void setElementTexture(StringProperty *property) {
336 setProperty(VIEW_TEXTURE,property);
341 ColorProperty *getElementBorderColor()
const {
342 return getProperty<ColorProperty>(VIEW_BORDERCOLOR);
347 void setElementBorderColor(ColorProperty *property) {
348 setProperty(VIEW_BORDERCOLOR,property);
353 DoubleProperty *getElementBorderWidth()
const {
354 return getProperty<DoubleProperty>(VIEW_BORDERWIDTH);
359 void setElementBorderWidth(DoubleProperty *property) {
360 setProperty(VIEW_BORDERWIDTH,property);
365 IntegerProperty *getElementSrcAnchorShape()
const {
366 return getProperty<IntegerProperty>(VIEW_SRCANCHORSHAPE);
371 void setElementSrcAnchorShape(IntegerProperty *property) {
372 setProperty(VIEW_SRCANCHORSHAPE,property);
377 SizeProperty *getElementSrcAnchorSize()
const {
378 return getProperty<SizeProperty>(VIEW_SRCANCHORSIZE);
383 void setElementSrcAnchorSize(SizeProperty *property) {
384 setProperty(VIEW_SRCANCHORSIZE,property);
389 IntegerProperty *getElementTgtAnchorShape()
const {
390 return getProperty<IntegerProperty>(VIEW_TGTANCHORSHAPE);
395 void setElementTgtAnchorShape(IntegerProperty *property) {
396 setProperty(VIEW_TGTANCHORSHAPE,property);
401 SizeProperty *getElementTgtAnchorSize()
const {
402 return getProperty<SizeProperty>(VIEW_TGTANCHORSIZE);
407 void setElementTgtAnchorSize(SizeProperty *property) {
408 setProperty(VIEW_TGTANCHORSIZE,property);
413 IntegerProperty *getElementAnimationFrame()
const {
414 return getProperty<IntegerProperty>(VIEW_ANIMATIONFRAME);
419 void setElementAnimationFrame(IntegerProperty *property) {
420 setProperty(VIEW_ANIMATIONFRAME,property);
423 std::set<tlp::PropertyInterface*> properties()
const {
430 void reloadGraphProperties();
436 GlGraphRenderingParameters* renderingParameters()
const {
444 void setRenderingParameters(GlGraphRenderingParameters* newParameters) {
445 parameters = newParameters;
452 GlGraphRenderingParameters* parameters;
454 MutableContainer<Glyph *> glyphs;
455 MutableContainer<EdgeExtremityGlyph *> extremityGlyphs;
459 std::set<PropertyInterface*> _properties;
461 PropertyInterface* _propertiesMap[NB_PROPS];
462 static std::map<std::string,PropertyName> _propertiesNameMap;
464 GlMetaNodeRenderer *_metaNodeRenderer;
465 GlVertexArrayManager *_glVertexArrayManager;
466 GlGlyphRenderer *_glGlyphRenderer;
PropertyInterface describes the interface of a graph property.
virtual void erase(const node)=0
Erases the value stored for the given node. The new value for the node is the default value...