hxevent.h
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:18k
源码类别:

Symbian

开发平台:

Visual C++

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