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

#include <StatisticCanvasVisualizer.h>

Inheritance diagram for inet::visualizer::StatisticCanvasVisualizer:
inet::visualizer::StatisticVisualizerBase inet::visualizer::VisualizerBase

Classes

class  StatisticCanvasVisualization
 

Protected Member Functions

virtual void initialize (int stage) override
 
virtual StatisticVisualizationcreateStatisticVisualization (cComponent *source, simsignal_t signal) override
 
virtual void addStatisticVisualization (const StatisticVisualization *statisticVisualization) override
 
virtual void removeStatisticVisualization (const StatisticVisualization *statisticVisualization) override
 
virtual void refreshStatisticVisualization (const StatisticVisualization *statisticVisualization) override
 
- Protected Member Functions inherited from inet::visualizer::StatisticVisualizerBase
virtual void handleParameterChange (const char *name) override
 
virtual void preDelete (cComponent *root) override
 
virtual void subscribe ()
 
virtual void unsubscribe ()
 
virtual void addResultRecorder (cComponent *source, simsignal_t signal)
 
virtual LastValueRecordergetResultRecorder (cComponent *source, simsignal_t signal)
 
virtual LastValueRecorderfindResultRecorder (cResultListener *resultListener)
 
virtual std::string getText (const StatisticVisualization *statisticVisualization)
 
virtual const char * getUnit (cComponent *source)
 
virtual std::string getRecordingMode ()
 
virtual const StatisticVisualizationgetStatisticVisualization (cComponent *source, simsignal_t signal)
 
virtual void removeAllStatisticVisualizations ()
 
virtual void processSignal (cComponent *source, simsignal_t signal, std::function< void(cIListener *)> receiveSignal)
 
- 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
 
ModuleRefByPar< NetworkNodeCanvasVisualizernetworkNodeVisualizer
 
- Protected Attributes inherited from inet::visualizer::StatisticVisualizerBase
bool displayStatistics = false
 
ModuleFilter sourceFilter
 
const char * signalName = nullptr
 
const char * statisticName = nullptr
 
const char * statisticUnit = nullptr
 
const char * statisticExpression = nullptr
 
StringFormat format
 
std::vector< std::string > units
 
cFigure::Font font
 
cFigure::Color textColor
 
cFigure::Color backgroundColor
 
double opacity = NaN
 
Placement placementHint
 
double placementPriority
 
std::map< std::pair< int, simsignal_t >, const StatisticVisualization * > statisticVisualizations
 
- Protected Attributes inherited from inet::visualizer::VisualizerBase
cModule * visualizationTargetModule = nullptr
 
cModule * visualizationSubjectModule = nullptr
 
const char * tags = nullptr
 

Additional Inherited Members

- Public Member Functions inherited from inet::visualizer::StatisticVisualizerBase
virtual void receiveSignal (cComponent *source, simsignal_t signal, bool b, cObject *details) override
 
virtual void receiveSignal (cComponent *source, simsignal_t signal, intval_t l, cObject *details) override
 
virtual void receiveSignal (cComponent *source, simsignal_t signal, uintval_t l, cObject *details) override
 
virtual void receiveSignal (cComponent *source, simsignal_t signal, double d, cObject *details) override
 
virtual void receiveSignal (cComponent *source, simsignal_t signal, const SimTime &t, cObject *details) override
 
virtual void receiveSignal (cComponent *source, simsignal_t signal, const char *s, cObject *details) override
 
virtual void receiveSignal (cComponent *source, simsignal_t signal, cObject *obj, cObject *details) override
 

Member Function Documentation

◆ addStatisticVisualization()

void inet::visualizer::StatisticCanvasVisualizer::addStatisticVisualization ( const StatisticVisualization statisticVisualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::StatisticVisualizerBase.

82 {
84  auto statisticCanvasVisualization = static_cast<const StatisticCanvasVisualization *>(statisticVisualization);
85  auto figure = statisticCanvasVisualization->figure;
86  if (auto indicatorFigure = dynamic_cast<IIndicatorFigure *>(figure))
87  statisticCanvasVisualization->networkNodeVisualization->addAnnotation(statisticCanvasVisualization->figure, indicatorFigure->getSize(), placementHint, placementPriority);
88  else if (auto boxedLabelFigure = check_and_cast<BoxedLabelFigure *>(figure))
89  statisticCanvasVisualization->networkNodeVisualization->addAnnotation(statisticCanvasVisualization->figure, boxedLabelFigure->getBounds().getSize(), placementHint, placementPriority);
90 }

◆ createStatisticVisualization()

StatisticVisualizerBase::StatisticVisualization * inet::visualizer::StatisticCanvasVisualizer::createStatisticVisualization ( cComponent *  source,
simsignal_t  signal 
)
overrideprotectedvirtual

Implements inet::visualizer::StatisticVisualizerBase.

38 {
39  cFigure *figure = nullptr;
40  const char *propertyName = par("propertyName");
41  const char *propertyIndex = par("propertyIndex");
42  if (!strcmp(propertyName, "")) {
43  auto boxedLabelFigure = new BoxedLabelFigure("statistic");
44  boxedLabelFigure->setFont(font);
45  boxedLabelFigure->setText("");
46  boxedLabelFigure->setLabelColor(textColor);
47  boxedLabelFigure->setBackgroundColor(backgroundColor);
48  boxedLabelFigure->setOpacity(opacity);
49  figure = boxedLabelFigure;
50  figure->setTooltip("This label represents the current value of a statistic");
51  }
52  else {
53  cProperty *property = nullptr;
54  cModule *current = this;
55  while (current != nullptr) {
56  property = current->getProperties()->get(propertyName, strcmp(propertyIndex, "") ? propertyIndex : nullptr);
57  if (property != nullptr)
58  break;
59  current = current->getParentModule();
60  }
61  if (property == nullptr)
62  throw cRuntimeError("Cannot find property: @%s[%s] on the module path: %s", propertyName, propertyIndex, getFullPath().c_str());
63  std::string classname = property->getValue("type");
64  classname[0] = toupper(classname[0]);
65  classname = "inet::" + classname + "Figure";
66  figure = check_and_cast<cFigure *>(createOneIfClassIsKnown(classname.c_str()));
67  if (figure == nullptr)
68  throw cRuntimeError("Cannot create figure with type: %s", property->getValue("type"));
69  figure->parse(property);
70  figure->setName("statistic");
71  figure->setTooltip("This figure represents the value of a statistic");
72  }
73  figure->setTags((std::string("statistic ") + tags).c_str());
74  figure->setAssociatedObject(source);
75  figure->setZIndex(zIndex);
76  auto networkNode = getContainingNode(check_and_cast<cModule *>(source));
77  auto networkNodeVisualization = networkNodeVisualizer->getNetworkNodeVisualization(networkNode);
78  return new StatisticCanvasVisualization(networkNodeVisualization, figure, source->getId(), signal, getUnit(source));
79 }

◆ initialize()

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

Reimplemented from inet::visualizer::StatisticVisualizerBase.

28 {
30  if (!hasGUI()) return;
31  if (stage == INITSTAGE_LOCAL) {
32  zIndex = par("zIndex");
33  networkNodeVisualizer.reference(this, "networkNodeVisualizerModule", true);
34  }
35 }

◆ refreshStatisticVisualization()

void inet::visualizer::StatisticCanvasVisualizer::refreshStatisticVisualization ( const StatisticVisualization statisticVisualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::StatisticVisualizerBase.

101 {
103  auto statisticCanvasVisualization = static_cast<const StatisticCanvasVisualization *>(statisticVisualization);
104  auto figure = statisticCanvasVisualization->figure;
105  if (auto indicatorFigure = dynamic_cast<IIndicatorFigure *>(figure))
106  indicatorFigure->setValue(0, simTime(), statisticVisualization->recorder->getLastValue());
107  else {
108  auto boxedLabelFigure = check_and_cast<BoxedLabelFigure *>(figure);
109  boxedLabelFigure->setText(getText(statisticVisualization).c_str());
110  statisticCanvasVisualization->networkNodeVisualization->setAnnotationSize(figure, boxedLabelFigure->getBounds().getSize());
111  }
112 }

◆ removeStatisticVisualization()

void inet::visualizer::StatisticCanvasVisualizer::removeStatisticVisualization ( const StatisticVisualization statisticVisualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::StatisticVisualizerBase.

93 {
95  auto statisticCanvasVisualization = static_cast<const StatisticCanvasVisualization *>(statisticVisualization);
96  if (networkNodeVisualizer != nullptr)
97  statisticCanvasVisualization->networkNodeVisualization->removeAnnotation(statisticCanvasVisualization->figure);
98 }

Member Data Documentation

◆ networkNodeVisualizer

ModuleRefByPar<NetworkNodeCanvasVisualizer> inet::visualizer::StatisticCanvasVisualizer::networkNodeVisualizer
protected

◆ zIndex

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

The documentation for this class was generated from the following files:
inet::visualizer::StatisticVisualizerBase::backgroundColor
cFigure::Color backgroundColor
Definition: StatisticVisualizerBase.h:74
inet::visualizer::StatisticVisualizerBase::opacity
double opacity
Definition: StatisticVisualizerBase.h:75
inet::visualizer::StatisticCanvasVisualizer::zIndex
double zIndex
Definition: StatisticCanvasVisualizer.h:33
inet::utils::createOneIfClassIsKnown
cObject * createOneIfClassIsKnown(const char *className, const char *defaultNamespace)
Like cObjectFactory::createOneIfClassIsKnown(), except it starts searching for the class in the given...
Definition: INETUtils.cc:131
inet::getContainingNode
cModule * getContainingNode(const cModule *from)
Find the node containing the given module.
Definition: ModuleAccess.cc:40
inet::visualizer::StatisticVisualizerBase::font
cFigure::Font font
Definition: StatisticVisualizerBase.h:72
inet::visualizer::StatisticCanvasVisualizer::networkNodeVisualizer
ModuleRefByPar< NetworkNodeCanvasVisualizer > networkNodeVisualizer
Definition: StatisticCanvasVisualizer.h:34
inet::visualizer::StatisticVisualizerBase::placementPriority
double placementPriority
Definition: StatisticVisualizerBase.h:77
inet::visualizer::StatisticVisualizerBase::getUnit
virtual const char * getUnit(cComponent *source)
Definition: StatisticVisualizerBase.cc:164
inet::visualizer::StatisticVisualizerBase::getText
virtual std::string getText(const StatisticVisualization *statisticVisualization)
Definition: StatisticVisualizerBase.cc:158
inet::visualizer::StatisticVisualizerBase::removeStatisticVisualization
virtual void removeStatisticVisualization(const StatisticVisualization *statisticVisualization)
Definition: StatisticVisualizerBase.cc:199
inet::visualizer::StatisticVisualizerBase::textColor
cFigure::Color textColor
Definition: StatisticVisualizerBase.h:73
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
inet::visualizer::StatisticVisualizerBase::refreshStatisticVisualization
virtual void refreshStatisticVisualization(const StatisticVisualization *statisticVisualization)
Definition: StatisticVisualizerBase.cc:234
inet::visualizer::VisualizerBase::tags
const char * tags
Definition: VisualizerBase.h:27
inet::visualizer::StatisticVisualizerBase::addStatisticVisualization
virtual void addStatisticVisualization(const StatisticVisualization *statisticVisualization)
Definition: StatisticVisualizerBase.cc:193
inet::visualizer::StatisticVisualizerBase::placementHint
Placement placementHint
Definition: StatisticVisualizerBase.h:76
inet::visualizer::StatisticVisualizerBase::initialize
virtual void initialize(int stage) override
Definition: StatisticVisualizerBase.cc:62