/* * Copyright (c) 2012 Yoann Blein * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #pragma once #include #include #include namespace Swift { class InputEventPayload : public Payload { public: typedef boost::shared_ptr ref; enum Action { Notify, Unknown, }; struct Event { enum EventType { MouseMove, MouseWheel, MousePress, MouseRelease, KeyType, KeyPress, KeyRelease, Unknown, }; Event(EventType eventType = Unknown) : type(eventType), integerArg(0), realArg1(0), realArg2(0) {} Event(EventType eventType, int integerArg) : type(eventType), integerArg(integerArg), realArg1(0), realArg2(0) {} Event(EventType eventType, float realArg1, float realArg2) : type(eventType), integerArg(0), realArg1(realArg1), realArg2(realArg2) {} EventType type; int integerArg; float realArg1; float realArg2; }; public: InputEventPayload(); void addEvent(const Event& event); const std::vector& getEvents() const; void setAction(Action action); Action getAction() const; private: Action action_; std::vector events_; }; }