event.monkey2 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. Namespace mojo.app
  2. #rem monkeydoc Event types.
  3. | EventType | Description
  4. |:------------------|:-----------
  5. | KeyDown | Key down event.
  6. | KeyRepeat | Key repeat event.
  7. | KeyUp | Key up event.
  8. | KeyChar | Key char event.
  9. | MouseDown | Mouse button down event.
  10. | MouseClick | Mouse left click event.
  11. | MouseRightClick | Mouse right click event.
  12. | MouseDoubleClick | Mouse double left click event.
  13. | MouseUp | Mouse button up event.
  14. | MouseMove | Mouse movement event.
  15. | MouseWheel | Mouse wheel event.
  16. | MouseEnter | Mouse enter event.
  17. | MouseLeave | Mouse leave event.
  18. | WindowClose | Window close clicked event.
  19. | WindowMoved | Window moved event.
  20. | WindowResized | Window resized event.
  21. | WindowGainedFocus | Window gained input focus.
  22. | WindowLostFocus | Window lost input focus.
  23. #end
  24. Enum EventType
  25. KeyDown,
  26. KeyRepeat,
  27. KeyUp,
  28. KeyChar,
  29. MouseDown,
  30. MouseClick,
  31. MouseRightClick,
  32. MouseDoubleClick,
  33. MouseUp,
  34. MouseMove,
  35. MouseWheel,
  36. MouseEnter,
  37. MouseLeave,
  38. TouchDown,
  39. TouchUp,
  40. TouchMove,
  41. WindowClose,
  42. WindowMoved,
  43. WindowResized,
  44. WindowGainedFocus,
  45. WindowLostFocus,
  46. WindowMaximized,
  47. WindowMinimized,
  48. WindowRestored,
  49. WindowSwapped,
  50. WindowVSync
  51. Eaten=$40000000
  52. End
  53. #rem monkeydoc The Event class.
  54. #end
  55. Class Event Abstract
  56. #rem monkedoc The event type.
  57. #end
  58. Property Type:EventType()
  59. Return _type
  60. End
  61. #rem monkeydoc The event view.
  62. #end
  63. Property View:View()
  64. Return _view
  65. End
  66. #rem monkeydoc True if event has been eaten.
  67. #end
  68. Property Eaten:Bool()
  69. Return (_type & EventType.Eaten)<>Null
  70. End
  71. #rem monkeydoc Eats the event.
  72. #end
  73. Method Eat()
  74. _type|=EventType.Eaten
  75. End
  76. Protected
  77. #rem monkeydoc @hidden
  78. #end
  79. Field _type:EventType
  80. #rem monkeydoc @hidden
  81. #end
  82. Field _view:View
  83. #rem monkeydoc @hidden
  84. #end
  85. Method New( type:EventType,view:View )
  86. _type=type
  87. _view=view
  88. End
  89. End
  90. #rem monkeydoc The KeyEvent class.
  91. #end
  92. Class KeyEvent Extends Event
  93. #rem monkeydoc Creates a new key event.
  94. #end
  95. Method New( type:EventType,view:View,key:Key,rawKey:Key,modifiers:Modifier,text:String )
  96. Super.New( type,view )
  97. _key=key
  98. _rawKey=rawKey
  99. _modifiers=modifiers
  100. _text=text
  101. End
  102. #rem monkeydoc The key involved in the event.
  103. #end
  104. Property Key:Key()
  105. Return _key
  106. End
  107. #rem monkeydoc The raw key involved in the event.
  108. #end
  109. Property RawKey:Key()
  110. Return _rawKey
  111. End
  112. #rem monkeydoc The modifiers at the time of the event.
  113. #end
  114. Property Modifiers:Modifier()
  115. Return _modifiers
  116. End
  117. #rem monkeydoc The text for [[EventType.KeyChar]] events.
  118. #end
  119. Property Text:String()
  120. Return _text
  121. End
  122. Private
  123. Field _key:Key
  124. Field _rawKey:Key
  125. Field _modifiers:Modifier
  126. Field _text:String
  127. End
  128. #rem monkeydoc The MouseEvent class.
  129. #end
  130. Class MouseEvent Extends Event
  131. #rem monkeydoc Creates a new mouse event.
  132. #end
  133. Method New( type:EventType,view:View,location:Vec2i,button:MouseButton,wheel:Vec2i,modifiers:Modifier,clicks:Int )
  134. Super.New( type,view )
  135. _location=location
  136. _button=button
  137. _wheel=wheel
  138. _modifiers=modifiers
  139. _clicks=clicks
  140. End
  141. #rem monkeydoc Mouse location in View.
  142. #end
  143. Property Location:Vec2i()
  144. Return _location
  145. End
  146. #rem monkeydoc Mouse button.
  147. #end
  148. Property Button:MouseButton()
  149. Return _button
  150. End
  151. #rem monkeydoc Mouse wheel deltas.
  152. #end
  153. Property Wheel:Vec2i()
  154. Return _wheel
  155. End
  156. #rem monkeydoc Event modifiers.
  157. #end
  158. Property Modifiers:Modifier()
  159. Return _modifiers
  160. End
  161. #rem monkeydoc Number of mouse clicks.
  162. #end
  163. Property Clicks:Int()
  164. Return _clicks
  165. End
  166. #rem monkeydoc Transforms mouse event to different view.
  167. #end
  168. Method TransformToView:MouseEvent( view:View )
  169. If view=_view Return self
  170. Local location:=view.TransformPointFromView( _location,_view )
  171. Return New MouseEvent( _type,view,location,_button,_wheel,_modifiers,_clicks )
  172. End
  173. Private
  174. Field _location:Vec2i
  175. Field _button:MouseButton
  176. Field _wheel:Vec2i
  177. Field _modifiers:Modifier
  178. Field _clicks:Int
  179. End
  180. #rem monkeydoc The TouchEvent class.
  181. #end
  182. Class TouchEvent Extends Event
  183. #rem monkeydoc Creates a new touch event.
  184. #end
  185. Method New( type:EventType,view:View,location:Vec2i,finger:int,pressure:Float )
  186. Super.New( type,view )
  187. _location=location
  188. _finger=finger
  189. _pressure=pressure
  190. End
  191. #rem monkeydoc Finger location in view.
  192. #end
  193. Property Location:Vec2i()
  194. Return _location
  195. End
  196. #rem monkeydoc Finger index (0-9).
  197. #end
  198. Property Finger:Int()
  199. Return _finger
  200. End
  201. #rem monkeydoc Finger pressure (0-1).
  202. #end
  203. Property Pressure:Float()
  204. Return _pressure
  205. End
  206. #rem monkeydoc Transforms touch event to different view.
  207. #end
  208. Method TransformToView:TouchEvent( view:View )
  209. If view=_view return Self
  210. Local location:=view.TransformPointFromView( _location,_view )
  211. Return New TouchEvent( _type,view,location,_finger,_pressure )
  212. End
  213. Private
  214. Field _location:Vec2i
  215. Field _finger:Int
  216. field _pressure:Float
  217. End
  218. #rem monkeydoc The WindowEvent class.
  219. #end
  220. Class WindowEvent Extends Event
  221. #rem monkeydoc Creates a new window event.
  222. #end
  223. Method New( type:EventType,window:Window )
  224. Super.New( type,window )
  225. _window=window
  226. End
  227. #rem monkeydoc The window the event was sent to.
  228. #end
  229. Property Window:Window()
  230. Return _window
  231. End
  232. Private
  233. Field _window:Window
  234. End