Power System Platform
2024w23a
|
Base class of all elements of the program. This class is responsible for manage graphical and his data. More...
#include <Element.h>
Public Member Functions | |
Element () | |
Constructor. | |
virtual | ~Element () |
Destructor. | |
void | SetDragging (bool dragging=true) |
Set if the element are being dragged. | |
void | SetHeight (double height) |
Set element height. | |
void | SetPosition (const wxPoint2DDouble position) |
Set the element position and update the rectangle. | |
void | SetSelected (bool selected=true) |
Set element selection. | |
void | SetWidth (double width) |
Set element width. | |
void | SetAngle (double angle) |
Set element angle. | |
void | ShowPickbox (bool showPickbox=true) |
Set if the pickbox is shown. | |
void | SetBorderSize (double borderSize) |
Set the size of the border (shown in selected elements). | |
bool | SetOnline (bool online=true) |
Set if the element is online or offline. | |
virtual void | SetPointList (std::vector< wxPoint2DDouble > pointList) |
Set the list of points that connect the element to the bus. | |
ElementType | GetElementType () |
wxRect2DDouble | GetRect () const |
Get the element rectangle. | |
wxPoint2DDouble | GetPosition () const |
Get the element position. | |
bool | IsDragging () const |
Checks if the element is being dragged. | |
double | GetHeight () const |
Get the element height. | |
bool | IsSelected () const |
Checks if the element is selected. | |
double | GetWidth () const |
Get the element width. | |
double | GetAngle () const |
Get the element angle. | |
double | GetRotationAngle () const |
Get the angle of rotation. | |
bool | IsPickboxShown () const |
Checks if the pickbox is shown. | |
bool | IsOnline () const |
Checks if the element is online or offline. | |
virtual std::vector< wxPoint2DDouble > | GetPointList () const |
Get the list of points that connect the element to bus. | |
virtual bool | AddParent (Element *parent, wxPoint2DDouble position) |
Add a parent to the element. This method must be used on power elements that connect to a bus, so the parent must be a bus. The element basic points are calculated in this method, so apply this when the element is being inserted. | |
virtual void | AddParent (Element *parent) |
Add a parent to the element. | |
virtual bool | Contains (wxPoint2DDouble position) const =0 |
Checks if the element contains a position. | |
virtual bool | Intersects (wxRect2DDouble rect) const =0 |
Check if the element's rect intersects other rect. | |
virtual Element * | GetCopy () |
Get a the element copy. | |
virtual void | SetID (int id) |
Set the element ID. | |
virtual int | GetID () const |
Get the element ID. | |
virtual void | AddChild (Element *child) |
Add a child to the child list. | |
virtual void | RemoveChild (Element *child) |
Remove a child from the list. | |
virtual void | ReplaceChild (Element *oldChild, Element *newChild) |
Replace a child from the list. | |
virtual wxString | GetTipText () const |
Get the tip text. | |
virtual void | DrawDC (wxPoint2DDouble translation, double scale, wxGraphicsContext *gc) const |
Draw the element using GDI+. | |
virtual void | Rotate (bool clockwise=true) |
Rotate the element. | |
virtual bool | GetContextMenu (wxMenu &menu) |
Get the element contex menu. | |
virtual void | AddPoint (wxPoint2DDouble point) |
Add point to the list of points that connect the element to the bus. | |
virtual void | StartMove (wxPoint2DDouble position) |
Update the element attributes related to the movement. | |
virtual void | Move (wxPoint2DDouble position) |
Move the element other position. | |
virtual void | MoveNode (Element *parent, wxPoint2DDouble position) |
Move a node. StartMove(wxPoint2DDouble position) before start moving. | |
virtual bool | NodeContains (wxPoint2DDouble position) |
Check if a node contains a point. If contains, set the attributes related to node movement. | |
virtual void | UpdateNodes () |
Update the nodes according to the parents. If a parent is removed, use this method. | |
void | SetParent (Element *parent, int num) |
void | SetChild (Element *child, int num) |
virtual bool | SetNodeParent (Element *parent) |
Set a perent to the node. If all conditions are met, a new parent are added to the element and the points related to the nodes will be calculated. | |
virtual void | RemoveParent (Element *parent) |
Remove a parent. | |
virtual void | ReplaceParent (Element *oldParent, Element *newParent) |
Replace a parent. | |
virtual void | RotateNode (Element *parent, bool clockwise=true) |
Rotate a node. | |
virtual bool | PickboxContains (wxPoint2DDouble position) |
Check if a pickbox contains a point. If contains the attributes related to pickbox movement will be calculated. | |
virtual void | MovePickbox (wxPoint2DDouble position) |
Move the pickbox. | |
virtual wxCursor | GetBestPickboxCursor () const |
Get the best cursor to shown to the user when the mouse is above a pickbox. | |
virtual void | ResetPickboxes () |
Remove the pickboxes. | |
virtual void | ResetNodes () |
Remove the active nodes. | |
virtual wxPoint2DDouble | WorldToScreen (wxPoint2DDouble translation, double scale, double offsetX=0.0, double offsetY=0.0) const |
Convert the element position to screen position. | |
virtual wxPoint2DDouble | WorldToScreen (wxPoint2DDouble position, wxPoint2DDouble translation, double scale, double offsetX=0.0, double offsetY=0.0) const |
Convert a generic position to screen position. | |
virtual bool | RotatedRectanglesIntersects (wxRect2DDouble rect1, wxRect2DDouble rect2, double angle1, double angle2) const |
Check if two roteted rectangles intersect. | |
virtual void | DrawDCCircle (wxPoint2DDouble position, double radius, int numSegments, wxGraphicsContext *gc) const |
Draw a circle. | |
virtual void | DrawDCArc (wxPoint2DDouble position, double radius, double initAngle, double finalAngle, int numSegments, wxGraphicsContext *gc) const |
virtual void | DrawDCTriangle (std::vector< wxPoint2DDouble > points, wxGraphicsContext *gc) const |
Draw rectangle. | |
virtual void | DrawDCPickbox (wxPoint2DDouble position, wxGraphicsContext *gc) const |
Draw a point. | |
virtual wxPoint2DDouble | RotateAtPosition (wxPoint2DDouble pointToRotate, double angle, bool degrees=true) const |
Rotate a point as element position being the origin. | |
virtual std::vector< Element * > | GetParentList () const |
Get the parent list. | |
virtual std::vector< Element * > | GetChildList () const |
Get the Child list. | |
virtual void | CalculateBoundaries (wxPoint2DDouble &leftUp, wxPoint2DDouble &rightBottom) const |
Calculate the element boundaries. | |
virtual void | GeneralMenuItens (wxMenu &menu) |
Insert general itens to context menu. | |
virtual bool | ShowForm (wxWindow *parent, Element *element) |
Show element data form. | |
virtual double | PointToLineDistance (wxPoint2DDouble point, int *segmentNumber=nullptr) const |
Calculate the distance between a line (formed by point list) and a point. | |
virtual rapidxml::xml_node * | SaveElement (rapidxml::xml_document<> &doc, rapidxml::xml_node<> *elementListNode) |
virtual bool | OpenElement (rapidxml::xml_node<> *elementNode) |
void | SaveCADProperties (rapidxml::xml_document<> &doc, rapidxml::xml_node<> *elementNode) |
bool | OpenCADProperties (rapidxml::xml_node<> *elementNode) |
Static Public Member Functions | |
static bool | DoubleFromString (wxWindow *parent, wxString strValue, double &value, wxString errorMsg) |
Get a double value from a string. Show a error message if the conversion fail. | |
static bool | IntFromString (wxWindow *parent, wxString strValue, int &value, wxString errorMsg) |
Convert a string to int. Show a error message if the conversion fail. | |
static wxString | StringFromDouble (double value, int minDecimal=1) |
Convert a double value to string. | |
Protected Attributes | |
ElementType | m_elementType = ElementType::TYPE_NONE |
int | m_elementID = 0 |
std::vector< Element * > | m_parentList |
std::vector< Element * > | m_childList |
wxRect2DDouble | m_rect |
wxPoint2DDouble | m_position |
double | m_width = 0.0 |
double | m_height = 0.0 |
double | m_angle = 0.0 |
double | m_borderSize = 2.0 |
double | m_rotationAngle = 45.0 |
double | m_switchSize = 10.0 |
std::vector< wxRect2DDouble > | m_switchRect |
bool | m_selected = false |
bool | m_dragging = false |
bool | m_showPickbox = false |
int | m_activePickboxID = ID_PB_NONE |
int | m_activeNodeID = 0 |
std::vector< wxPoint2DDouble > | m_pointList |
std::vector< wxPoint2DDouble > | m_movePts |
wxPoint2DDouble | m_moveStartPt |
wxPoint2DDouble | m_movePos |
bool | m_online = true |
wxColour | m_selectionColour |
Base class of all elements of the program. This class is responsible for manage graphical and his data.
|
virtual |
Add a child to the child list.
child | New child. |
|
inlinevirtual |
Add a parent to the element.
parent | Element parent. |
|
inlinevirtual |
Add a parent to the element. This method must be used on power elements that connect to a bus, so the parent must be a bus. The element basic points are calculated in this method, so apply this when the element is being inserted.
Reimplemented in Bus, Capacitor, HarmCurrent, Inductor, Line, Load, Machines, Text, and Transformer.
|
inlinevirtual |
|
virtual |
Calculate the element boundaries.
leftUp | Top-left position of the element. |
rightBottom | Bottom-right position of the element. |
Reimplemented in Line.
|
pure virtual |
Checks if the element contains a position.
position | Position to be checked. |
Implemented in Branch, Bus, Capacitor, ConnectionLine, Constant, Exponential, Gain, HarmCurrent, Inductor, IOControl, Limiter, Line, Machines, MathExpression, MathOperation, RateLimiter, Shunt, Sum, Text, TransferFunction, and Transformer.
|
static |
Get a double value from a string. Show a error message if the conversion fail.
parent | Message box parent. |
strValue | String value to be converted. |
value | Double value converted. |
errorMsg | Error message. |
|
inlinevirtual |
Draw the element using GDI+.
translation | Translation of the system. |
scale | Scale of the system. |
gc | Graphics context |
Reimplemented in Bus, Capacitor, ConnectionLine, Constant, Exponential, Gain, HarmCurrent, Inductor, IOControl, Limiter, Line, Load, Machines, MathExpression, MathOperation, RateLimiter, Sum, TransferFunction, and Transformer.
|
virtual |
Draw a circle.
position | Circle position. |
radius | Circle radius |
numSegments | Num of segments of the circle. |
mode | OpenGl primitive. |
Draw a circle using device context.
position | Circle position. |
radius | Circle radius |
numSegments | Num of segments of the circle. |
gl | Device context. |
|
virtual |
Draw a point.
position | Point position. |
size | Point size. |
Draw line.
points | Line vertices. |
mode | OpenGl primitive. |
Draw pickbox.
position | Pickbox position. |
Draw pickbox using direct context.
position | Pickbox position. |
gc | Direct context. |
|
virtual |
Draw rectangle.
position | Rectangle position. |
width | Rectangle width. |
height | Rectangle height. |
mode | OpenGl primitive. |
Draw rectangle.
points | Rectangle vertices. |
mode | OpenGl primitive. |
Draw a triangle.
points | Triangle vertices. |
mode | OpenGl primitive. |
Draw a triangle.
points | Triangle vertices. |
gc | Device context. |
|
virtual |
Insert general itens to context menu.
menu | Menu that will be inserted the general itens. |
|
inline |
Get the element angle.
|
inlinevirtual |
|
inlinevirtual |
Get the Child list.
|
inlinevirtual |
Get the element contex menu.
menu | menu that will be inserted the element itens. |
Reimplemented in Branch, Bus, Capacitor, HarmCurrent, IndMotor, Inductor, Line, Load, SyncGenerator, SyncMotor, and Transformer.
|
inlinevirtual |
Get a the element copy.
Reimplemented in Bus, Capacitor, ConnectionLine, Constant, Divider, Exponential, Gain, HarmCurrent, IndMotor, Inductor, IOControl, Limiter, Line, Load, MathExpression, Multiplier, RateLimiter, Sum, SyncGenerator, SyncMotor, Text, TransferFunction, and Transformer.
|
inline |
Get the element height.
|
inlinevirtual |
Get the element ID.
|
inlinevirtual |
Get the parent list.
|
inlinevirtual |
Get the list of points that connect the element to bus.
|
inline |
Get the element position.
|
inline |
Get the element rectangle.
|
inline |
Get the angle of rotation.
|
inlinevirtual |
Get the tip text.
Reimplemented in Bus, Capacitor, HarmCurrent, IndMotor, Inductor, Line, Load, SyncGenerator, SyncMotor, and Transformer.
|
inline |
Get the element width.
|
pure virtual |
Check if the element's rect intersects other rect.
rect | Rect to check intersection. |
Implemented in Branch, Bus, Capacitor, ConnectionLine, Constant, Exponential, Gain, HarmCurrent, Inductor, IOControl, Limiter, Line, Machines, MathExpression, MathOperation, RateLimiter, Shunt, Sum, Text, TransferFunction, and Transformer.
|
static |
Convert a string to int. Show a error message if the conversion fail.
parent | Message box parent. |
strValue | String value to be converted. |
value | Int value converted. |
errorMsg | Error message. |
|
inline |
Checks if the element is being dragged.
|
inline |
Checks if the element is online or offline.
|
inline |
Checks if the pickbox is shown.
|
inline |
Checks if the element is selected.
|
virtual |
Move the element other position.
position | Position that the element will be moved. Use StartMove(wxPoint2DDouble position) before start moving. |
Reimplemented in Branch, ConnectionLine, ControlElement, Gain, Line, Machines, Shunt, and Transformer.
|
inlinevirtual |
Move a node. StartMove(wxPoint2DDouble position) before start moving.
parent | Node's parent. |
position | New node position. |
Reimplemented in Branch, Line, Machines, Shunt, and Transformer.
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
virtual |
Calculate the distance between a line (formed by point list) and a point.
point | origin point. |
segmentNumber | Sotores the segment number clicked |
|
virtual |
Remove a child from the list.
child | Child to remove. |
|
inlinevirtual |
Remove a parent.
parent | Parent to be removed. |
Reimplemented in Branch, ConnectionLine, Machines, and Shunt.
Replace a child from the list.
oldChild | Old child. |
newChild | New child. |
Replace a parent.
oldParent | Parent to be replaced. |
newParent | New parent. |
|
inlinevirtual |
Rotate the element.
clockwise | True to rotate clockwise, false to rotate counter-clockwise. |
Reimplemented in Bus, Capacitor, Constant, Exponential, Gain, HarmCurrent, Inductor, IOControl, Limiter, Load, Machines, MathExpression, MathOperation, RateLimiter, Sum, Text, TransferFunction, and Transformer.
|
virtual |
Rotate a point as element position being the origin.
pointToRotate | Point that will be rotated. |
angle | Angle of rotation. |
degrees | True if the angle is in degrees, false if radians. |
|
virtual |
Check if two roteted rectangles intersect.
rect1 | First rect. |
rect2 | Second rect. |
angle1 | Rotation algle of first rectangle. |
angle2 | Rotation angle of second rectangle. |
|
inlinevirtual |
|
inline |
Set element angle.
angle | Angle value in degrees. |
|
inline |
Set the size of the border (shown in selected elements).
borderSize | Border size. |
|
inline |
Set if the element are being dragged.
dragging | True if is dragging, false otherwise. |
|
inline |
Set element height.
height | Height value. |
|
inlinevirtual |
Set the element ID.
id | Element ID. |
|
inlinevirtual |
bool Element::SetOnline | ( | bool | online = true | ) |
Set if the element is online or offline.
online | True if online, false if offline. |
|
inlinevirtual |
Set the list of points that connect the element to the bus.
pointList | List of points. |
Reimplemented in Line.
void Element::SetPosition | ( | const wxPoint2DDouble | position | ) |
Set the element position and update the rectangle.
position | Position value. |
|
inline |
Set element selection.
selected | True if selected, false otherwise. |
|
inline |
Set element width.
width | Width value. |
|
inlinevirtual |
Show element data form.
parent | Form parent |
element | Element that will be edited. |
Reimplemented in Bus, Capacitor, Constant, Exponential, Gain, HarmCurrent, IndMotor, Inductor, IOControl, Limiter, Line, Load, MathExpression, MathOperation, RateLimiter, Sum, SyncGenerator, SyncMotor, TransferFunction, and Transformer.
|
inline |
Set if the pickbox is shown.
showPickbox | True if show, false otherwise. |
|
virtual |
Update the element attributes related to the movement.
position | Start move position. |
Reimplemented in Branch, ConnectionLine, ControlElement, Line, Machines, Shunt, and Transformer.
|
static |
Convert a double value to string.
value | Value to be converted. |
minDecimal | Minimum number of decimal places. |
|
inlinevirtual |
|
virtual |
Convert a generic position to screen position.
position | Position to be converted. |
translation | System translation. |
scale | System scale. |
offsetX | Offset in X axis. |
offsetY | Offset in Y axis. |
|
virtual |
Convert the element position to screen position.
translation | System translation. |
scale | System scale |
offsetX | Offset in X axis. |
offsetY | Offset if Y axis. |