LibreCAD
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
lc::entity::CADEntity Class Referenceabstract

#include <cadentity.h>

Inheritance diagram for lc::entity::CADEntity:
Collaboration diagram for lc::entity::CADEntity:

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...
 
- Public Member Functions inherited from lc::ID
 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)
 
- Public Member Functions inherited from lc::Visitable
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 Public Attributes inherited from lc::ID
static std::atomic< ID_DATATYPE__idCounter
 

Detailed Description

Class that all CAD entities must inherit

Definition at line 21 of file cadentity.h.

Constructor & Destructor Documentation

lc::entity::CADEntity::CADEntity ( )
inline

Definition at line 25 of file cadentity.h.

25  {
26  }
CADEntity::CADEntity ( Layer_CSPtr  layer,
const MetaInfo_CSPtr  metaInfo = nullptr,
const Block_CSPtr  block = nullptr 
)

CADEntity Constructor.

Parameters
metaTypesA list of metatypes associated with this line
See also
lc::Color
lc::LineWidth
lc::MetaType

Definition at line 7 of file cadentity.cpp.

7  :
8  ID(),
9  _layer(layer),
11  _block(block) {
12 }
MetaInfo_CSPtr _metaInfo
Definition: cadentity.h:142
ID()
Default constructor, provides a new unique ID to each entity.
Definition: id.cpp:7
Block_CSPtr _block
Definition: cadentity.h:143
Layer_CSPtr layer() const
layer return the layer this entity is placed on
Definition: cadentity.cpp:29
MetaInfo_CSPtr metaInfo() const
Definition: cadentity.h:123
Block_CSPtr block() const
Return the current entity block.
Definition: cadentity.cpp:33
Layer_CSPtr _layer
Definition: cadentity.h:141
CADEntity::CADEntity ( CADEntity_CSPtr  cadEntity,
bool  sameID 
)

Definition at line 18 of file cadentity.cpp.

19  : ID(sameID ? cadEntity->id() : 0), _layer(cadEntity->_layer), _metaInfo(cadEntity->_metaInfo), _block(cadEntity->_block) {
20 }
MetaInfo_CSPtr _metaInfo
Definition: cadentity.h:142
ID()
Default constructor, provides a new unique ID to each entity.
Definition: id.cpp:7
Block_CSPtr _block
Definition: cadentity.h:143
Layer_CSPtr _layer
Definition: cadentity.h:141
CADEntity::CADEntity ( CADEntity_CSPtr  cadEntity)

Definition at line 14 of file cadentity.cpp.

14  : ID(), _layer(cadEntity->_layer), _metaInfo(cadEntity->_metaInfo),
15  _block(cadEntity->_block) {
16 }
MetaInfo_CSPtr _metaInfo
Definition: cadentity.h:142
ID()
Default constructor, provides a new unique ID to each entity.
Definition: id.cpp:7
Block_CSPtr _block
Definition: cadentity.h:143
Layer_CSPtr _layer
Definition: cadentity.h:141
virtual lc::entity::CADEntity::~CADEntity ( )
virtualdefault
CADEntity::CADEntity ( const lc::builder::CADEntityBuilder builder)
protected

Definition at line 22 of file cadentity.cpp.

22  :
23  ID(builder.id()),
24  _layer(builder.layer()),
25  _metaInfo(builder.metaInfo()),
26  _block(builder.block()) {
27 }
MetaInfo_CSPtr _metaInfo
Definition: cadentity.h:142
ID()
Default constructor, provides a new unique ID to each entity.
Definition: id.cpp:7
Block_CSPtr _block
Definition: cadentity.h:143
const Layer_CSPtr & layer() const
Get layer.
Definition: cadentity.h:33
const Block_CSPtr & block() const
Get block.
Definition: cadentity.h:65
const ID_DATATYPE id() const
Get entity ID.
Definition: cadentity.h:81
Layer_CSPtr _layer
Definition: cadentity.h:141
const MetaInfo_CSPtr & metaInfo() const
Get MetaInfo.
Definition: cadentity.h:49

Member Function Documentation

Block_CSPtr CADEntity::block ( ) const

Return the current entity block.

Returns
Entity block or nullptr if not defined

Definition at line 33 of file cadentity.cpp.

33  {
34  return _block;
35 }
Block_CSPtr _block
Definition: cadentity.h:143
virtual const geo::Area lc::entity::CADEntity::boundingBox ( ) const
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

Returns
geo::Area

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.

virtual CADEntity_CSPtr lc::entity::CADEntity::copy ( const geo::Coordinate offset) const
pure virtual
Layer_CSPtr CADEntity::layer ( ) const

layer return the layer this entity is placed on

Returns
Layer_CSPtr

Definition at line 29 of file cadentity.cpp.

29  {
30  return _layer;
31 }
Layer_CSPtr _layer
Definition: cadentity.h:141
template<typename T >
const std::shared_ptr<const T> lc::entity::CADEntity::metaInfo ( std::string  metaName) const
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.

113  {
114  if (_metaInfo && (_metaInfo->find(metaName) != _metaInfo->end())) {
115  auto a=_metaInfo->at(metaName);
116  auto b=std::dynamic_pointer_cast<const T>(a);
117  return b;
118  }
119 
120  return nullptr;
121  }
MetaInfo_CSPtr _metaInfo
Definition: cadentity.h:142
MetaInfo_CSPtr lc::entity::CADEntity::metaInfo ( ) const
inline

Definition at line 123 of file cadentity.h.

123  {
124  return _metaInfo;
125  }
MetaInfo_CSPtr _metaInfo
Definition: cadentity.h:142
virtual CADEntity_CSPtr lc::entity::CADEntity::modify ( Layer_CSPtr  layer,
const MetaInfo_CSPtr  metaInfo,
Block_CSPtr  block 
) const
pure virtual
virtual CADEntity_CSPtr lc::entity::CADEntity::move ( const geo::Coordinate offset) const
pure virtual
virtual CADEntity_CSPtr lc::entity::CADEntity::rotate ( const geo::Coordinate rotation_center,
const double  rotation_angle 
) const
pure virtual
virtual CADEntity_CSPtr lc::entity::CADEntity::scale ( const geo::Coordinate scale_center,
const geo::Coordinate scale_factor 
) const
pure virtual

Friends And Related Function Documentation

friend class lc::builder::CADEntityBuilder
friend

Definition at line 22 of file cadentity.h.

Member Data Documentation

Block_CSPtr lc::entity::CADEntity::_block
private

Definition at line 143 of file cadentity.h.

Layer_CSPtr lc::entity::CADEntity::_layer
private

Definition at line 141 of file cadentity.h.

MetaInfo_CSPtr lc::entity::CADEntity::_metaInfo
private

Definition at line 142 of file cadentity.h.


The documentation for this class was generated from the following files: