OnMouseMove


SUBMITTED BY: Guest

DATE: July 15, 2014, 1:55 p.m.

FORMAT: C++

SIZE: 6.7 kB

HITS: 627

  1. void CContourSliderManager::OnMouseMove( UINT nFlags, CPoint point)
  2. {
  3. Base::OnMouseMove(nFlags, point);
  4. bool xChange = false;
  5. bool yChange = false;
  6. int tempXPos = m_xPos;
  7. int tempYPos = m_yPos;
  8. int tempHeight = m_height;
  9. int tempWidth = m_width;
  10. m_nOperation = OperationNone;
  11. CWin* pWin;
  12. CBody* pBody = FindFirstBody();
  13. if ( pBody == NULL )
  14. return;
  15. pWin = pBody->GetWndInfo();
  16. // kde nastala udalost
  17. CDblPoint currPoint = PtToGL(*pWin, point, false);
  18. /*POSITION pos = FindBodyHeadPosition(currPoint, FIND_MESH_ELEMENT);
  19. if ( !pos )
  20. return;*/
  21. // kde nastala udalost OnMouseLDown
  22. CDblPoint startPoint = PtToGL(*pWin, m_mouseStart, false);
  23. CBodyMesh *pBodyMesh = (CBodyMesh*) FindBody(pBody->GetID());
  24. tag_BODYSIZE TrBody = pBodyMesh->GetTrBodySize();
  25. // indexy dlazdice, ve ktere nastala udalost
  26. CPoint tilePoint;
  27. tilePoint.x = currPoint.x / m_tileSizeX / pWin->GetSx() + m_sizeX / 2;
  28. tilePoint.y = currPoint.y / m_tileSizeY / pWin->GetSy() + m_sizeY / 2;
  29. if (!m_resizing)
  30. {
  31. //MOVING////////////////////////
  32. if( tilePoint.x > m_xPos + 0.5 &&
  33. tilePoint.x < m_xPos + m_width - 0.5 &&
  34. tilePoint.y > m_yPos + 0.5 &&
  35. tilePoint.y < m_yPos+m_height - 0.5)
  36. {
  37. m_nOperation = OperationMove;
  38. }
  39. //HORIZONTAL RESIZING
  40. else
  41. if( ((tilePoint.x <= m_xPos + 0.5 &&
  42. tilePoint.x >= m_xPos - 0.5) ||
  43. (tilePoint.x <= m_xPos + m_width + 0.5 &&
  44. tilePoint.x >= m_xPos + m_width - 0.5)) &&
  45. (tilePoint.y >= m_yPos + 0.5 &&
  46. tilePoint.y <= m_yPos+m_height - 0.5))
  47. {
  48. if(tilePoint.x <= m_xPos + 0.5)
  49. leftOrUp = true;
  50. else
  51. leftOrUp = false;
  52. m_nOperation = OperationResizeHorizontal;
  53. }
  54. //VERTICAL RESIZING
  55. /*else
  56. if (((tilePoint.y <= m_yPos + 0.5 &&
  57. tilePoint.y >= m_yPos - 0.5) ||
  58. (tilePoint.y <= m_yPos + m_height + 0.5 &&
  59. tilePoint.y >= m_yPos + m_height - 0.5)) &&
  60. (tilePoint.x >= m_xPos + 0.5 &&
  61. tilePoint.x <= m_xPos + m_width - 0.5))
  62. {
  63. if(tilePoint.y <=m_yPos+0.5)
  64. leftOrUp = true;
  65. else
  66. leftOrUp = false;
  67. m_nOperation = OperationResizeVertical;
  68. }
  69. //DIAGONAL RESIZING-TOP LEFT
  70. else
  71. if (tilePoint.y <= m_yPos + m_height + 0.5 &&
  72. tilePoint.y >= m_yPos + m_height - 0.5 &&
  73. tilePoint.x <= m_xPos + 0.5 &&
  74. tilePoint.x >= m_xPos - 0.5)
  75. {
  76. leftOrUp = true;
  77. m_nOperation = OperationResizeDiagonal;
  78. }
  79. //DIAGONAL RESIZING - BOOTOM RIGHT
  80. else
  81. if (tilePoint.y <= m_yPos + 0.5 &&
  82. tilePoint.y >= m_yPos - 0.5 &&
  83. tilePoint.x <= m_xPos + m_width + 0.5 &&
  84. tilePoint.x >= m_xPos + m_width - 0.5)
  85. {
  86. leftOrUp = false;
  87. m_nOperation = OperationResizeDiagonal;
  88. }
  89. //DIAGONAL RESIZING - TOP RIGHT
  90. else
  91. if (tilePoint.y <= m_yPos + m_height + 0.5 &&
  92. tilePoint.y >= m_yPos + m_height - 0.5 &&
  93. tilePoint.x <= m_xPos + m_width + 0.5 &&
  94. tilePoint.x >= m_xPos + m_width - 0.5)
  95. {
  96. leftOrUp = false;
  97. m_nOperation = OperationResizeDiagonalOther;
  98. }
  99. //DIAGONAL RESIZING - BOTTOM LEFT
  100. else
  101. if (tilePoint.y <= m_yPos + 0.5 &&
  102. tilePoint.y >= m_yPos - 0.5 &&
  103. tilePoint.x <= m_xPos + 0.5 &&
  104. tilePoint.x >= m_xPos - 0.5)
  105. {
  106. leftOrUp = true;
  107. m_nOperation = OperationResizeDiagonalOther;
  108. }*/
  109. }
  110. if (m_mouseDown)
  111. {
  112. m_xPos += (currPoint.x - startPoint.x) / m_tileSizeX / pWin->GetSx();
  113. m_yPos += (currPoint.y - startPoint.y) / m_tileSizeY / pWin->GetSy();
  114. Invalidate();
  115. }
  116. else
  117. if (m_resizingHorizontal)
  118. {
  119. if(leftOrUp)
  120. {
  121. m_xPos += (currPoint.x - startPoint.x) / m_tileSizeX / pWin->GetSx();
  122. m_width -= (currPoint.x - startPoint.x) / m_tileSizeX / pWin->GetSx();
  123. }
  124. else
  125. {
  126. m_width += (currPoint.x - startPoint.x) / m_tileSizeX / pWin->GetSx();
  127. }
  128. Invalidate();
  129. }
  130. else
  131. if (m_resizingVertical)
  132. {
  133. if(leftOrUp)
  134. {
  135. m_yPos += (currPoint.y - startPoint.y) / m_tileSizeY / pWin->GetSy();
  136. m_height -= (currPoint.y - startPoint.y) / m_tileSizeY / pWin->GetSy();
  137. }
  138. else
  139. {
  140. m_height += (currPoint.y - startPoint.y)/m_tileSizeY/pWin->GetSy();
  141. }
  142. Invalidate();
  143. }
  144. else
  145. if (m_resizingDiagonal)//TOP LEFT TO BOOTOM RIGHT
  146. {
  147. if (leftOrUp)
  148. {
  149. m_height += (currPoint.y - startPoint.y)/m_tileSizeY/pWin->GetSy();
  150. m_xPos += (currPoint.x - startPoint.x)/m_tileSizeX/pWin->GetSx();
  151. m_width -= (currPoint.x - startPoint.x)/m_tileSizeX/pWin->GetSx();
  152. }
  153. else
  154. {
  155. m_yPos += (currPoint.y - startPoint.y)/m_tileSizeY/pWin->GetSy();
  156. m_height -= (currPoint.y - startPoint.y)/m_tileSizeY/pWin->GetSy();
  157. m_width += (currPoint.x - startPoint.x)/m_tileSizeX/pWin->GetSx();
  158. }
  159. Invalidate();
  160. }
  161. else
  162. if (m_resizingDiagonalOther)//TOP RIGHT TO BOOTM LEFT
  163. {
  164. if (leftOrUp)
  165. {
  166. m_yPos += (currPoint.y - startPoint.y)/m_tileSizeY/pWin->GetSy();
  167. m_height -= (currPoint.y - startPoint.y)/m_tileSizeY/pWin->GetSy();
  168. m_xPos += (currPoint.x - startPoint.x)/m_tileSizeX/pWin->GetSx();
  169. m_width -= (currPoint.x - startPoint.x)/m_tileSizeX/pWin->GetSx();
  170. }
  171. else
  172. {
  173. m_width += (currPoint.x - startPoint.x)/m_tileSizeX/pWin->GetSx();
  174. m_height += (currPoint.y - startPoint.y)/m_tileSizeY/pWin->GetSy();
  175. }
  176. //m_mouseStart = point;
  177. Invalidate();
  178. }
  179. if (m_width < m_minWidth)
  180. {
  181. m_width = tempWidth;
  182. m_xPos = tempXPos;
  183. }
  184. else
  185. {
  186. m_mouseStart.x = point.x;
  187. }
  188. if (m_height < m_minHeight)
  189. {
  190. m_height = tempHeight;
  191. m_yPos = tempYPos;
  192. }
  193. else
  194. {
  195. m_mouseStart.y = point.y;
  196. }
  197. if (tilePoint.x < 0 || m_xPos <0)
  198. {
  199. m_xPos=0;
  200. m_width = tempWidth;
  201. xChange = true;
  202. }
  203. else
  204. if (tilePoint.x > m_sizeX ||m_xPos > m_sizeX - m_width)
  205. {
  206. m_width = tempWidth;
  207. m_xPos = m_sizeX-m_width;
  208. xChange = true;
  209. }
  210. if(tilePoint.y < 0 || m_yPos<0)
  211. {
  212. m_yPos=0;
  213. m_height = tempHeight;
  214. yChange = true;
  215. }
  216. else
  217. if (tilePoint.y > m_sizeY || m_yPos > m_sizeY - m_height)
  218. {
  219. m_height = tempHeight;
  220. m_yPos = m_sizeY-m_height;
  221. yChange = true;
  222. }
  223. if (!xChange)
  224. m_mouseStart.x = point.x;
  225. if (!yChange)
  226. m_mouseStart.y = point.y;
  227. }

comments powered by Disqus