Tulip  4.0.0
Better Visualization Through Research
 All Classes Files Functions Variables Enumerations Enumerator Properties Groups Pages
GlConvexGraphHull.h
1 /*
2  *
3  * This file is part of Tulip (www.tulip-software.org)
4  *
5  * Authors: David Auber and the Tulip development Team
6  * from LaBRI, University of Bordeaux 1 and Inria Bordeaux - Sud Ouest
7  *
8  * Tulip is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU Lesser General Public License
10  * as published by the Free Software Foundation, either version 3
11  * of the License, or (at your option) any later version.
12  *
13  * Tulip is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16  * See the GNU General Public License for more details.
17  *
18  */
19 ///@cond DOXYGEN_HIDDEN
20 
21 
22 #ifndef GLCONVEXGRAPHHULL_H_
23 #define GLCONVEXGRAPHHULL_H_
24 
25 #include <tulip/ObservableGraph.h>
26 #include <tulip/Color.h>
27 #include <tulip/ObservableProperty.h>
28 
29 namespace tlp {
30 
31 class GlComposite;
32 class GlSimpleEntity;
33 class Camera;
34 class Graph;
35 class LayoutProperty;
36 class SizeProperty;
37 class DoubleProperty;
38 class GlComplexPolygon;
39 
40 /**
41  * @brief This class draws a convex hull around a graph.
42  *
43  * Given a graph, this class computes the various control points of a convex hull that embraces the nodes and edges present into the graph.
44  * If this entity is translated using the translate method, every element of the linked graph will be translated as well.
45  *
46  * @warning The graph or any of the properties linked to a GlConvexGraphHull should never be deleted before the entity. Such a thing should be
47  * reported to the user in debug mode, raising an assertion.
48  */
49 class TLP_GL_SCOPE GlConvexGraphHull {
50 public:
51 
52  /**
53  * @brief ...
54  *
55  * @param parent ...
56  * @param name ...
57  * @param fcolor The color used to fill the hull.
58  * @param graph The graph whose elements should be inside the hull.
59  * @param layout The property used to layout the elements in the graph.
60  * @param size The property defining the graph's elements' sizes.
61  * @param rotation The property defining the graph's elements' rotation.
62  **/
63  GlConvexGraphHull(GlComposite* parent, const std::string& name, const tlp::Color &fcolor, Graph *graph, LayoutProperty *layout, SizeProperty *size, DoubleProperty *rotation);
64 
65  ~GlConvexGraphHull();
66 
67  /**
68  * Recomputes the whole Hull
69  */
70  void updateHull();
71 
72  void setVisible(bool visible);
73  bool isVisible();
74 private:
75  GlComposite* _parent;
76  std::string _name;
77  Color _fcolor;
78  GlComplexPolygon* _polygon;
79  Graph *graph;
80  LayoutProperty *layout;
81  SizeProperty *size;
82  DoubleProperty *rotation;
83  static int bezierValue;
84 };
85 }
86 
87 #endif /* GLCONVEXGRAPHHULL_H_ */
88 ///@endcond