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

#include <GateScheduleCanvasVisualizer.h>

Inheritance diagram for inet::visualizer::GateScheduleCanvasVisualizer:
inet::visualizer::GateScheduleVisualizerBase inet::visualizer::VisualizerBase

Classes

class  GateCanvasVisualization
 

Protected Member Functions

virtual void initialize (int stage) override
 
virtual GateVisualizationcreateGateVisualization (queueing::IPacketGate *gate) const override
 
virtual void addGateVisualization (const GateVisualization *gateVisualization) override
 
virtual void removeGateVisualization (const GateVisualization *gateVisualization) override
 
virtual void refreshGateVisualization (const GateVisualization *gateVisualization) const override
 
- Protected Member Functions inherited from inet::visualizer::GateScheduleVisualizerBase
virtual void handleParameterChange (const char *name) override
 
virtual void refreshDisplay () const override
 
virtual void preDelete (cComponent *root) override
 
virtual void addGateVisualizations ()
 
virtual void removeAllGateVisualizations ()
 
virtual const char * getGateScheduleVisualizationText (cModule *module) const
 
- 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::GateScheduleVisualizerBase
bool displayGateSchedules = false
 
StringFormat stringFormat
 
GateFilter gateFilter
 
double width
 
double height
 
double spacing
 
Placement placementHint
 
double placementPriority
 
clocktime_t displayDuration
 
double currentTimePosition
 
simtime_t lastRefreshTime = -1
 
std::vector< const GateVisualization * > gateVisualizations
 
- Protected Attributes inherited from inet::visualizer::VisualizerBase
cModule * visualizationTargetModule = nullptr
 
cModule * visualizationSubjectModule = nullptr
 
const char * tags = nullptr
 

Member Function Documentation

◆ addGateVisualization()

void inet::visualizer::GateScheduleCanvasVisualizer::addGateVisualization ( const GateVisualization gateVisualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::GateScheduleVisualizerBase.

59 {
61  auto gateCanvasVisualization = static_cast<const GateCanvasVisualization *>(gateVisualization);
62  auto figure = gateCanvasVisualization->figure;
63  gateCanvasVisualization->networkNodeVisualization->addAnnotation(figure, figure->getBounds().getSize(), placementHint, placementPriority);
64 }

◆ createGateVisualization()

GateScheduleVisualizerBase::GateVisualization * inet::visualizer::GateScheduleCanvasVisualizer::createGateVisualization ( queueing::IPacketGate gate) const
overrideprotectedvirtual

Implements inet::visualizer::GateScheduleVisualizerBase.

43 {
44  auto module = check_and_cast<cModule *>(gate);
45  auto figure = new GateFigure("gate");
46  figure->setTags((std::string("gate ") + tags).c_str());
47  figure->setTooltip("This figure represents a gate");
48  figure->setAssociatedObject(module);
49  figure->setSpacing(spacing);
50  figure->setBounds(cFigure::Rectangle(0, 0, width, height));
51  figure->setPosition(currentTimePosition);
52  figure->setLabel(getGateScheduleVisualizationText(module));
53  auto networkNode = getContainingNode(module);
54  auto networkNodeVisualization = networkNodeVisualizer->getNetworkNodeVisualization(networkNode);
55  return new GateCanvasVisualization(networkNodeVisualization, figure, gate);
56 }

◆ initialize()

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

Reimplemented from inet::visualizer::GateScheduleVisualizerBase.

32 {
34  if (!hasGUI()) return;
35  if (stage == INITSTAGE_LOCAL) {
36  zIndex = par("zIndex");
37  networkNodeVisualizer.reference(this, "networkNodeVisualizerModule", true);
38  stringFormat.parseFormat(par("labelFormat"));
39  }
40 }

◆ refreshGateVisualization()

void inet::visualizer::GateScheduleCanvasVisualizer::refreshGateVisualization ( const GateVisualization gateVisualization) const
overrideprotectedvirtual

Implements inet::visualizer::GateScheduleVisualizerBase.

76 {
77  auto gateCanvasVisualization = static_cast<const GateCanvasVisualization *>(gateVisualization);
78  auto gate = check_and_cast<queueing::PeriodicGate *>(gateVisualization->gate);
79  auto figure = gateCanvasVisualization->figure;
80  auto durations = gate->getDurations();
81  bool open = gate->getInitiallyOpen();
82  clocktime_t scheduleDuration = 0;
83  for (int i = 0; i < durations->size(); i++)
84  scheduleDuration += durations->get(i).doubleValueInUnit("s");
85  if (scheduleDuration == 0)
86  figure->addSchedule(0, width, open);
87  else {
88  auto displayDuration = this->displayDuration != 0 ? this->displayDuration : scheduleDuration;
89  auto currentTime = gate->getClockTime();
90  clocktime_t schedulePosition = std::fmod((currentTime + gate->getInitialOffset()).dbl(), scheduleDuration.dbl());
91  auto scheduleDisplayStart = schedulePosition - (currentTimePosition / width) * displayDuration;
92  auto scheduleDisplayEnd = scheduleDisplayStart + displayDuration;
93  auto indexStart = (int)std::floor(scheduleDisplayStart.dbl() / scheduleDuration.dbl()) * durations->size();
94  auto indexEnd = (int)std::ceil(scheduleDisplayEnd.dbl() / scheduleDuration.dbl()) * durations->size();
95  clocktime_t displayTime = currentTime - schedulePosition + indexStart / durations->size() * scheduleDuration;
96  figure->clearSchedule();
97  for (int i = indexStart; i <= indexEnd; i++) {
98  auto duration = durations->get((i + durations->size()) % durations->size()).doubleValueInUnit("s");
99  clocktime_t startTime = displayTime - currentTime;
100  clocktime_t endTime = displayTime + duration - currentTime;
101  double factor = width / displayDuration.dbl();
102  double start = std::max(0.0, std::min(width, currentTimePosition + startTime.dbl() * factor));
103  double end = std::max(0.0, std::min(width, currentTimePosition + endTime.dbl() * factor));
104  if (start != end)
105  figure->addSchedule(start, end, open);
106  displayTime += duration;
107  open = !open;
108  }
109  }
110 }

◆ removeGateVisualization()

void inet::visualizer::GateScheduleCanvasVisualizer::removeGateVisualization ( const GateVisualization gateVisualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::GateScheduleVisualizerBase.

67 {
69  auto gateCanvasVisualization = static_cast<const GateCanvasVisualization *>(gateVisualization);
70  auto figure = gateCanvasVisualization->figure;
71  if (networkNodeVisualizer != nullptr)
72  gateCanvasVisualization->networkNodeVisualization->removeAnnotation(figure);
73 }

Member Data Documentation

◆ networkNodeVisualizer

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

◆ zIndex

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

Referenced by initialize().


The documentation for this class was generated from the following files:
inet::visualizer::GateScheduleVisualizerBase::spacing
double spacing
Definition: GateScheduleVisualizerBase.h:61
inet::StringFormat::parseFormat
void parseFormat(const char *format)
Definition: StringFormat.cc:12
inet::clocktime_t
ClockTime clocktime_t
Definition: contract/ClockTime.h:25
inet::sctp::min
double min(const double a, const double b)
Returns the minimum of a and b.
Definition: SctpAssociation.h:261
inet::getContainingNode
cModule * getContainingNode(const cModule *from)
Find the node containing the given module.
Definition: ModuleAccess.cc:40
inet::visualizer::GateScheduleCanvasVisualizer::zIndex
double zIndex
Definition: GateScheduleCanvasVisualizer.h:36
inet::visualizer::GateScheduleVisualizerBase::getGateScheduleVisualizationText
virtual const char * getGateScheduleVisualizationText(cModule *module) const
Definition: GateScheduleVisualizerBase.cc:129
inet::visualizer::GateScheduleVisualizerBase::placementPriority
double placementPriority
Definition: GateScheduleVisualizerBase.h:63
inet::visualizer::GateScheduleVisualizerBase::addGateVisualization
virtual void addGateVisualization(const GateVisualization *gateVisualization)
Definition: GateScheduleVisualizerBase.cc:101
inet::visualizer::GateScheduleVisualizerBase::stringFormat
StringFormat stringFormat
Definition: GateScheduleVisualizerBase.h:57
inet::visualizer::GateScheduleVisualizerBase::width
double width
Definition: GateScheduleVisualizerBase.h:59
inet::visualizer::GateScheduleVisualizerBase::removeGateVisualization
virtual void removeGateVisualization(const GateVisualization *gateVisualization)
Definition: GateScheduleVisualizerBase.cc:106
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
inet::sctp::max
double max(const double a, const double b)
Returns the maximum of a and b.
Definition: SctpAssociation.h:266
inet::ClockTime::dbl
double dbl() const
Converts simulation time (in seconds) to a double.
Definition: common/ClockTime.h:205
inet::visualizer::GateScheduleVisualizerBase::displayDuration
clocktime_t displayDuration
Definition: GateScheduleVisualizerBase.h:64
inet::visualizer::GateScheduleVisualizerBase::height
double height
Definition: GateScheduleVisualizerBase.h:60
inet::visualizer::GateScheduleVisualizerBase::currentTimePosition
double currentTimePosition
Definition: GateScheduleVisualizerBase.h:65
inet::visualizer::VisualizerBase::tags
const char * tags
Definition: VisualizerBase.h:27
inet::visualizer::GateScheduleCanvasVisualizer::networkNodeVisualizer
ModuleRefByPar< NetworkNodeCanvasVisualizer > networkNodeVisualizer
Definition: GateScheduleCanvasVisualizer.h:37
inet::visualizer::GateScheduleVisualizerBase::initialize
virtual void initialize(int stage) override
Definition: GateScheduleVisualizerBase.cc:60
inet::visualizer::GateScheduleVisualizerBase::placementHint
Placement placementHint
Definition: GateScheduleVisualizerBase.h:62