summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Whiteboard')
-rw-r--r--Swiften/Whiteboard/Elements/WhiteboardElement.h21
-rw-r--r--Swiften/Whiteboard/Elements/WhiteboardElementVisitor.h17
-rw-r--r--Swiften/Whiteboard/Elements/WhiteboardLineElement.h47
-rw-r--r--Swiften/Whiteboard/IncomingWhiteboardSession.h4
-rw-r--r--Swiften/Whiteboard/WhiteboardSession.cpp7
-rw-r--r--Swiften/Whiteboard/WhiteboardSession.h2
6 files changed, 96 insertions, 2 deletions
diff --git a/Swiften/Whiteboard/Elements/WhiteboardElement.h b/Swiften/Whiteboard/Elements/WhiteboardElement.h
new file mode 100644
index 0000000..5095506
--- /dev/null
+++ b/Swiften/Whiteboard/Elements/WhiteboardElement.h
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2012 Mateusz Piękos
+ * Licensed under the simplified BSD license.
+ * See Documentation/Licenses/BSD-simplified.txt for more information.
+ */
+
+#pragma once
+
+#include <boost/shared_ptr.hpp>
+#include <Swiften/Whiteboard/Elements/WhiteboardElementVisitor.h>
+
+namespace Swift {
+ class WhiteboardElement {
+ public:
+ typedef boost::shared_ptr<WhiteboardElement> ref;
+
+ public:
+ virtual ~WhiteboardElement() {}
+ virtual void accept(WhiteboardElementVisitor& visitor) = 0;
+ };
+}
diff --git a/Swiften/Whiteboard/Elements/WhiteboardElementVisitor.h b/Swiften/Whiteboard/Elements/WhiteboardElementVisitor.h
new file mode 100644
index 0000000..b5fd546
--- /dev/null
+++ b/Swiften/Whiteboard/Elements/WhiteboardElementVisitor.h
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2012 Mateusz Piękos
+ * Licensed under the simplified BSD license.
+ * See Documentation/Licenses/BSD-simplified.txt for more information.
+ */
+
+#pragma once
+
+namespace Swift {
+ class WhiteboardLineElement;
+
+ class WhiteboardElementVisitor {
+ public:
+ virtual ~WhiteboardElementVisitor() {}
+ virtual void visit(const WhiteboardLineElement* /*element*/) = 0;
+ };
+}
diff --git a/Swiften/Whiteboard/Elements/WhiteboardLineElement.h b/Swiften/Whiteboard/Elements/WhiteboardLineElement.h
new file mode 100644
index 0000000..b64e397
--- /dev/null
+++ b/Swiften/Whiteboard/Elements/WhiteboardLineElement.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2012 Mateusz Piękos
+ * Licensed under the simplified BSD license.
+ * See Documentation/Licenses/BSD-simplified.txt for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Whiteboard/Elements/WhiteboardElement.h>
+
+namespace Swift {
+ class WhiteboardLineElement : public WhiteboardElement {
+ public:
+ typedef boost::shared_ptr<WhiteboardLineElement> ref;
+ public:
+ WhiteboardLineElement(int x1, int y1, int x2, int y2) {
+ x1_ = x1;
+ y1_ = y1;
+ x2_ = x2;
+ y2_ = y2;
+ }
+
+ int x1() const {
+ return x1_;
+ }
+
+ int y1() const {
+ return y1_;
+ }
+
+ int x2() const {
+ return x2_;
+ }
+
+ int y2() const {
+ return y2_;
+ }
+
+ void accept(WhiteboardElementVisitor& visitor) {
+ visitor.visit(this);
+ }
+
+ private:
+ int x1_, y1_, x2_, y2_;
+ std::string id;
+ };
+}
diff --git a/Swiften/Whiteboard/IncomingWhiteboardSession.h b/Swiften/Whiteboard/IncomingWhiteboardSession.h
index 3b15a49..a0d0b49 100644
--- a/Swiften/Whiteboard/IncomingWhiteboardSession.h
+++ b/Swiften/Whiteboard/IncomingWhiteboardSession.h
@@ -4,12 +4,12 @@
* See Documentation/Licenses/BSD-simplified.txt for more information.
*/
+#pragma once
+
#include <Swiften/Whiteboard/WhiteboardSession.h>
#include <boost/shared_ptr.hpp>
-#pragma once
-
namespace Swift {
class IncomingWhiteboardSession : public WhiteboardSession {
public:
diff --git a/Swiften/Whiteboard/WhiteboardSession.cpp b/Swiften/Whiteboard/WhiteboardSession.cpp
index bfef7c3..9e4fd9f 100644
--- a/Swiften/Whiteboard/WhiteboardSession.cpp
+++ b/Swiften/Whiteboard/WhiteboardSession.cpp
@@ -42,6 +42,13 @@ namespace Swift {
request->send();
}
+ void WhiteboardSession::sendElement(const WhiteboardElement::ref element) {
+ boost::shared_ptr<WhiteboardPayload> payload = boost::make_shared<WhiteboardPayload>();
+ payload->setElement(element);
+ boost::shared_ptr<GenericRequest<WhiteboardPayload> > request = boost::make_shared<GenericRequest<WhiteboardPayload> >(IQ::Set, toJID_, payload, router_);
+ request->send();
+ }
+
void WhiteboardSession::cancel() {
boost::shared_ptr<WhiteboardPayload> payload = boost::make_shared<WhiteboardPayload>(WhiteboardPayload::SessionTerminate);
boost::shared_ptr<GenericRequest<WhiteboardPayload> > request = boost::make_shared<GenericRequest<WhiteboardPayload> >(IQ::Set, toJID_, payload, router_);
diff --git a/Swiften/Whiteboard/WhiteboardSession.h b/Swiften/Whiteboard/WhiteboardSession.h
index 7aa67ca..fb4305c 100644
--- a/Swiften/Whiteboard/WhiteboardSession.h
+++ b/Swiften/Whiteboard/WhiteboardSession.h
@@ -11,6 +11,7 @@
#include <Swiften/JID/JID.h>
#include <Swiften/Base/boost_bsignals.h>
#include <Swiften/Queries/GenericRequest.h>
+#include <Swiften/Whiteboard/Elements/WhiteboardElement.h>
namespace Swift {
class IQRouter;
@@ -26,6 +27,7 @@ namespace Swift {
virtual ~WhiteboardSession();
void handleIncomingAction(boost::shared_ptr<WhiteboardPayload> payload);
void sendData(const std::string& data);
+ void sendElement(const WhiteboardElement::ref element);
void cancel();
const JID& getTo() const;