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

#include <SignalFigure.h>

Inheritance diagram for inet::SignalFigure:

Public Member Functions

 SignalFigure (const char *name=nullptr)
 
void setColor (const cFigure::Color &color)
 
void setOpacity (double opacity)
 
void setBounds (const cFigure::Rectangle &bounds)
 
void setInnerRx (double innerRx)
 
void setInnerRy (double innerRy)
 
int getRingCount () const
 
void setRingCount (int count)
 
double getRingSize () const
 
void setRingSize (double ringSize)
 
double getFadingDistance () const
 
void setFadingDistance (double fadingDistance)
 
double getFadingFactor () const
 
void setFadingFactor (double fadingFactor)
 
int getWaveCount () const
 
void setWaveCount (int count)
 
double getWaveLength () const
 
void setWaveLength (double waveLength)
 
double getWaveWidth () const
 
void setWaveWidth (double waveWidth)
 
double getWaveOffset () const
 
void setWaveOffset (double waveOffset)
 
double getWaveOpacityFactor () const
 
void setWaveOpacityFactor (double waveOpacityFactor)
 
void refresh ()
 

Protected Attributes

double opacity = NaN
 
double ringSize = NaN
 
double fadingDistance = NaN
 
double fadingFactor = NaN
 
double waveLength = NaN
 
double waveWidth = NaN
 
double waveOffset = NaN
 
double waveOpacityFactor = NaN
 
std::vector< cRingFigure * > rings
 
std::vector< cOvalFigure * > waves
 
Rectangle bounds
 
double innerRx = NaN
 
double innerRy = NaN
 

Constructor & Destructor Documentation

◆ SignalFigure()

inet::SignalFigure::SignalFigure ( const char *  name = nullptr)
12  :
13  cGroupFigure(name)
14 {
15 }

Member Function Documentation

◆ getFadingDistance()

double inet::SignalFigure::getFadingDistance ( ) const
inline
48 { return fadingDistance; }

◆ getFadingFactor()

double inet::SignalFigure::getFadingFactor ( ) const
inline
51 { return fadingFactor; }

◆ getRingCount()

int inet::SignalFigure::getRingCount ( ) const
inline
42 { return rings.size(); }

◆ getRingSize()

double inet::SignalFigure::getRingSize ( ) const
inline
45 { return ringSize; }

◆ getWaveCount()

int inet::SignalFigure::getWaveCount ( ) const
inline
54 { return waves.size(); }

◆ getWaveLength()

double inet::SignalFigure::getWaveLength ( ) const
inline
57 { return waveLength; }

◆ getWaveOffset()

double inet::SignalFigure::getWaveOffset ( ) const
inline
63 { return waveOffset; }

◆ getWaveOpacityFactor()

double inet::SignalFigure::getWaveOpacityFactor ( ) const
inline
66 { return waveOpacityFactor; }

◆ getWaveWidth()

double inet::SignalFigure::getWaveWidth ( ) const
inline
60 { return waveWidth; }

◆ refresh()

void inet::SignalFigure::refresh ( )
48 {
49  auto center = bounds.getCenter();
50  auto size = bounds.getSize() / 2;
51  for (size_t i = 0; i < rings.size(); i++) {
52  auto ring = rings[i];
53  bool isLast = i == rings.size() - 1;
54  double minR = i * ringSize;
55  double maxRx = isLast ? DBL_MAX : minR + ringSize;
56  double maxRy = isLast ? DBL_MAX : minR + ringSize;
57  double innerRx = std::max(minR, std::min(maxRx, this->innerRx));
58  double innerRy = std::max(minR, std::min(maxRy, this->innerRy));
59  ring->setInnerRx(innerRx);
60  ring->setInnerRy(innerRy);
61  double outerRx = isLast ? size.x : std::min(size.x, maxRx);
62  double outerRy = isLast ? size.y : std::min(size.y, maxRy);
63  ring->setBounds(cFigure::Rectangle(center.x - outerRx, center.y - outerRy, 2 * outerRx, 2 * outerRy));
64  ring->setVisible(innerRx < outerRx && innerRy < outerRy);
65  }
66  for (size_t i = 0; i < waves.size(); i++) {
67  auto wave = waves[i];
68  bool isLast = i == waves.size() - 1;
69  double radius = waveOffset + i * waveLength;
70  double outerRx = isLast ? size.x : std::min(size.x, radius);
71  double outerRy = isLast ? size.y : std::min(size.y, radius);
72  wave->setLineWidth(waveWidth);
73  wave->setBounds(cFigure::Rectangle(center.x - outerRx, center.y - outerRy, 2 * outerRx, 2 * outerRy));
74  wave->setVisible(innerRx < radius && innerRy < radius && radius < size.x && radius < size.y);
75  }
76  for (size_t i = 0; i < rings.size(); i++)
77  rings[i]->setFillOpacity(opacity / pow(fadingFactor, i * ringSize / fadingDistance));
78  for (size_t i = 0; i < waves.size(); i++)
79  waves[i]->setLineOpacity(waveOpacityFactor * opacity / pow(fadingFactor, i * waveLength / fadingDistance));
80 }

◆ setBounds()

void inet::SignalFigure::setBounds ( const cFigure::Rectangle &  bounds)
inline
38 { this->bounds = bounds; }

◆ setColor()

void inet::SignalFigure::setColor ( const cFigure::Color &  color)
18 {
19  for (auto ring : rings)
20  ring->setFillColor(color);
21  for (auto wave : waves)
22  wave->setLineColor(color);
23 }

◆ setFadingDistance()

void inet::SignalFigure::setFadingDistance ( double  fadingDistance)
inline
49 { this->fadingDistance = fadingDistance; }

◆ setFadingFactor()

void inet::SignalFigure::setFadingFactor ( double  fadingFactor)
inline
52 { this->fadingFactor = fadingFactor; }

◆ setInnerRx()

void inet::SignalFigure::setInnerRx ( double  innerRx)
inline
39 { this->innerRx = innerRx; }

◆ setInnerRy()

void inet::SignalFigure::setInnerRy ( double  innerRy)
inline
40 { this->innerRy = innerRy; }

◆ setOpacity()

void inet::SignalFigure::setOpacity ( double  opacity)
inline
37 { this->opacity = opacity; }

◆ setRingCount()

void inet::SignalFigure::setRingCount ( int  count)
26 {
27  for (int i = 0; i < count; i++) {
28  auto ring = new cRingFigure("wave power");
29  ring->setFilled(true);
30  ring->setOutlined(false);
31  rings.push_back(ring);
32  addFigure(ring);
33  }
34 }

◆ setRingSize()

void inet::SignalFigure::setRingSize ( double  ringSize)
inline
46 { this->ringSize = ringSize; }

◆ setWaveCount()

void inet::SignalFigure::setWaveCount ( int  count)
37 {
38  for (int i = 0; i < count; i++) {
39  auto wave = new cOvalFigure("wave crest");
40  wave->setFilled(false);
41  wave->setOutlined(true);
42  waves.push_back(wave);
43  addFigure(wave);
44  }
45 }

◆ setWaveLength()

void inet::SignalFigure::setWaveLength ( double  waveLength)
inline
58 { this->waveLength = waveLength; }

◆ setWaveOffset()

void inet::SignalFigure::setWaveOffset ( double  waveOffset)
inline
64 { this->waveOffset = waveOffset; }

◆ setWaveOpacityFactor()

void inet::SignalFigure::setWaveOpacityFactor ( double  waveOpacityFactor)
inline

◆ setWaveWidth()

void inet::SignalFigure::setWaveWidth ( double  waveWidth)
inline
61 { this->waveWidth = waveWidth; }

Member Data Documentation

◆ bounds

Rectangle inet::SignalFigure::bounds
protected

Referenced by refresh().

◆ fadingDistance

double inet::SignalFigure::fadingDistance = NaN
protected

Referenced by refresh().

◆ fadingFactor

double inet::SignalFigure::fadingFactor = NaN
protected

Referenced by refresh().

◆ innerRx

double inet::SignalFigure::innerRx = NaN
protected

Referenced by refresh().

◆ innerRy

double inet::SignalFigure::innerRy = NaN
protected

Referenced by refresh().

◆ opacity

double inet::SignalFigure::opacity = NaN
protected

Referenced by refresh().

◆ rings

std::vector<cRingFigure *> inet::SignalFigure::rings
protected

Referenced by refresh(), setColor(), and setRingCount().

◆ ringSize

double inet::SignalFigure::ringSize = NaN
protected

Referenced by refresh().

◆ waveLength

double inet::SignalFigure::waveLength = NaN
protected

Referenced by refresh().

◆ waveOffset

double inet::SignalFigure::waveOffset = NaN
protected

Referenced by refresh().

◆ waveOpacityFactor

double inet::SignalFigure::waveOpacityFactor = NaN
protected

Referenced by refresh().

◆ waves

std::vector<cOvalFigure *> inet::SignalFigure::waves
protected

Referenced by refresh(), setColor(), and setWaveCount().

◆ waveWidth

double inet::SignalFigure::waveWidth = NaN
protected

Referenced by refresh().


The documentation for this class was generated from the following files:
inet::SignalFigure::bounds
Rectangle bounds
Definition: SignalFigure.h:29
inet::SignalFigure::waves
std::vector< cOvalFigure * > waves
Definition: SignalFigure.h:27
inet::count
int count(const std::vector< T > &v, const Tk &a)
Definition: stlutils.h:54
inet::sctp::min
double min(const double a, const double b)
Returns the minimum of a and b.
Definition: SctpAssociation.h:261
inet::SignalFigure::innerRx
double innerRx
Definition: SignalFigure.h:30
inet::SignalFigure::waveOffset
double waveOffset
Definition: SignalFigure.h:24
inet::SignalFigure::fadingFactor
double fadingFactor
Definition: SignalFigure.h:21
inet::SignalFigure::waveWidth
double waveWidth
Definition: SignalFigure.h:23
inet::sctp::max
double max(const double a, const double b)
Returns the maximum of a and b.
Definition: SctpAssociation.h:266
inet::SignalFigure::ringSize
double ringSize
Definition: SignalFigure.h:19
inet::SignalFigure::innerRy
double innerRy
Definition: SignalFigure.h:31
inet::SignalFigure::waveLength
double waveLength
Definition: SignalFigure.h:22
inet::SignalFigure::rings
std::vector< cRingFigure * > rings
Definition: SignalFigure.h:26
inet::SignalFigure::fadingDistance
double fadingDistance
Definition: SignalFigure.h:20
inet::SignalFigure::waveOpacityFactor
double waveOpacityFactor
Definition: SignalFigure.h:25
inet::SignalFigure::opacity
double opacity
Definition: SignalFigure.h:18