LibreCAD
|
#include <cadentity.h>
Public Member Functions | |
CADEntity () | |
CADEntity (Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo=nullptr, const Block_CSPtr block=nullptr) | |
CADEntity Constructor. More... | |
CADEntity (CADEntity_CSPtr cadEntity, bool sameID) | |
CADEntity (CADEntity_CSPtr cadEntity) | |
virtual | ~CADEntity ()=default |
virtual CADEntity_CSPtr | move (const geo::Coordinate &offset) const =0 |
Function for Move. More... | |
virtual CADEntity_CSPtr | copy (const geo::Coordinate &offset) const =0 |
Function for Copy. More... | |
virtual CADEntity_CSPtr | rotate (const geo::Coordinate &rotation_center, const double rotation_angle) const =0 |
Function implementation for rotate. More... | |
virtual CADEntity_CSPtr | scale (const geo::Coordinate &scale_center, const geo::Coordinate &scale_factor) const =0 |
Function implementation for Scale. More... | |
virtual CADEntity_CSPtr | mirror (const geo::Coordinate &axis1, const geo::Coordinate &axis2) const =0 |
virtual const geo::Area | boundingBox () const =0 |
boundingBox Return the bounding box of this entity. This should be as tight around the entity as possible but care should be taken that this routine is also as fast as possible. in essence, favor speed over tightness. This routine will in generally be used during testing if entities cross for example to find snap points and to build relationships of tree for example using quad trees More... | |
virtual CADEntity_CSPtr | modify (Layer_CSPtr layer, const MetaInfo_CSPtr metaInfo, Block_CSPtr block) const =0 |
modify Return a new entity with the same ID bit with possible modified metainfo and/pr layer information #return new entity with same ID More... | |
Layer_CSPtr | layer () const |
layer return the layer this entity is placed on More... | |
template<typename T > | |
const std::shared_ptr< const T > | metaInfo (std::string metaName) const |
MetaInfo_CSPtr | metaInfo () const |
virtual void | accept (GeoEntityVisitor &v) const override |
virtual void | dispatch (EntityDispatch &) const =0 |
Block_CSPtr | block () const |
Return the current entity block. More... | |
![]() | |
ID () | |
Default constructor, provides a new unique ID to each entity. More... | |
ID (ID_DATATYPE) | |
virtual | ~ID ()=default |
ID_DATATYPE | id () const |
returns the ID of the entity More... | |
bool | operator== (const ID &id) const |
void | setID (ID_DATATYPE id) |
![]() | |
virtual | ~Visitable ()=default |
Protected Member Functions | |
CADEntity (const lc::builder::CADEntityBuilder &builder) | |
Private Attributes | |
Layer_CSPtr | _layer |
MetaInfo_CSPtr | _metaInfo |
Block_CSPtr | _block |
Friends | |
class | lc::builder::CADEntityBuilder |
Additional Inherited Members | |
![]() | |
static std::atomic< ID_DATATYPE > | __idCounter |
Class that all CAD entities must inherit
Definition at line 21 of file cadentity.h.
|
inline |
Definition at line 25 of file cadentity.h.
CADEntity::CADEntity | ( | Layer_CSPtr | layer, |
const MetaInfo_CSPtr | metaInfo = nullptr , |
||
const Block_CSPtr | block = nullptr |
||
) |
CADEntity Constructor.
metaTypes | A list of metatypes associated with this line |
Definition at line 7 of file cadentity.cpp.
CADEntity::CADEntity | ( | CADEntity_CSPtr | cadEntity, |
bool | sameID | ||
) |
CADEntity::CADEntity | ( | CADEntity_CSPtr | cadEntity | ) |
Definition at line 14 of file cadentity.cpp.
|
virtualdefault |
|
protected |
Definition at line 22 of file cadentity.cpp.
|
inlineoverridevirtual |
Implements lc::Visitable.
Reimplemented in lc::entity::LWPolyline, lc::entity::Image, lc::entity::Text, lc::entity::DimLinear, lc::entity::Line, lc::entity::Ellipse, lc::entity::DimRadial, lc::entity::DimDiametric, lc::entity::Spline, lc::entity::DimAngular, lc::entity::DimAligned, lc::entity::Arc, lc::entity::Point, and lc::entity::Circle.
Definition at line 127 of file cadentity.h.
Block_CSPtr CADEntity::block | ( | ) | const |
Return the current entity block.
Definition at line 33 of file cadentity.cpp.
|
pure virtual |
boundingBox Return the bounding box of this entity. This should be as tight around the entity as possible but care should be taken that this routine is also as fast as possible. in essence, favor speed over tightness. This routine will in generally be used during testing if entities cross for example to find snap points and to build relationships of tree for example using quad trees
Implemented in lc::entity::LWPolyline, lc::entity::Text, lc::entity::Line, lc::entity::DimRadial, lc::entity::DimLinear, lc::entity::Spline, lc::entity::Image, lc::entity::Ellipse, lc::entity::DimDiametric, lc::entity::Point, lc::entity::Arc, lc::entity::DimAligned, lc::entity::DimAngular, lc::entity::Circle, and lc::entity::Insert.
|
pure virtual |
Function for Copy.
offset | the offset by which entity is to be copied |
Implemented in lc::entity::LWPolyline, lc::entity::Text, lc::entity::Line, lc::entity::DimRadial, lc::entity::Spline, lc::entity::DimLinear, lc::entity::Image, lc::entity::DimDiametric, lc::entity::Ellipse, lc::entity::Point, lc::entity::Arc, lc::entity::DimAligned, lc::entity::DimAngular, lc::entity::Circle, lc::entity::CustomEntity, and lc::entity::Insert.
|
pure virtual |
Implemented in lc::entity::LWPolyline, lc::entity::Image, lc::entity::Text, lc::entity::DimLinear, lc::entity::Line, lc::entity::Ellipse, lc::entity::DimRadial, lc::entity::DimDiametric, lc::entity::Spline, lc::entity::DimAngular, lc::entity::DimAligned, lc::entity::Arc, lc::entity::Point, lc::entity::Circle, and lc::entity::Insert.
Layer_CSPtr CADEntity::layer | ( | ) | const |
layer return the layer this entity is placed on
Definition at line 29 of file cadentity.cpp.
|
inline |
Retrieve meta information back from this entity returns nullptr when the specific meta info wasn't found example: auto metaData = myEntity.metaInfo<lc::MetaColorByValue>(lc::MetaInfo::_COLOR);
Definition at line 113 of file cadentity.h.
|
inline |
Definition at line 123 of file cadentity.h.
|
pure virtual |
Implemented in lc::entity::LWPolyline, lc::entity::Text, lc::entity::Line, lc::entity::DimRadial, lc::entity::Spline, lc::entity::DimLinear, lc::entity::Image, lc::entity::DimDiametric, lc::entity::Ellipse, lc::entity::Point, lc::entity::Arc, lc::entity::DimAligned, lc::entity::DimAngular, lc::entity::Circle, lc::entity::CustomEntity, and lc::entity::Insert.
|
pure virtual |
modify Return a new entity with the same ID bit with possible modified metainfo and/pr layer information #return new entity with same ID
Implemented in lc::entity::LWPolyline, lc::entity::Text, lc::entity::Line, lc::entity::DimRadial, lc::entity::DimLinear, lc::entity::Spline, lc::entity::Image, lc::entity::Ellipse, lc::entity::DimDiametric, lc::entity::Point, lc::entity::Arc, lc::entity::DimAligned, lc::entity::DimAngular, lc::entity::Circle, lc::entity::CustomEntity, and lc::entity::Insert.
|
pure virtual |
Function for Move.
offset | the offset by which entity is to be moved |
Implemented in lc::entity::LWPolyline, lc::entity::Text, lc::entity::Line, lc::entity::DimRadial, lc::entity::Spline, lc::entity::DimLinear, lc::entity::Image, lc::entity::DimDiametric, lc::entity::Ellipse, lc::entity::Point, lc::entity::Arc, lc::entity::DimAligned, lc::entity::DimAngular, lc::entity::Circle, lc::entity::CustomEntity, and lc::entity::Insert.
|
pure virtual |
Function implementation for rotate.
angle | angle by which the entity is to be rotated. |
Implemented in lc::entity::LWPolyline, lc::entity::Text, lc::entity::Line, lc::entity::DimRadial, lc::entity::Spline, lc::entity::DimLinear, lc::entity::Image, lc::entity::DimDiametric, lc::entity::Ellipse, lc::entity::Point, lc::entity::Arc, lc::entity::DimAligned, lc::entity::DimAngular, lc::entity::Circle, lc::entity::CustomEntity, and lc::entity::Insert.
|
pure virtual |
Function implementation for Scale.
scale_center | |
scale_factor |
Implemented in lc::entity::LWPolyline, lc::entity::Text, lc::entity::Line, lc::entity::DimRadial, lc::entity::Spline, lc::entity::DimLinear, lc::entity::Image, lc::entity::DimDiametric, lc::entity::Ellipse, lc::entity::Point, lc::entity::Arc, lc::entity::DimAligned, lc::entity::DimAngular, lc::entity::Circle, lc::entity::CustomEntity, and lc::entity::Insert.
|
friend |
Definition at line 22 of file cadentity.h.
|
private |
Definition at line 143 of file cadentity.h.
|
private |
Definition at line 141 of file cadentity.h.
|
private |
Definition at line 142 of file cadentity.h.