ultimatepp/bazaar/DXF/Entity.cpp
micio 77ded3f8a2 Bazaar/DXF : added some missing setters to Entity class
git-svn-id: svn://ultimatepp.org/upp/trunk@5277 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2012-08-12 13:06:00 +00:00

90 lines
1.7 KiB
C++

#include "DXF.h"
// gets DXF object
DXF &DXFEntity::GetDXF(void)
{
return entities->GetDXF();
}
DXF const &DXFEntity::GetDXF(void) const
{
return entities->GetDXF();
}
// write to stream
// must be redefined by derived classes
// calling the inherited one
bool DXFEntity::Write(Stream &s)
{
s << "0\n" << kind << "\n";
s << "8\n" << layer << "\n";
s << "100\nAcDbEntity\n";
if(color != DXF::ByLayer)
s << "62\n" << color << "\n";
if(lineType != "BYLAYER")
s << "6\n" << lineType << "\n";
s << "5\n" << Format64Hex(handle) << "\n";
return true;
}
// may be constructed only by derived classes
DXFEntity::DXFEntity(DXFEntities *e, String const &k)
{
entities = e;
kind = k;
color = e->GetCurrentColor();
lineType = e->GetCurrentLineType();
layer = e->GetCurrentLayer();
handle = GetNextHandle();
}
// gets next available handle
uint64 DXFEntity::GetNextHandle(void)
{
return entities->GetNextHandle();
}
// apply transformation to point
Pointf DXFEntity::T(Pointf const &p) const
{
return entities->GetTransformationMatrix()(p);
}
// scale a distance by transtormation matrix
double DXFEntity::S(double d) const
{
return entities->GetTransformationMatrix().S(d);
}
// rotate an angle by transformation matrix
double DXFEntity::R(double a) const
{
return entities->GetTransformationMatrix().R(a);
}
// sets color
DXFEntity &DXFEntity::SetColor(int c)
{
color = c;
return *this;
}
// sets layer
DXFEntity &DXFEntity::SetLayer(String const &l)
{
layer = l;
return *this;
}
// sets linetype
DXFEntity &DXFEntity::SetLineType(String const &l)
{
// linetype MUST be there, so add if not
if(!GetDXF().tables.HasLineType(l))
GetDXF().tables.AddLineType(l);
lineType = l;
return *this;
}