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.