INET Framework for OMNeT++/OMNEST
inet::LabeledPolylineFigure Class Reference

#include <LabeledPolylineFigure.h>

Inheritance diagram for inet::LabeledPolylineFigure:

Public Member Functions

 LabeledPolylineFigure (const char *name=nullptr)
 
cPolylineFigure * getPolylineFigure () const
 
cTextFigure * getLabelFigure () const
 
void setPoints (const std::vector< cFigure::Point > &points)
 

Protected Member Functions

void updateLabelPosition ()
 

Protected Attributes

cPolylineFigure * polylineFigure
 
cPanelFigure * panelFigure
 
cTextFigure * labelFigure
 

Constructor & Destructor Documentation

◆ LabeledPolylineFigure()

inet::LabeledPolylineFigure::LabeledPolylineFigure ( const char *  name = nullptr)
12  :
13  cGroupFigure(name)
14 {
15  polylineFigure = new cPolylineFigure("line");
16  panelFigure = new cPanelFigure("panel");
17  addFigure(polylineFigure);
18  addFigure(panelFigure);
19  labelFigure = new cTextFigure("label");
20  labelFigure->setAnchor(cFigure::ANCHOR_S);
21  labelFigure->setTags("label");
22  labelFigure->setHalo(true);
23  panelFigure->addFigure(labelFigure);
24 }

Member Function Documentation

◆ getLabelFigure()

cTextFigure* inet::LabeledPolylineFigure::getLabelFigure ( ) const
inline
29 { return labelFigure; }

◆ getPolylineFigure()

cPolylineFigure* inet::LabeledPolylineFigure::getPolylineFigure ( ) const
inline

◆ setPoints()

void inet::LabeledPolylineFigure::setPoints ( const std::vector< cFigure::Point > &  points)
27 {
28  polylineFigure->setPoints(points);
30 }

◆ updateLabelPosition()

void inet::LabeledPolylineFigure::updateLabelPosition ( )
protected
33 {
34  auto points = polylineFigure->getPoints();
35  int index = (points.size() - 1) / 2;
36  auto position = (points[index] + points[index + 1]) / 2;
37  auto direction = points[index + 1] - points[index];
38  double alpha = atan2(-direction.y, direction.x);
39  if (alpha > M_PI / 2 || alpha < -M_PI / 2)
40  alpha += M_PI;
41  panelFigure->setTransform(cFigure::Transform().rotate(-alpha));
42  panelFigure->setPosition(position);
43  labelFigure->setPosition(cFigure::Point(0, -polylineFigure->getLineWidth() / 2));
44 }

Referenced by setPoints().

Member Data Documentation

◆ labelFigure

cTextFigure* inet::LabeledPolylineFigure::labelFigure
protected

◆ panelFigure

cPanelFigure* inet::LabeledPolylineFigure::panelFigure
protected

◆ polylineFigure

cPolylineFigure* inet::LabeledPolylineFigure::polylineFigure
protected

The documentation for this class was generated from the following files:
inet::LabeledPolylineFigure::updateLabelPosition
void updateLabelPosition()
Definition: LabeledPolylineFigure.cc:32
inet::LabeledPolylineFigure::labelFigure
cTextFigure * labelFigure
Definition: LabeledPolylineFigure.h:20
inet::LabeledPolylineFigure::polylineFigure
cPolylineFigure * polylineFigure
Definition: LabeledPolylineFigure.h:18
inet::LabeledPolylineFigure::panelFigure
cPanelFigure * panelFigure
Definition: LabeledPolylineFigure.h:19
inet::units::constants::alpha
const value< double, units::unit > alpha(7.2973525376e-3)
M_PI
#define M_PI
Definition: INETMath.h:52