diff options
Diffstat (limited to 'Swiften/Serializer/PayloadSerializers/WhiteboardSerializer.cpp')
-rw-r--r-- | Swiften/Serializer/PayloadSerializers/WhiteboardSerializer.cpp | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/Swiften/Serializer/PayloadSerializers/WhiteboardSerializer.cpp b/Swiften/Serializer/PayloadSerializers/WhiteboardSerializer.cpp index 578b0ab..def21b1 100644 --- a/Swiften/Serializer/PayloadSerializers/WhiteboardSerializer.cpp +++ b/Swiften/Serializer/PayloadSerializers/WhiteboardSerializer.cpp @@ -5,13 +5,36 @@ */ #include <Swiften/Serializer/PayloadSerializers/WhiteboardSerializer.h> -#include <Swiften/Serializer/XML/XMLElement.h> + +#include <boost/smart_ptr/make_shared.hpp> #include <Swiften/Serializer/XML/XMLTextNode.h> namespace Swift { + void WhiteboardElementSerializingVisitor::visit(const WhiteboardLineElement* line) { + element = boost::make_shared<XMLElement>("line"); + element->setAttribute("x1", intToStr(line->x1())); + element->setAttribute("y1", intToStr(line->y1())); + element->setAttribute("x2", intToStr(line->x2())); + element->setAttribute("y2", intToStr(line->y2())); + } + + std::string WhiteboardElementSerializingVisitor::intToStr(const int t) { + std::stringstream ss; + ss << t; + return ss.str(); + } + + XMLElement::ref WhiteboardElementSerializingVisitor::getResult() const { + return element; + } + std::string WhiteboardSerializer::serializePayload(boost::shared_ptr<WhiteboardPayload> payload) const { XMLElement element("wb"); - element.addNode(XMLTextNode::ref(new XMLTextNode(payload->getData()))); + if (payload->getType() == WhiteboardPayload::Data) { + WhiteboardElementSerializingVisitor visitor; + payload->getElement()->accept(visitor); + element.addNode(visitor.getResult()); + } element.setAttribute("type", typeToString(payload->getType())); return element.serialize(); } |