[TechDraw] Move CosmeticVertex into own file
This commit is contained in:
committed by
WandererFan
parent
c293e862e7
commit
124bbcdeb9
@@ -45,7 +45,6 @@
|
||||
#include <Base/Writer.h>
|
||||
#include <Mod/TechDraw/App/CenterLinePy.h>
|
||||
#include <Mod/TechDraw/App/CosmeticEdgePy.h>
|
||||
#include <Mod/TechDraw/App/CosmeticVertexPy.h>
|
||||
#include <Mod/TechDraw/App/GeomFormatPy.h>
|
||||
|
||||
#include "Cosmetic.h"
|
||||
@@ -118,209 +117,6 @@ int LineFormat::getDefEdgeStyle()
|
||||
return style;
|
||||
}
|
||||
|
||||
//****************************************************************************************
|
||||
|
||||
TYPESYSTEM_SOURCE(TechDraw::CosmeticVertex, Base::Persistence)
|
||||
|
||||
CosmeticVertex::CosmeticVertex() : TechDraw::Vertex()
|
||||
{
|
||||
point(Base::Vector3d(0.0, 0.0, 0.0));
|
||||
permaPoint = Base::Vector3d(0.0, 0.0, 0.0);
|
||||
linkGeom = -1;
|
||||
color = Preferences::vertexColor();
|
||||
size = Preferences::vertexScale() *
|
||||
LineGroup::getDefaultWidth("Thin");
|
||||
style = 1;
|
||||
visible = true;
|
||||
hlrVisible = true;
|
||||
cosmetic = true;
|
||||
|
||||
createNewTag();
|
||||
}
|
||||
|
||||
CosmeticVertex::CosmeticVertex(const TechDraw::CosmeticVertex* cv) : TechDraw::Vertex(cv)
|
||||
{
|
||||
permaPoint = cv->permaPoint;
|
||||
linkGeom = cv->linkGeom;
|
||||
color = cv->color;
|
||||
size = cv->size;
|
||||
style = cv->style;
|
||||
visible = cv->visible;
|
||||
hlrVisible = true;
|
||||
cosmetic = true;
|
||||
|
||||
createNewTag();
|
||||
}
|
||||
|
||||
CosmeticVertex::CosmeticVertex(Base::Vector3d loc) : TechDraw::Vertex(loc)
|
||||
{
|
||||
permaPoint = loc;
|
||||
linkGeom = -1;
|
||||
color = Preferences::vertexColor();
|
||||
size = Preferences::vertexScale() *
|
||||
LineGroup::getDefaultWidth("Thick");
|
||||
style = 1; //TODO: implement styled vertexes
|
||||
visible = true;
|
||||
hlrVisible = true;
|
||||
cosmetic = true;
|
||||
|
||||
createNewTag();
|
||||
|
||||
}
|
||||
|
||||
void CosmeticVertex::move(Base::Vector3d newPos)
|
||||
{
|
||||
permaPoint = newPos;
|
||||
}
|
||||
|
||||
void CosmeticVertex::moveRelative(Base::Vector3d movement)
|
||||
{
|
||||
permaPoint += movement;
|
||||
}
|
||||
|
||||
std::string CosmeticVertex::toString() const
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << permaPoint.x << ", " <<
|
||||
permaPoint.y << ", " <<
|
||||
permaPoint.z << ", " <<
|
||||
" / ";
|
||||
ss << point().x << ", " <<
|
||||
point().y << ", " <<
|
||||
point().z << ", " <<
|
||||
" / " <<
|
||||
linkGeom << ", " <<
|
||||
" / " <<
|
||||
color.asHexString() << ", " <<
|
||||
" / " <<
|
||||
size << ", " <<
|
||||
" / " <<
|
||||
style << ", " <<
|
||||
" / " <<
|
||||
visible << " / " ;
|
||||
ss << getTagAsString();
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
// Persistence implementers
|
||||
unsigned int CosmeticVertex::getMemSize () const
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
void CosmeticVertex::Save(Base::Writer &writer) const
|
||||
{
|
||||
TechDraw::Vertex::Save(writer);
|
||||
writer.Stream() << writer.ind() << "<PermaPoint "
|
||||
<< "X=\"" << permaPoint.x <<
|
||||
"\" Y=\"" << permaPoint.y <<
|
||||
"\" Z=\"" << permaPoint.z <<
|
||||
"\"/>" << endl;
|
||||
writer.Stream() << writer.ind() << "<LinkGeom value=\"" << linkGeom << "\"/>" << endl;
|
||||
writer.Stream() << writer.ind() << "<Color value=\"" << color.asHexString() << "\"/>" << endl;
|
||||
writer.Stream() << writer.ind() << "<Size value=\"" << size << "\"/>" << endl;
|
||||
writer.Stream() << writer.ind() << "<Style value=\"" << style << "\"/>" << endl;
|
||||
const char v = visible?'1':'0';
|
||||
writer.Stream() << writer.ind() << "<Visible value=\"" << v << "\"/>" << endl;
|
||||
writer.Stream() << writer.ind() << "<Tag value=\"" << getTagAsString() << "\"/>" << endl;
|
||||
}
|
||||
|
||||
void CosmeticVertex::Restore(Base::XMLReader &reader)
|
||||
{
|
||||
if (!CosmeticVertex::restoreCosmetic()) {
|
||||
return;
|
||||
}
|
||||
TechDraw::Vertex::Restore(reader);
|
||||
reader.readElement("PermaPoint");
|
||||
permaPoint.x = reader.getAttributeAsFloat("X");
|
||||
permaPoint.y = reader.getAttributeAsFloat("Y");
|
||||
permaPoint.z = reader.getAttributeAsFloat("Z");
|
||||
reader.readElement("LinkGeom");
|
||||
linkGeom = reader.getAttributeAsInteger("value");
|
||||
reader.readElement("Color");
|
||||
std::string temp = reader.getAttribute("value");
|
||||
color.fromHexString(temp);
|
||||
reader.readElement("Size");
|
||||
size = reader.getAttributeAsFloat("value");
|
||||
reader.readElement("Style");
|
||||
style = reader.getAttributeAsInteger("value");
|
||||
reader.readElement("Visible");
|
||||
visible = (int)reader.getAttributeAsInteger("value")==0?false:true;
|
||||
reader.readElement("Tag");
|
||||
temp = reader.getAttribute("value");
|
||||
boost::uuids::string_generator gen;
|
||||
boost::uuids::uuid u1 = gen(temp);
|
||||
tag = u1;
|
||||
}
|
||||
|
||||
Base::Vector3d CosmeticVertex::scaled(double factor)
|
||||
{
|
||||
return permaPoint * factor;
|
||||
}
|
||||
|
||||
boost::uuids::uuid CosmeticVertex::getTag() const
|
||||
{
|
||||
return tag;
|
||||
}
|
||||
|
||||
std::string CosmeticVertex::getTagAsString() const
|
||||
{
|
||||
return boost::uuids::to_string(getTag());
|
||||
}
|
||||
|
||||
void CosmeticVertex::createNewTag()
|
||||
{
|
||||
// Initialize a random number generator, to avoid Valgrind false positives.
|
||||
static boost::mt19937 ran;
|
||||
static bool seeded = false;
|
||||
|
||||
if (!seeded) {
|
||||
ran.seed(static_cast<unsigned int>(std::time(nullptr)));
|
||||
seeded = true;
|
||||
}
|
||||
static boost::uuids::basic_random_generator<boost::mt19937> gen(&ran);
|
||||
|
||||
tag = gen();
|
||||
}
|
||||
|
||||
void CosmeticVertex::assignTag(const TechDraw::CosmeticVertex * cv)
|
||||
{
|
||||
if(cv->getTypeId() == this->getTypeId())
|
||||
this->tag = cv->tag;
|
||||
else
|
||||
throw Base::TypeError("CosmeticVertex tag can not be assigned as types do not match.");
|
||||
}
|
||||
|
||||
CosmeticVertex* CosmeticVertex::copy() const
|
||||
{
|
||||
// Base::Console().Message("CV::copy()\n");
|
||||
return new CosmeticVertex(this);
|
||||
}
|
||||
|
||||
CosmeticVertex* CosmeticVertex::clone() const
|
||||
{
|
||||
// Base::Console().Message("CV::clone()\n");
|
||||
CosmeticVertex* cpy = this->copy();
|
||||
cpy->tag = this->tag;
|
||||
return cpy;
|
||||
}
|
||||
|
||||
PyObject* CosmeticVertex::getPyObject()
|
||||
{
|
||||
if (PythonObject.is(Py::_None())) {
|
||||
// ref counter is set to 1
|
||||
PythonObject = Py::Object(new CosmeticVertexPy(this), true);
|
||||
}
|
||||
return Py::new_reference_to(PythonObject);
|
||||
}
|
||||
|
||||
|
||||
void CosmeticVertex::dump(const char* title)
|
||||
{
|
||||
Base::Console().Message("CV::dump - %s \n", title);
|
||||
Base::Console().Message("CV::dump - %s \n", toString().c_str());
|
||||
}
|
||||
|
||||
//******************************************
|
||||
|
||||
TYPESYSTEM_SOURCE(TechDraw::CosmeticEdge, Base::Persistence)
|
||||
|
||||
Reference in New Issue
Block a user