20 #ifndef TULIP_LAYOUT_H
21 #define TULIP_LAYOUT_H
23 #include <tulip/PropertyTypes.h>
24 #include <tulip/Observable.h>
25 #include <tulip/AbstractProperty.h>
26 #include <tulip/PropertyAlgorithm.h>
27 #include <tulip/minmaxproperty.h>
33 tlp::edge e,
const tlp::LineType::RealType &newValue);
36 const std::pair<tlp::Coord, tlp::Coord> &
39 class PropertyContext;
42 typedef AbstractProperty<tlp::PointType, tlp::LineType> AbstractLayoutProperty;
43 typedef MinMaxProperty<tlp::PointType, tlp::LineType> LayoutMinMaxProperty;
56 static const std::string propertyTypename;
58 return propertyTypename;
60 DEFINE_GET_CPP_CLASS_NAME;
72 Coord getMax(
const Graph *subgraph =
nullptr);
80 Coord getMin(
const Graph *subgraph =
nullptr);
92 void translate(
const Vec3f &move,
const Graph *subgraph =
nullptr);
112 void scale(
const Vec3f &scaleFactors,
const Graph *subgraph =
nullptr);
132 void rotateX(
const double &alpha,
const Graph *subgraph =
nullptr);
140 void rotateY(
const double &alpha,
const Graph *subgraph =
nullptr);
148 void rotateZ(
const double &alpha,
const Graph *subgraph =
nullptr);
192 void center(
const Graph *subgraph =
nullptr);
201 void center(
const Vec3f &newCenter,
const Graph *subgraph =
nullptr);
209 void normalize(
const Graph *subgraph =
nullptr);
215 void perfectAspectRatio(
const Graph *subgraph =
nullptr);
230 double edgeLength(
const edge e)
const;
237 double averageEdgeLength(
const Graph *subgraph =
nullptr)
const;
246 double averageAngularResolution(
const Graph *subgraph =
nullptr)
const;
257 double averageAngularResolution(
const node n,
const Graph *subgraph =
nullptr)
const;
268 std::vector<double> angularResolutions(
const node n,
const Graph *subgraph =
nullptr)
const;
277 void computeEmbedding(
Graph *subgraph =
nullptr);
287 void computeEmbedding(
const node n,
Graph *subgraph =
nullptr);
296 void setNodeValue(
const node,
297 tlp::StoredType<tlp::PointType::RealType>::ReturnedConstValue v)
override;
298 void setAllNodeValue(tlp::StoredType<tlp::PointType::RealType>::ReturnedConstValue v)
override;
299 void setValueToGraphNodes(tlp::StoredType<tlp::PointType::RealType>::ReturnedConstValue v,
300 const Graph *graph)
override;
301 void setEdgeValue(
const edge,
302 tlp::StoredType<tlp::LineType::RealType>::ReturnedConstValue v)
override;
303 void setAllEdgeValue(tlp::StoredType<tlp::LineType::RealType>::ReturnedConstValue v)
override;
304 void setValueToGraphEdges(tlp::StoredType<tlp::LineType::RealType>::ReturnedConstValue v,
305 const Graph *graph)
override;
311 void resetBoundingBox();
314 void treatEvent(
const Event &)
override;
318 unsigned int nbBendedEdges;
326 :
public AbstractVectorProperty<tlp::CoordVectorType, tlp::PointType> {
329 : AbstractVectorProperty<CoordVectorType, tlp::PointType>(g, n) {}
332 static const std::string propertyTypename;
334 return propertyTypename;
336 DEFINE_GET_CPP_CLASS_NAME;
339 typedef CoordVectorProperty LayoutVectorProperty;