43 HULL_POINTS_FROM_CSO_LIST
69 struct LabelBoundingBox
106 void computeDeviceConvexHullOfAllCSOs(
const std::vector<CSODrawCSOInfos>&
drawCSOInfos,
107 boost::geometry::model::polygon < Point2D >&
convexHull);
108 void computeCSODevicePositions(
const std::vector<CSODrawCSOInfos>&
drawCSOInfos,
110 bool seedPointIsInSlicePlane(CSO* cso,
int index,
const CSODrawView2DInfos& view2DInfos)
const;
113 boost::geometry::model::polygon<Point2D>&
convexHull)
const;
116 static float computeMaxDistanceOfConvexHullFromCentroid(
const boost::geometry::model::polygon < Point2D >&
convexHull,
const Point2D&
centroidOfHull);
118 static void computeLabelSlotPositions(
const boost::geometry::model::polygon < Point2D >&
convexHull,
const Point2D&
centroidOfHull,
121 std::vector < std::pair < int, int> > computeNearestCSOForLabelPositionSlot(
const std::vector <Point2D>&
labelSlotPositions,
const std::vector<unsigned int>& csoIds);
125 void setLabelPositionsForCSOs(
const std::vector< std::pair< int, int > >&
csoToSlotMapping,
126 const std::vector<unsigned int>& csoIds,
130 static SbVec2f getLabelBoxForCSO(
const std::map < int, SbVec2f >&
labelBoxes,
int csoId);
132 void avoidLabelOverlap(
const std::map < int, SbVec2f >&
labelBoxes);
138 std::map <unsigned int, Point2D> _labelPositions;
139 std::map <unsigned int, std::vector<Point2D> > _csoDevicePositions;
142 Point2D _centroidOfConvexHull;
void layoutVisibleCSOs(const std::vector< CSODrawCSOInfos > &drawCSOInfos, const std::map< int, SbVec2f > &labelBoxes, const CSODrawView2DInfos &view2DInfos, SoCSOLabelRenderer *labelRenderer) override
void getAttachedLabelPosition(const CSODrawCSOInfos &csoInfos, const CSODrawView2DInfos &view2DInfos, int labelWidth, int labelHeight, float &deviceX, float &deviceY) override
Fills up the device position for an attached label.