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

#include <LinkBreakCanvasVisualizer.h>

Inheritance diagram for inet::visualizer::LinkBreakCanvasVisualizer:
inet::visualizer::LinkBreakVisualizerBase inet::visualizer::VisualizerBase

Classes

class  LinkBreakCanvasVisualization
 

Protected Member Functions

virtual void initialize (int stage) override
 
virtual void refreshDisplay () const override
 
virtual const LinkBreakVisualizationcreateLinkBreakVisualization (cModule *transmitter, cModule *receiver) const override
 
virtual void addLinkBreakVisualization (const LinkBreakVisualization *linkBreakVisualization) override
 
virtual void removeLinkBreakVisualization (const LinkBreakVisualization *linkBreakVisualization) override
 
virtual void setAlpha (const LinkBreakVisualization *linkBreakVisualization, double alpha) const 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 * linkBreakGroup = nullptr
 
- Protected Attributes inherited from inet::visualizer::VisualizerBase
cModule * visualizationTargetModule = nullptr
 
cModule * visualizationSubjectModule = nullptr
 
const char * tags = nullptr
 

Additional Inherited Members

Member Function Documentation

◆ addLinkBreakVisualization()

void inet::visualizer::LinkBreakCanvasVisualizer::addLinkBreakVisualization ( const LinkBreakVisualization linkBreakVisualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::LinkBreakVisualizerBase.

69 {
71  auto linkBreakCanvasVisualization = static_cast<const LinkBreakCanvasVisualization *>(linkBreakVisualization);
72  linkBreakGroup->addFigure(linkBreakCanvasVisualization->figure);
73 }

◆ createLinkBreakVisualization()

const LinkBreakVisualizerBase::LinkBreakVisualization * inet::visualizer::LinkBreakCanvasVisualizer::createLinkBreakVisualization ( cModule *  transmitter,
cModule *  receiver 
) const
overrideprotectedvirtual

Implements inet::visualizer::LinkBreakVisualizerBase.

54 {
55  std::string icon(this->icon);
56  auto transmitterPosition = canvasProjection->computeCanvasPoint(getPosition(getContainingNode(transmitter)));
57  auto receiverPosition = canvasProjection->computeCanvasPoint(getPosition(getContainingNode(receiver)));
58  auto figure = new cIconFigure("linkBroken");
59  figure->setTags((std::string("link_break ") + tags).c_str());
60  figure->setTooltip("This icon represents a link break between two network nodes");
61  figure->setImageName(icon.substr(0, icon.find_first_of(".")).c_str());
62  figure->setTintAmount(iconTintAmount);
63  figure->setTintColor(iconTintColor);
64  figure->setPosition((transmitterPosition + receiverPosition) / 2);
65  return new LinkBreakCanvasVisualization(figure, transmitter->getId(), receiver->getId());
66 }

◆ initialize()

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

Reimplemented from inet::visualizer::LinkBreakVisualizerBase.

25 {
27  if (!hasGUI()) return;
28  if (stage == INITSTAGE_LOCAL) {
29  zIndex = par("zIndex");
30  auto canvas = visualizationTargetModule->getCanvas();
32  linkBreakGroup = new cGroupFigure("link breaks");
33  linkBreakGroup->setZIndex(zIndex);
34  canvas->addFigure(linkBreakGroup);
35  }
36 }

◆ refreshDisplay()

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

Reimplemented from inet::visualizer::LinkBreakVisualizerBase.

39 {
41  for (auto it : linkBreakVisualizations) {
42  auto linkBreakVisualization = static_cast<const LinkBreakCanvasVisualization *>(it.second);
43  auto transmitter = getSimulation()->getModule(linkBreakVisualization->transmitterModuleId);
44  auto receiver = getSimulation()->getModule(linkBreakVisualization->receiverModuleId);
45  auto transmitterPosition = canvasProjection->computeCanvasPoint(getPosition(getContainingNode(transmitter)));
46  auto receiverPosition = canvasProjection->computeCanvasPoint(getPosition(getContainingNode(receiver)));
47  auto figure = linkBreakVisualization->figure;
48  figure->setPosition((transmitterPosition + receiverPosition) / 2);
49  }
50  visualizationTargetModule->getCanvas()->setAnimationSpeed(linkBreakVisualizations.empty() ? 0 : fadeOutAnimationSpeed, this);
51 }

◆ removeLinkBreakVisualization()

void inet::visualizer::LinkBreakCanvasVisualizer::removeLinkBreakVisualization ( const LinkBreakVisualization linkBreakVisualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::LinkBreakVisualizerBase.

76 {
78  auto linkBreakCanvasVisualization = static_cast<const LinkBreakCanvasVisualization *>(linkBreakVisualization);
79  linkBreakGroup->removeFigure(linkBreakCanvasVisualization->figure);
80 }

◆ setAlpha()

void inet::visualizer::LinkBreakCanvasVisualizer::setAlpha ( const LinkBreakVisualization linkBreakVisualization,
double  alpha 
) const
overrideprotectedvirtual

Implements inet::visualizer::LinkBreakVisualizerBase.

83 {
84  auto linkBreakCanvasVisualization = static_cast<const LinkBreakCanvasVisualization *>(linkBreakVisualization);
85  auto figure = linkBreakCanvasVisualization->figure;
86  figure->setOpacity(alpha);
87 }

Member Data Documentation

◆ canvasProjection

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

◆ linkBreakGroup

cGroupFigure* inet::visualizer::LinkBreakCanvasVisualizer::linkBreakGroup = nullptr
protected

◆ zIndex

double inet::visualizer::LinkBreakCanvasVisualizer::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::getContainingNode
cModule * getContainingNode(const cModule *from)
Find the node containing the given module.
Definition: ModuleAccess.cc:40
inet::visualizer::VisualizerBase::visualizationTargetModule
cModule * visualizationTargetModule
Definition: VisualizerBase.h:25
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::VisualizerBase::tags
const char * tags
Definition: VisualizerBase.h:27