Changeset 567
- Timestamp:
- 05/17/11 14:52:24 (12 months ago)
- Location:
- trunk/avango-display
- Files:
-
- 7 edited
-
include/avango/display/mt/MultitouchDevice.h (modified) (1 diff)
-
include/avango/display/mt/MultitouchFinger.h (modified) (1 diff)
-
src/avango/display/mt/MultitouchDevice.cpp (modified) (6 diffs)
-
src/avango/display/mt/MultitouchFinger.cpp (modified) (1 diff)
-
src/avango/display/mt/multitouch/FingerClient.cpp (modified) (5 diffs)
-
src/avango/display/mt/multitouch/FingerInfo.cpp (modified) (2 diffs)
-
src/avango/display/mt/multitouch/FingerInfo.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/avango-display/include/avango/display/mt/MultitouchDevice.h
r351 r567 78 78 int finger_id; 79 79 Vec2 position; 80 float angle, width, height, area; 80 81 Link<MultitouchFinger> finger; 81 82 FingerAction(int _finger_id = -1) : do_add(false), do_move(false), do_remove(false), finger_id(_finger_id) -
trunk/avango-display/include/avango/display/mt/MultitouchFinger.h
r351 r567 44 44 45 45 public: 46 MultitouchFinger(int _id = -1, OsgVec2 _position = OsgVec2(), float _creationTime= 0.0 );46 MultitouchFinger(int _id = -1, OsgVec2 _position = OsgVec2(), float _creationTime= 0.0, float _angle = 0.0, float _width = 0.0, float _height = 0.0, float _area = 0.0); 47 47 virtual ~MultitouchFinger(); 48 48 49 49 av::SFInt Identifier; 50 50 av::osg::SFVec2 Position; 51 av::SFFloat Angle, Width, Height, Area; 51 52 av::SFFloat CreationTime; 52 53 -
trunk/avango-display/src/avango/display/mt/MultitouchDevice.cpp
r353 r567 110 110 if (action.do_add) 111 111 { 112 action.finger = new MultitouchFinger(action.finger_id, ::osg::Vec2(action.position.x, action.position.y), time );112 action.finger = new MultitouchFinger(action.finger_id, ::osg::Vec2(action.position.x, action.position.y), time, action.angle, action.width, action.height, action.area); 113 113 Added.add1Value(action.finger); 114 114 action.do_add = false; … … 117 117 { 118 118 action.finger->Position.setValue(::osg::Vec2(action.position.x, action.position.y)); 119 action.finger->Angle.setValue(action.angle); 120 action.finger->Width.setValue(action.width); 121 action.finger->Height.setValue(action.height); 122 action.finger->Area.setValue(action.area); 119 123 action.do_move = false; 120 124 } … … 122 126 { 123 127 action.finger->Position.setValue(::osg::Vec2(action.position.x, action.position.y)); 128 action.finger->Angle.setValue(action.angle); 129 action.finger->Width.setValue(action.width); 130 action.finger->Height.setValue(action.height); 131 action.finger->Area.setValue(action.area); 124 132 Available.remove1Value(action.finger); 125 133 Removed.add1Value(action.finger); … … 146 154 FingerAction &action = iter->second; 147 155 action.position = Filtering.getValue() ? pFingerInfo->getFilteredPosition() : pFingerInfo->getPosition(); 156 action.angle = pFingerInfo->getAngle(); 157 action.width = pFingerInfo->getWidth(); 158 action.height = pFingerInfo->getHeight(); 159 action.area = pFingerInfo->getArea(); 148 160 action.do_add = true; 149 161 } … … 160 172 FingerAction &action = iter->second; 161 173 action.position = Filtering.getValue() ? pFingerInfo->getFilteredPosition() : pFingerInfo->getPosition(); 174 action.angle = pFingerInfo->getAngle(); 175 action.width = pFingerInfo->getWidth(); 176 action.height = pFingerInfo->getHeight(); 177 action.area = pFingerInfo->getArea(); 162 178 action.do_move = true; 163 179 } … … 180 196 // if a finger was added officially, it has to go through all the states correctly, so tag them here for remove 181 197 action.position = Filtering.getValue() ? pFingerInfo->getFilteredPosition() : pFingerInfo->getPosition(); 198 action.angle = pFingerInfo->getAngle(); 199 action.width = pFingerInfo->getWidth(); 200 action.height = pFingerInfo->getHeight(); 201 action.area = pFingerInfo->getArea(); 182 202 action.do_remove = true; 183 203 } -
trunk/avango-display/src/avango/display/mt/MultitouchFinger.cpp
r353 r567 38 38 AV_FIELD_DEFINE(av::display::mt::MFMultitouchFinger); 39 39 40 av::display::mt::MultitouchFinger::MultitouchFinger(int _id, ::osg::Vec2 _position, float _creationTime )40 av::display::mt::MultitouchFinger::MultitouchFinger(int _id, ::osg::Vec2 _position, float _creationTime, float _angle, float _width, float _height, float _area) 41 41 { 42 42 AV_FC_ADD_FIELD(Identifier, _id); 43 43 AV_FC_ADD_FIELD(Position, _position); 44 44 AV_FC_ADD_FIELD(CreationTime, _creationTime); 45 AV_FC_ADD_FIELD(Angle, _angle); 46 AV_FC_ADD_FIELD(Width, _width); 47 AV_FC_ADD_FIELD(Height, _height); 48 AV_FC_ADD_FIELD(Area, _area); 45 49 } 46 50 -
trunk/avango-display/src/avango/display/mt/multitouch/FingerClient.cpp
r353 r567 97 97 osc::ReceivedMessageArgumentStream args = message.ArgumentStream(); 98 98 99 if (strcmp(message.AddressPattern(), "/tuio/2Dcur") == 0) 99 if (strcmp(message.AddressPattern(), "/tuio/2Dcur") == 0 100 || strcmp(message.AddressPattern(), "/tuio/2Dobj") == 0 101 || strcmp(message.AddressPattern(), "/tuio/2Dblb") == 0) 100 102 { 101 103 const char *cmd; … … 146 148 FingerClient::ProcessMessage(const osc::ReceivedMessage &message, const IpEndpointName &remoteEndpoint) 147 149 { 148 if (strcmp(message.AddressPattern(), "/tuio/2Dcur") == 0) 150 bool isBlob = false, isObject = false, isValid = true; 151 if(strcmp(message.AddressPattern(), "/tuio/2Dobj") == 0) 152 isObject = true; 153 else if(strcmp(message.AddressPattern(), "/tuio/2Dblb") == 0) 154 isBlob = true; 155 else if (strcmp(message.AddressPattern(), "/tuio/2Dcur") != 0) 156 isValid = false; 157 158 if(isValid) 149 159 { 150 160 osc::ReceivedMessageArgumentStream args = message.ArgumentStream(); … … 155 165 if (strcmp(cmd, "set") == 0) 156 166 { 157 osc::int32 s_id; 158 float xpos, ypos, xspeed, yspeed, maccel; 159 160 args >> s_id >> xpos >> ypos >> xspeed >> yspeed >> maccel >> osc::EndMessage; 167 static osc::int32 s_id, i_id; 168 static float xpos, ypos, xspeed, yspeed, maccel; 169 static float angle, width, height, area, rotSpeed, rotAccel; 170 171 if(isBlob) 172 args >> s_id >> xpos >> ypos >> angle >> width >> height >> area >> xspeed >> yspeed >> rotSpeed >> maccel >> rotAccel >> osc::EndMessage; 173 else if(isObject) 174 args >> s_id >> i_id >> xpos >> ypos >> angle >> xspeed >> yspeed >> rotSpeed >> maccel >> rotAccel >> osc::EndMessage; 175 else 176 args >> s_id >> xpos >> ypos >> xspeed >> yspeed >> maccel >> osc::EndMessage; 161 177 162 178 std::map<osc::int32, FingerInfo*>::iterator iter = cursor_id_map.find(s_id); … … 171 187 fingerlistener_secure = fingerlistener; 172 188 fingerinfo->setPositionHistorySize(historysize); 189 if(isBlob) 190 { 191 fingerinfo->setAngle(angle); 192 fingerinfo->setWidthHeightArea(width, height, area); 193 } 194 else if(isObject) 195 fingerinfo->setAngle(angle); 173 196 } 174 197 cursor_id_map[s_id] = fingerinfo; … … 189 212 fingerlistener_secure = fingerlistener; 190 213 fingerinfo->setPositionHistorySize(historysize); 214 if(isBlob) 215 { 216 fingerinfo->setAngle(angle); 217 fingerinfo->setWidthHeightArea(width, height, area); 218 } 219 else if(isObject) 220 fingerinfo->setAngle(angle); 191 221 } 192 222 fingerinfo->addPosition(pos); -
trunk/avango-display/src/avango/display/mt/multitouch/FingerInfo.cpp
r353 r567 22 22 FingerInfo::FingerInfo(int id, Vec2 position) : 23 23 m_iFingerId(id), 24 m_iHistorySize(0) 24 m_iHistorySize(0), 25 m_angle(0), 26 m_width(0), 27 m_height(0), 28 m_area(0) 25 29 { 26 30 // first position … … 35 39 } 36 40 41 float FingerInfo::getAngle() const { return m_angle; } 42 void FingerInfo::setAngle(const float angle) { m_angle = angle; } 43 44 float FingerInfo::getWidth() const { return m_width; } 45 float FingerInfo::getHeight() const { return m_height; } 46 float FingerInfo::getArea() const { return m_area; } 47 void FingerInfo::setWidthHeightArea(const float width, const float height, const float area) 48 { 49 m_width = width; 50 m_height = height; 51 m_area = area; 52 } 37 53 38 54 void -
trunk/avango-display/src/avango/display/mt/multitouch/FingerInfo.h
r353 r567 28 28 Vec2 getFilteredPosition(); 29 29 30 float getAngle() const; 31 void setAngle(const float angle); 32 33 float getWidth() const; 34 float getHeight() const; 35 float getArea() const; 36 void setWidthHeightArea(const float width, const float height, const float area); 37 30 38 void setPositionHistorySize(unsigned int size); 31 39 … … 34 42 35 43 int m_iFingerId; 44 float m_angle, m_width, m_height, m_area; 36 45 37 46 unsigned int m_iHistorySize;
Note: See TracChangeset
for help on using the changeset viewer.
