Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #pragma once
00024
00025 #include "cinder/Cinder.h"
00026 #include "cinder/app/Event.h"
00027 #include "cinder/Vector.h"
00028
00029 #include <vector>
00030
00031 namespace cinder { namespace app {
00032
00034 class TouchEvent : public Event {
00035 public:
00036 class Touch {
00037 public:
00038 Touch() {}
00039 Touch( const Vec2f &pos, const Vec2f &prevPos, uint32_t id, double time, void *native )
00040 : mPos( pos ), mPrevPos( prevPos ), mId( id ), mTime( time ), mNative( native )
00041 {}
00042
00044 float getX() const { return mPos.x; }
00046 float getY() const { return mPos.y; }
00048 Vec2f getPos() const { return mPos; }
00050 float getPrevX() const { return mPrevPos.x; }
00052 float getPrevY() const { return mPrevPos.y; }
00054 Vec2f getPrevPos() const { return mPrevPos; }
00056 uint32_t getId() const { return mId; }
00058 double getTime() const { return mTime; }
00060 const void* getNative() const { return mNative; }
00061
00062 private:
00063 Vec2f mPos, mPrevPos;
00064 uint32_t mId;
00065 double mTime;
00066 void *mNative;
00067 };
00068
00069 TouchEvent()
00070 : Event()
00071 {}
00072 TouchEvent( WindowRef win, const std::vector<Touch> &touches )
00073 : Event( win ), mTouches( touches )
00074 {}
00075
00077 const std::vector<Touch>& getTouches() const { return mTouches; }
00079 std::vector<Touch>& getTouches() { return mTouches; }
00080
00081 private:
00082 std::vector<Touch> mTouches;
00083 bool mHandled;
00084 };
00085
00086 inline std::ostream& operator<<( std::ostream &out, const TouchEvent::Touch &touch )
00087 {
00088 out << touch.getId() << ": " << touch.getPos() << " @ " << touch.getTime() << "s";
00089 return out;
00090 }
00091
00092 inline std::ostream& operator<<( std::ostream &out, const TouchEvent &event )
00093 {
00094 out << "{" << std::endl;
00095 for( std::vector<TouchEvent::Touch>::const_iterator tIt = event.getTouches().begin(); tIt != event.getTouches().end(); ++tIt )
00096 out << " " << *tIt << std::endl;
00097 out << "}";
00098 return out;
00099 }
00100
00101 } }