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( const Vec2f &pos, const Vec2f &prevPos, uint32_t id, double time, void *native )
00039 : mPos( pos ), mPrevPos( prevPos ), mId( id ), mTime( time ), mNative( native ) {}
00040
00042 float getX() const { return mPos.x; }
00044 float getY() const { return mPos.y; }
00046 Vec2f getPos() const { return mPos; }
00048 float getPrevX() const { return mPrevPos.x; }
00050 float getPrevY() const { return mPrevPos.y; }
00052 Vec2f getPrevPos() const { return mPrevPos; }
00054 uint32_t getId() const { return mId; }
00056 double getTime() const { return mTime; }
00058 const void* getNative() const { return mNative; }
00059
00060 private:
00061 Vec2f mPos, mPrevPos;
00062 uint32_t mId;
00063 double mTime;
00064 void *mNative;
00065 };
00066
00067 TouchEvent() : Event() {}
00068 TouchEvent( const std::vector<Touch> &touches )
00069 : Event(), mTouches( touches )
00070 {}
00071
00073 const std::vector<Touch>& getTouches() const { return mTouches; }
00074
00075 private:
00076 std::vector<Touch> mTouches;
00077 };
00078
00079 inline std::ostream& operator<<( std::ostream &out, const TouchEvent::Touch &touch )
00080 {
00081 out << touch.getId() << ": " << touch.getPos() << " @ " << touch.getTime() << "s";
00082 return out;
00083 }
00084
00085 inline std::ostream& operator<<( std::ostream &out, const TouchEvent &event )
00086 {
00087 out << "{" << std::endl;
00088 for( std::vector<TouchEvent::Touch>::const_iterator tIt = event.getTouches().begin(); tIt != event.getTouches().end(); ++tIt )
00089 out << " " << *tIt << std::endl;
00090 out << "}";
00091 return out;
00092 }
00093
00094 } }