hxevent.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:18k
源码类别:

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK ***** 
  2.  * Version: RCSL 1.0/RPSL 1.0 
  3.  *  
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
  5.  *      
  6.  * The contents of this file, and the files included with this file, are 
  7.  * subject to the current version of the RealNetworks Public Source License 
  8.  * Version 1.0 (the "RPSL") available at 
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed 
  10.  * the file under the RealNetworks Community Source License Version 1.0 
  11.  * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
  12.  * in which case the RCSL will apply. You may also obtain the license terms 
  13.  * directly from RealNetworks.  You may not use this file except in 
  14.  * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
  15.  * applicable to this file, the RCSL.  Please see the applicable RPSL or 
  16.  * RCSL for the rights, obligations and limitations governing use of the 
  17.  * contents of the file.  
  18.  *  
  19.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  20.  * developer of the Original Code and owns the copyrights in the portions 
  21.  * it created. 
  22.  *  
  23.  * This file, and the files included with this file, is distributed and made 
  24.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  25.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  26.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  27.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  28.  * 
  29.  * Technology Compatibility Kit Test Suite(s) Location: 
  30.  *    http://www.helixcommunity.org/content/tck 
  31.  * 
  32.  * Contributor(s): 
  33.  *  
  34.  * ***** END LICENSE BLOCK ***** */ 
  35. #if defined(_UNIX) && !defined(_MAC_UNIX) && !defined(QWS)
  36. #include "X11/keysymdef.h" //for the virtual key definitions below.
  37. #endif
  38. #ifndef _HXEVENT_H_
  39. #define _HXEVENT_H_
  40. #define HX_BASE_EVENT  0x00001000UL
  41. // --------------------------- SURFACE EVENTS --------------------------
  42. // This class of events are events sent to site users of windowless
  43. // sites to notify them of events on the site with platform independent
  44. // messages.
  45. #define HX_SURFACE_EVENTS      (HX_BASE_EVENT + 0x00001000)
  46. #define HX_SURFACE_UPDATE      (HX_SURFACE_EVENTS + 1)
  47. #define HX_SURFACE_MODE_CHANGE (HX_SURFACE_EVENTS + 2)
  48. #define HX_SURFACE_UPDATE2     (HX_SURFACE_EVENTS + 3)
  49. #define HX_SURFACE_NEXT_EVENT  (HX_SURFACE_EVENTS + 4)
  50. // HX_SURFACE_UPDATE is sent by the site to the renderer when the
  51. // surface has damage and needs to be updated.  The event struct is
  52. // filled out as follows:
  53. //
  54. //    ULONG32 event;      HX_SURFACE_UPDATE
  55. //    void*   window;     Native Window - may be null if no window is
  56. //                        associated with the site
  57. //    void*   param1;     IHXVideoSurface*
  58. //    void*   param2;     UNIX - HXxWindow, Mac/Win - UNUSED
  59. //    void*   result;     HRESULT result code of message handling
  60. //    BOOL    handled;    TRUE if handled, FALSE if not handled
  61. // HX_SURFACE_UPDATE2
  62. // --------------------
  63. //
  64. // This event is like HX_SURFACE_UPDATE except that it contains info
  65. // on the dirty rects/region assiciated with this site.
  66. // This event is passed before HX_SURFACE_UPDATE. If this event is not
  67. // handled it is converted into a HX_SURFACE_UPDATE and sent again.
  68. //
  69. // window  -- Native Window handle of the nearest parent window. May be NULL
  70. // param1  -- IHXVideoSurface* associated with this site.
  71. // param2  -- HXxExposeInfo* associated with this event. Defined in hxwintyp.h
  72. // result  -- Result code os message handling.
  73. // handled -- TRUE if handled, FALSE if not. If renderer returns TRUE for
  74. //            handled then the system will automatically validate the 
  75. //            entire client area associated with this video surface.
  76. // HX_SURFACE_MODE_CHANGE is sent by the site to the renderer when the
  77. // surface mode should be changed.  This event is optional, but for
  78. // best playback quality it should be processed.  The event struct is
  79. // filled out as follows:
  80. //
  81. //    ULONG32   event;      HX_SURFACE_MODE_CHANGE
  82. //    void*     window;     null
  83. //    void*     param1;     null
  84. //    void*     param2;     HX_VIDEOSURFACE1_RECOMMENDED or
  85. //                          HX_VIDEOSURFACE1_NOT_RECOMMENDED
  86. //    void*     result;     HRESULT result code of message handling
  87. //    BOOL      handled;    TRUE if handled, FALSE if not handled
  88. #define HX_VIDEOSURFACE1_RECOMMENDED       1         
  89. #define HX_VIDEOSURFACE1_NOT_RECOMMENDED   2
  90. //------------------------- MOUSE EVENTS ----------------------------
  91. // This class of events are sent to site users to
  92. // notify them of mouse events.
  93. // All mouse events have the event structure filled out as follows:
  94. //
  95. //    UINT32    event;
  96. //    void*     window;
  97. //    void*     param1;     HXxPoint struct with mouse position local to the renderer
  98. //    void*     param2;     UINT32 of flags for modifier keys
  99. //       BITS      DESCRIPTION
  100. //     -------   -------------------------------
  101. //        0       Shift key down while moving or clicking
  102. //        1       Control key down while moving or clicking
  103. //        2       Alt key donw while moving or clicking
  104. //        3       Primary mouse button down while moving.
  105. //        4       Context mouse button down while moving.
  106. //        5       Third mouse button down while moving.
  107. //    void*     result;     HRESULT result code of message handling
  108. //    BOOL      handled;    TRUE if handled, FALSE if not handled
  109. //
  110. #define HX_MOUSE_EVENTS        (HX_BASE_EVENT + 0x00002000)
  111. #define HX_SHIFT_KEY           (1<<0) //is the Shift key down while moving?
  112. #define HX_CTRL_KEY            (1<<1) //is the Control key down while moving?
  113. #define HX_ALT_COMMAND_KEY     (1<<2) //is the  Apple/Splat or PC/ALT key down?
  114. #define HX_PRIMARY_BUTTON      (1<<3) //Is the primary button down while moving?
  115. #define HX_CONTEXT_BUTTON      (1<<4) //is the context button down while moving?
  116. #define HX_THIRD_BUTTON        (1<<5) //is the third button down while moving?
  117. #define HX_PRIMARY_BUTTON_DOWN (HX_MOUSE_EVENTS + 1)
  118. #define HX_PRIMARY_BUTTON_UP   (HX_MOUSE_EVENTS + 2)
  119. #define HX_CONTEXT_BUTTON_DOWN (HX_MOUSE_EVENTS + 3)
  120. #define HX_CONTEXT_BUTTON_UP   (HX_MOUSE_EVENTS + 4)
  121. #define HX_MOUSE_MOVE          (HX_MOUSE_EVENTS + 5)
  122. #define HX_MOUSE_ENTER         (HX_MOUSE_EVENTS + 6)
  123. #define HX_MOUSE_LEAVE         (HX_MOUSE_EVENTS + 7)
  124. #define HX_THIRD_BUTTON_DOWN   (HX_MOUSE_EVENTS + 8)
  125. #define HX_THIRD_BUTTON_UP     (HX_MOUSE_EVENTS + 9)
  126. #define HX_SET_CURSOR          (HX_MOUSE_EVENTS + 10)
  127. #define HX_SET_STATUS          (HX_MOUSE_EVENTS + 11)
  128. #define HX_PRIMARY_DBLCLK      (HX_MOUSE_EVENTS + 12)
  129. #define HX_CONTEXT_DBLCLK      (HX_MOUSE_EVENTS + 13)
  130. #define HX_THIRD_DBLCLK        (HX_MOUSE_EVENTS + 14)
  131. // This class of events are sent to renderers to
  132. // notify them of the validation of the window
  133. // All window events have the event structure filled out as follows:
  134. //
  135. //    UINT32    event;
  136. //    void*     window;
  137. //    void*     UNUSED;
  138. //    void*     UNUSED;
  139. //    void*     result;     HRESULT result code of message handling
  140. //    BOOL      handled;    TRUE if handled, FALSE if not handled
  141. //
  142. #define HX_WINDOW_EVENTS       HX_BASE_EVENT + 0x00003000
  143. #define HX_ATTACH_WINDOW       HX_WINDOW_EVENTS + 1
  144. #define HX_DETACH_WINDOW       HX_WINDOW_EVENTS + 2
  145. // This class of events are sent to site users to
  146. // notify them of keyboard events.
  147. // All keyboard events have the event structure filled out as follows:
  148. //
  149. //    UINT32    event;
  150. //    void*     window;
  151. //    BOOL      handled;    TRUE if handled, FALSE if not handled
  152. //    void*     result;     HRESULT result code of message handling
  153. //    void *    param1;     Contents depends on keyboard event:
  154. //
  155. //HX_CHAR event.
  156. //    param1   Translated ASCII Char Code.
  157. //   --------  HX_CHAR events will have this as the translated char
  158. //             of the key acted upon and the result of any modifiers
  159. //             like the shift key, control key, caps lock, etc. If a
  160. //             virtual key has been pressed (like an arrow key) then
  161. //             param1 will be set to a HX_VK code representing the
  162. //             virtual key pressed and the bit-field in param2 will
  163. //             indicate that a virtual key was pressed.
  164. //HX_KEY_DOWN or HX_KEY_UP
  165. //    param1   Non-translated ASCII Char Code of the key pressed or
  166. //             released. 
  167. //   --------  
  168. //             This is the same as HX_CHAR except that the ASCII char
  169. //             has not been translated by the modifiers.
  170. //
  171. //    void *    param2;     Description bit field.
  172. //       BITS      DESCRIPTION
  173. //     -------   -------------------------------
  174. //     
  175. // WIN   0-7     OEM specific scan code.
  176. // UNIX  0-7     keycode. For 1-0x58 they equal scancode.
  177. //       8       Shift key down
  178. //       9       Control key down
  179. //       10      ALT key down or Apple/Splat key
  180. //       11      Caps-Lock on.
  181. //       12      Scroll-Lock on.
  182. //       13      Num-Lock on.
  183. //       14      1 if event represents a virtual key. 0 if not.
  184. //       15      1 if key came from the extended part of the keyboard.
  185. //               (ie right cntrl, right alt, keypad, etc).
  186. //       
  187. #define HX_KEYBOARD    HX_BASE_EVENT + 0x00004000
  188. #define HX_CHAR        HX_KEYBOARD + 1 //The translated key event
  189. #define HX_KEY_UP      HX_KEYBOARD + 2 //raw key release non-translated.
  190. #define HX_KEY_DOWN    HX_KEYBOARD + 3 //raw key down non-translated event.
  191. #define HX_SET_FOCUS   HX_KEYBOARD + 4
  192. #define HX_LOSE_FOCUS  HX_KEYBOARD + 5
  193. //
  194. // Keyboard event modifiers. Must correspond to the structure in
  195. // param2 above.
  196. //
  197. #define HX_NO_MODIFIERS      0
  198. #define HX_SHIFT_MASK        (1<<8)
  199. #define HX_CTRL_MASK         (1<<9)
  200. #define HX_ALT_MASK          (1<<10) //Also the apple spat key.
  201. #define HX_APPLE_SPLAT_MASK  HX_ALT_MASK
  202. #define HX_CAPS_LOCK_MASK    (1<<11)
  203. #define HX_NUM_LOCK_MASK     (1<<12)
  204. #define HX_SCROLL_LOCK_MASK  (1<<13)
  205. #define HX_VIRTUAL_KEY_MASK  (1<<14)
  206. #define HX_EXTENDED_KEY_MASK (1<<15)
  207. //
  208. // RMA virtual key definitions....
  209. //requires inclusion of the platform specific header files defining
  210. //these keys, if used. (ie, keysymdef.h on UNIX and winresrc.h on windows.
  211. //
  212. #if defined( _WINDOWS )
  213. #define HX_VK_LBUTTON        VK_LBUTTON        
  214. #define HX_VK_RBUTTON        VK_RBUTTON        
  215. #define HX_VK_CANCEL         VK_CANCEL         
  216. #define HX_VK_MBUTTON        VK_MBUTTON        
  217. #define HX_VK_BACK           VK_BACK           
  218. #define HX_VK_TAB            VK_TAB            
  219. #define HX_VK_CLEAR          VK_CLEAR          
  220. #define HX_VK_RETURN         VK_RETURN         
  221. #define HX_VK_SHIFT          VK_SHIFT          
  222. #define HX_VK_CONTROL        VK_CONTROL        
  223. #define HX_VK_MENU           VK_MENU           
  224. #define HX_VK_PAUSE          VK_PAUSE          
  225. #define HX_VK_CAPITAL        VK_CAPITAL        
  226. #define HX_VK_ESCAPE         VK_ESCAPE         
  227. #define HX_VK_SPACE          VK_SPACE          
  228. #define HX_VK_PRIOR          VK_PRIOR          
  229. #define HX_VK_NEXT           VK_NEXT           
  230. #define HX_VK_END            VK_END            
  231. #define HX_VK_HOME           VK_HOME           
  232. #define HX_VK_LEFT           VK_LEFT           
  233. #define HX_VK_UP             VK_UP             
  234. #define HX_VK_RIGHT          VK_RIGHT          
  235. #define HX_VK_DOWN           VK_DOWN           
  236. #define HX_VK_SELECT         VK_SELECT
  237. #define HX_VK_EXECUTE        VK_EXECUTE        
  238. #define HX_VK_SNAPSHOT       VK_SNAPSHOT       
  239. #define HX_VK_INSERT         VK_INSERT         
  240. #define HX_VK_DELETE         VK_DELETE         
  241. #define HX_VK_HELP           VK_HELP           
  242. #define HX_VK_LWIN           VK_LWIN           
  243. #define HX_VK_RWIN           VK_RWIN           
  244. #define HX_VK_APPS           VK_APPS           
  245. #define HX_VK_NUMPAD0        VK_NUMPAD0        
  246. #define HX_VK_NUMPAD1        VK_NUMPAD1        
  247. #define HX_VK_NUMPAD2        VK_NUMPAD2        
  248. #define HX_VK_NUMPAD3        VK_NUMPAD3        
  249. #define HX_VK_NUMPAD4        VK_NUMPAD4        
  250. #define HX_VK_NUMPAD5        VK_NUMPAD5        
  251. #define HX_VK_NUMPAD6        VK_NUMPAD6        
  252. #define HX_VK_NUMPAD7        VK_NUMPAD7        
  253. #define HX_VK_NUMPAD8        VK_NUMPAD8        
  254. #define HX_VK_NUMPAD9        VK_NUMPAD9        
  255. #define HX_VK_MULTIPLY       VK_MULTIPLY       
  256. #define HX_VK_ADD            VK_ADD            
  257. #define HX_VK_SEPARATOR      VK_SEPARATOR      
  258. #define HX_VK_SUBTRACT       VK_SUBTRACT       
  259. #define HX_VK_DECIMAL        VK_DECIMAL        
  260. #define HX_VK_DIVIDE         VK_DIVIDE         
  261. #define HX_VK_F1             VK_F1             
  262. #define HX_VK_F2             VK_F2             
  263. #define HX_VK_F3             VK_F3             
  264. #define HX_VK_F4             VK_F4             
  265. #define HX_VK_F5             VK_F5             
  266. #define HX_VK_F6             VK_F6             
  267. #define HX_VK_F7             VK_F7             
  268. #define HX_VK_F8             VK_F8             
  269. #define HX_VK_F9             VK_F9             
  270. #define HX_VK_F10            VK_F10            
  271. #define HX_VK_F11            VK_F11            
  272. #define HX_VK_F12            VK_F12            
  273. #define HX_VK_F13            VK_F13            
  274. #define HX_VK_F14            VK_F14            
  275. #define HX_VK_F15            VK_F15            
  276. #define HX_VK_F16            VK_F16            
  277. #define HX_VK_F17            VK_F17            
  278. #define HX_VK_F18            VK_F18            
  279. #define HX_VK_F19            VK_F19            
  280. #define HX_VK_F20            VK_F20            
  281. #define HX_VK_F21            VK_F21            
  282. #define HX_VK_F22            VK_F22            
  283. #define HX_VK_F23            VK_F23            
  284. #define HX_VK_F24            VK_F24            
  285. #define HX_VK_NUMLOCK        VK_NUMLOCK        
  286. #define HX_VK_SCROLL         VK_SCROLL         
  287. #elif defined(_UNIX) && !defined(_MAC_UNIX)
  288. #define HX_VK_LBUTTON        XK_Pointer_Button1
  289. #define HX_VK_RBUTTON        XK_Pointer_Button2
  290. #define HX_VK_CANCEL         XK_Cancel
  291. #define HX_VK_MBUTTON        XK_Pointer_Button3
  292. #define HX_VK_BACK           XK_BackSpace
  293. #define HX_VK_TAB            XK_Tab
  294. #define HX_VK_CLEAR          XK_Begin     //Usually '5' on the keypad.
  295. #define HX_VK_RETURN         XK_Return    //XK_KP_Enter will be mapped to this.
  296. #define HX_VK_SHIFT          XK_Shift_L   //XK_Shift_R will be translated to _L
  297. #define HX_VK_CONTROL        XK_Control_L //XK_Control_R will be mapped to _L
  298. #define HX_VK_MENU           XK_Alt_L     //XK_Alt_R will be mapped to _L
  299. #define HX_VK_PAUSE          XK_Pause
  300. #define HX_VK_CAPITAL        XK_Caps_Lock
  301. #define HX_VK_ESCAPE         XK_Escape
  302. #define HX_VK_SPACE          XK_space
  303. #define HX_VK_PRIOR          XK_Prior     //XK_KP_Prior wil be mapped to this.
  304. #define HX_VK_NEXT           XK_Next      //XK_KP_Next wil be mapped to this.
  305. #define HX_VK_END            XK_End       //XK_KP_End wil be mapped to this.
  306. #define HX_VK_HOME           XK_Home      //XK_KP_Home will be mapped to this.
  307. #define HX_VK_LEFT           XK_Left      //XK_KP_Left will be mapped to this.
  308. #define HX_VK_UP             XK_Up        //XK_KP_Up will be mapped to this.
  309. #define HX_VK_RIGHT          XK_Right     //XK_KP_Right will be mapped to this.
  310. #define HX_VK_DOWN           XK_Down      //XK_KP_Down will be mapped to this.
  311. #define HX_VK_SELECT         XK_Select
  312. #define HX_VK_EXECUTE        XK_Execute
  313. #define HX_VK_SNAPSHOT       XK_Print     //Not supported.
  314. #define HX_VK_INSERT         XK_Insert    //XK_KP_Insert will be mapped to this.
  315. #define HX_VK_DELETE         XK_Delete    //XK_KP_Delete will be mapped to this.
  316. #define HX_VK_HELP           XK_Help
  317. #define HX_VK_LWIN           XK_Meta_L
  318. #define HX_VK_RWIN           XK_Meta_R
  319. #define HX_VK_APPS           XK_VoidSymbol //Not used.......
  320. #define HX_VK_NUMPAD0        XK_KP_0
  321. #define HX_VK_NUMPAD1        XK_KP_1
  322. #define HX_VK_NUMPAD2        XK_KP_2
  323. #define HX_VK_NUMPAD3        XK_KP_3
  324. #define HX_VK_NUMPAD4        XK_KP_4
  325. #define HX_VK_NUMPAD5        XK_KP_5
  326. #define HX_VK_NUMPAD6        XK_KP_6
  327. #define HX_VK_NUMPAD7        XK_KP_7
  328. #define HX_VK_NUMPAD8        XK_KP_8
  329. #define HX_VK_NUMPAD9        XK_KP_9
  330. #define HX_VK_MULTIPLY       XK_KP_Multiply
  331. #define HX_VK_ADD            XK_KP_Add
  332. #define HX_VK_SEPARATOR      XK_KP_Separator
  333. #define HX_VK_SUBTRACT       XK_KP_Subtract
  334. #define HX_VK_DECIMAL        XK_KP_Decimal
  335. #define HX_VK_DIVIDE         XK_KP_Divide
  336. #define HX_VK_F1             XK_F1
  337. #define HX_VK_F2             XK_F2
  338. #define HX_VK_F3             XK_F3
  339. #define HX_VK_F4             XK_F4
  340. #define HX_VK_F5             XK_F5
  341. #define HX_VK_F6             XK_F6
  342. #define HX_VK_F7             XK_F7
  343. #define HX_VK_F8             XK_F8
  344. #define HX_VK_F9             XK_F9
  345. #define HX_VK_F10            XK_F10
  346. #define HX_VK_F11            XK_F11
  347. #define HX_VK_F12            XK_F12
  348. #define HX_VK_F13            XK_F13
  349. #define HX_VK_F14            XK_F14
  350. #define HX_VK_F15            XK_F15
  351. #define HX_VK_F16            XK_F16
  352. #define HX_VK_F17            XK_F17
  353. #define HX_VK_F18            XK_F18
  354. #define HX_VK_F19            XK_F19
  355. #define HX_VK_F20            XK_F20
  356. #define HX_VK_F21            XK_F21
  357. #define HX_VK_F22            XK_F22
  358. #define HX_VK_F23            XK_F23
  359. #define HX_VK_F24            XK_F24
  360. #define HX_VK_NUMLOCK        XK_Num_Lock
  361. #define HX_VK_SCROLL         XK_Scroll_Lock
  362. #endif
  363. // Each event class should have a comment describing the kinds
  364. // of events that belong to this class
  365. // The next event class should use this base:
  366. #define HX_NEXT_EVENT_CLASS    HX_BASE_EVENT + 0x00005000
  367. // $Private:
  368. #ifdef _WINDOWS
  369. // NH: embeded players need this to tell our IHXSiteWindowed implementation 
  370. // when the site is moved in the browser
  371. #define MSG_EMBEDEDSITEMOVING   "EmbededSiteWindowMovingMsg"
  372. #endif
  373. // $EndPrivate.
  374. #endif // _HXEVENT_H_