INET Framework for OMNeT++/OMNEST
inet::visualizer::LinkCanvasVisualizerBase Class Reference

#include <LinkCanvasVisualizerBase.h>

Inheritance diagram for inet::visualizer::LinkCanvasVisualizerBase:
inet::visualizer::LinkVisualizerBase inet::visualizer::VisualizerBase inet::visualizer::DataLinkCanvasVisualizer inet::visualizer::PhysicalLinkCanvasVisualizer

Classes

class  LinkCanvasVisualization
 

Protected Member Functions

virtual void initialize (int stage) override
 
virtual void refreshDisplay () const override
 
virtual const LinkVisualizationcreateLinkVisualization (cModule *source, cModule *destination, cPacket *packet) const override
 
virtual void addLinkVisualization (std::pair< int, int > sourceAndDestination, const LinkVisualization *linkVisualization) override
 
virtual void removeLinkVisualization (const LinkVisualization *linkVisualization) override
 
virtual void setAlpha (const LinkVisualization *linkVisualization, double alpha) const override
 
virtual void refreshLinkVisualization (const LinkVisualization *linkVisualization, cPacket *packet) override
 
- Protected Member Functions inherited from inet::visualizer::VisualizerBase
virtual int numInitStages () const override
 
virtual Coord getPosition (const cModule *networkNode) const
 
virtual Coord getContactPosition (const cModule *networkNode, const Coord &fromPosition, const char *contactMode, double contactSpacing) const
 
virtual Quaternion getOrientation (const cModule *networkNode) const
 
virtual void mapChunks (const Ptr< const Chunk > &chunk, const std::function< void(const Ptr< const Chunk > &, int)> &thunk) const
 

Protected Attributes

double zIndex = NaN
 
const CanvasProjectioncanvasProjection = nullptr
 
cGroupFigure * linkGroup = nullptr
 
- Protected Attributes inherited from inet::visualizer::VisualizerBase
cModule * visualizationTargetModule = nullptr
 
cModule * visualizationSubjectModule = nullptr
 
const char * tags = nullptr
 

Additional Inherited Members

Member Function Documentation

◆ addLinkVisualization()

void inet::visualizer::LinkCanvasVisualizerBase::addLinkVisualization ( std::pair< int, int >  sourceAndDestination,
const LinkVisualization linkVisualization 
)
overrideprotectedvirtual

Reimplemented from inet::visualizer::LinkVisualizerBase.

83 {
84  LinkVisualizerBase::addLinkVisualization(sourceAndDestination, linkVisualization);
85  auto linkCanvasVisualization = static_cast<const LinkCanvasVisualization *>(linkVisualization);
86  auto figure = linkCanvasVisualization->figure;
87  lineManager->addModuleLine(linkVisualization);
88  linkGroup->addFigure(figure);
89 }

◆ createLinkVisualization()

const LinkVisualizerBase::LinkVisualization * inet::visualizer::LinkCanvasVisualizerBase::createLinkVisualization ( cModule *  source,
cModule *  destination,
cPacket *  packet 
) const
overrideprotectedvirtual

Implements inet::visualizer::LinkVisualizerBase.

Reimplemented in inet::visualizer::DataLinkCanvasVisualizer, and inet::visualizer::PhysicalLinkCanvasVisualizer.

67 {
68  auto figure = new LabeledLineFigure("link");
69  auto lineFigure = figure->getLineFigure();
70  lineFigure->setEndArrowhead(cFigure::ARROW_BARBED);
71  lineFigure->setLineWidth(lineWidth);
72  lineFigure->setLineColor(lineColor);
73  lineFigure->setLineStyle(lineStyle);
74  auto labelFigure = figure->getLabelFigure();
75  labelFigure->setFont(labelFont);
76  labelFigure->setColor(labelColor);
77  auto text = getLinkVisualizationText(packet);
78  labelFigure->setText(text.c_str());
79  return new LinkCanvasVisualization(figure, source->getId(), destination->getId());
80 }

Referenced by inet::visualizer::DataLinkCanvasVisualizer::createLinkVisualization(), and inet::visualizer::PhysicalLinkCanvasVisualizer::createLinkVisualization().

◆ initialize()

void inet::visualizer::LinkCanvasVisualizerBase::initialize ( int  stage)
overrideprotectedvirtual

Reimplemented from inet::visualizer::LinkVisualizerBase.

31 {
33  if (!hasGUI()) return;
34  if (stage == INITSTAGE_LOCAL) {
35  zIndex = par("zIndex");
36  auto canvas = visualizationTargetModule->getCanvas();
39  linkGroup = new cGroupFigure("links");
40  linkGroup->setZIndex(zIndex);
41  canvas->addFigure(linkGroup);
42  }
43 }

◆ refreshDisplay()

void inet::visualizer::LinkCanvasVisualizerBase::refreshDisplay ( ) const
overrideprotectedvirtual

Reimplemented from inet::visualizer::LinkVisualizerBase.

46 {
48  auto simulation = getSimulation();
49  for (auto it : linkVisualizations) {
50  auto linkVisualization = it.second;
51  auto linkCanvasVisualization = static_cast<const LinkCanvasVisualization *>(linkVisualization);
52  auto figure = linkCanvasVisualization->figure;
53  auto sourceModule = simulation->getModule(linkVisualization->sourceModuleId);
54  auto destinationModule = simulation->getModule(linkVisualization->destinationModuleId);
55  if (sourceModule != nullptr && destinationModule != nullptr) {
56  auto sourcePosition = getContactPosition(sourceModule, getPosition(destinationModule), lineContactMode, lineContactSpacing);
57  auto destinationPosition = getContactPosition(destinationModule, getPosition(sourceModule), lineContactMode, lineContactSpacing);
58  auto shift = lineManager->getLineShift(linkVisualization->sourceModuleId, linkVisualization->destinationModuleId, sourcePosition, destinationPosition, lineShiftMode, linkVisualization->shiftOffset) * lineShift;
59  figure->setStart(canvasProjection->computeCanvasPoint(sourcePosition + shift));
60  figure->setEnd(canvasProjection->computeCanvasPoint(destinationPosition + shift));
61  }
62  }
63  visualizationTargetModule->getCanvas()->setAnimationSpeed(linkVisualizations.empty() ? 0 : fadeOutAnimationSpeed, this);
64 }

◆ refreshLinkVisualization()

void inet::visualizer::LinkCanvasVisualizerBase::refreshLinkVisualization ( const LinkVisualization linkVisualization,
cPacket *  packet 
)
overrideprotectedvirtual

Reimplemented from inet::visualizer::LinkVisualizerBase.

107 {
108  LinkVisualizerBase::refreshLinkVisualization(linkVisualization, packet);
109  auto linkCanvasVisualization = static_cast<const LinkCanvasVisualization *>(linkVisualization);
110  auto text = getLinkVisualizationText(packet);
111  linkCanvasVisualization->figure->getLabelFigure()->setText(text.c_str());
112 }

◆ removeLinkVisualization()

void inet::visualizer::LinkCanvasVisualizerBase::removeLinkVisualization ( const LinkVisualization linkVisualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::LinkVisualizerBase.

92 {
94  auto linkCanvasVisualization = static_cast<const LinkCanvasVisualization *>(linkVisualization);
95  lineManager->removeModuleLine(linkVisualization);
96  linkGroup->removeFigure(linkCanvasVisualization->figure);
97 }

◆ setAlpha()

void inet::visualizer::LinkCanvasVisualizerBase::setAlpha ( const LinkVisualization linkVisualization,
double  alpha 
) const
overrideprotectedvirtual

Implements inet::visualizer::LinkVisualizerBase.

100 {
101  auto linkCanvasVisualization = static_cast<const LinkCanvasVisualization *>(linkVisualization);
102  auto figure = linkCanvasVisualization->figure;
103  figure->getLineFigure()->setLineOpacity(alpha);
104 }

Member Data Documentation

◆ canvasProjection

const CanvasProjection* inet::visualizer::LinkCanvasVisualizerBase::canvasProjection = nullptr
protected

Referenced by initialize(), and refreshDisplay().

◆ linkGroup

cGroupFigure* inet::visualizer::LinkCanvasVisualizerBase::linkGroup = nullptr
protected

◆ zIndex

double inet::visualizer::LinkCanvasVisualizerBase::zIndex = NaN
protected

Referenced by initialize().


The documentation for this class was generated from the following files:
inet::CanvasProjection::getCanvasProjection
static CanvasProjection * getCanvasProjection(const cCanvas *canvas)
Definition: CanvasProjection.cc:53
inet::visualizer::VisualizerBase::visualizationTargetModule
cModule * visualizationTargetModule
Definition: VisualizerBase.h:25
inet::visualizer::LineManager::getLineShift
Coord getLineShift(int sourceModuleId, int destinationModuleId, const Coord &sourcePosition, const Coord &destinationPosition, const char *shiftMode, int shiftOffset)
Definition: LineManager.cc:105
inet::visualizer::LineManager::getCanvasLineManager
static LineManager * getCanvasLineManager(const cCanvas *canvas)
Definition: LineManager.cc:19
inet::visualizer::VisualizerBase::getContactPosition
virtual Coord getContactPosition(const cModule *networkNode, const Coord &fromPosition, const char *contactMode, double contactSpacing) const
Definition: VisualizerBase.cc:51
inet::visualizer::VisualizerBase::getPosition
virtual Coord getPosition(const cModule *networkNode) const
Definition: VisualizerBase.cc:39
inet::CanvasProjection::computeCanvasPoint
cFigure::Point computeCanvasPoint(const Coord &point) const
Definition: CanvasProjection.cc:34
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
inet::units::constants::alpha
const value< double, units::unit > alpha(7.2973525376e-3)
inet::visualizer::LineManager::removeModuleLine
void removeModuleLine(const ModuleLine *moduleLine)
Definition: LineManager.cc:75
inet::visualizer::LineManager::addModuleLine
void addModuleLine(const ModuleLine *moduleLine)
Definition: LineManager.cc:67