diff options
Diffstat (limited to 'src/sp-mesh-patch.cpp')
| -rw-r--r-- | src/sp-mesh-patch.cpp | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/src/sp-mesh-patch.cpp b/src/sp-mesh-patch.cpp index ff1a18a01..e3e9044a5 100644 --- a/src/sp-mesh-patch.cpp +++ b/src/sp-mesh-patch.cpp @@ -17,6 +17,19 @@ #include "sp-mesh-patch.h" #include "style.h" +#include "attributes.h" +#include "xml/repr.h" + +#include "sp-factory.h" + +namespace { + SPObject* createMeshPatch() { + return new SPMeshPatch(); + } + + bool meshPatchRegistered = SPFactory::instance().registerObject("svg:meshPatch", createMeshPatch); +} + SPMeshPatch* SPMeshPatch::getNextMeshPatch() { SPMeshPatch *result = 0; @@ -51,6 +64,70 @@ SPMeshPatch* SPMeshPatch::getPrevMeshPatch() return result; } + +/* + * Mesh Patch + */ + +SPMeshPatch::SPMeshPatch() : SPObject(), CObject(this) { + delete this->cobject; + this->cobject = this; + + this->tensor_string = NULL; +} + +SPMeshPatch::~SPMeshPatch() { +} + +void SPMeshPatch::build(SPDocument* doc, Inkscape::XML::Node* repr) { + SPMeshPatch* object = this; + + CObject::build(doc, repr); + + object->readAttr( "tensor" ); +} + +/** + * Virtual build: set meshpatch attributes from its associated XML node. + */ + +void SPMeshPatch::set(unsigned int key, const gchar* value) { + SPMeshPatch* object = this; + + SPMeshPatch *patch = SP_MESHPATCH(object); + + switch (key) { + case SP_ATTR_TENSOR: { + if (value) { + patch->tensor_string = new Glib::ustring( value ); + // std::cout << "sp_meshpatch_set: Tensor string: " << patch->tensor_string->c_str() << std::endl; + } + break; + } + default: { + // Do nothing + } + } +} + +/** + * Virtual set: set attribute to value. + */ + +Inkscape::XML::Node* SPMeshPatch::write(Inkscape::XML::Document* xml_doc, Inkscape::XML::Node* repr, guint flags) { + if ((flags & SP_OBJECT_WRITE_BUILD) && !repr) { + repr = xml_doc->createElement("svg:meshPatch"); + } + + CObject::write(xml_doc, repr, flags); + + return repr; +} + +/** + * Virtual write: write object attributes to repr. + */ + /* Local Variables: mode:c++ |
