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

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. #ifndef _HXWINTYP_H_
  36. #define _HXWINTYP_H_
  37. #include "hxtypes.h" /* Needed at least for various defines and types. */
  38. #ifdef _WIN16
  39. #define BI_BITFIELDS 3L
  40. #endif
  41. #ifdef _SYMBIAN
  42. #include <coemain.h>
  43. #include <w32std.h>
  44. #endif
  45. /****************************************************************************
  46.  * 
  47.  *  Structure:
  48.  *
  49.  * HXxSize
  50.  *
  51.  *  Purpose:
  52.  *
  53.  * Cross Platform definition of a size.
  54.  *
  55.  */
  56. typedef struct HXEXPORT_CLASS _HXxSize
  57. {
  58.     INT32   cx;
  59.     INT32   cy;
  60. } HXxSize;
  61. #ifdef __cplusplus
  62. inline BOOL operator ==( const HXxSize& a, const HXxSize& b )
  63. {
  64.     return ( a.cx == b.cx ) && ( a.cy == b.cy );
  65. }
  66. inline BOOL operator !=( const HXxSize& a, const HXxSize& b )
  67. {
  68.     return !( a == b );
  69. }
  70. #endif // __cplusplus
  71. /****************************************************************************
  72.  * 
  73.  *  Structure:
  74.  *
  75.  * HXxPoint
  76.  *
  77.  *  Purpose:
  78.  *
  79.  * Cross Platform definition of a point.
  80.  *
  81.  */
  82. typedef struct HXEXPORT_CLASS _HXxPoint
  83. {
  84.     INT32   x;
  85.     INT32   y;
  86. } HXxPoint;
  87. #ifdef __cplusplus
  88. inline BOOL operator ==( const HXxPoint& a, const HXxPoint& b )
  89. {
  90.     return ( a.x == b.x ) && ( a.y == b.y );
  91. }
  92. inline BOOL operator !=( const HXxPoint& a, const HXxPoint& b )
  93. {
  94.     return !( a == b );
  95. }
  96. #endif // __cplusplus
  97. /****************************************************************************
  98.  * 
  99.  *  Structure:
  100.  *
  101.  * HXxRect
  102.  *
  103.  *  Purpose:
  104.  *
  105.  * Cross Platform definition of a rectangle.
  106.  *
  107.  */
  108. typedef struct HXEXPORT_CLASS _HXxRect
  109. {
  110.     INT32   left;
  111.     INT32   top;
  112.     INT32   right;
  113.     INT32   bottom;
  114. } HXxRect;
  115. #define HXxRECT_WIDTH(r) ((r).right - (r).left)
  116. #define HXxRECT_HEIGHT(r) ((r).bottom - (r).top)
  117. #ifdef __cplusplus
  118. inline BOOL operator ==( const HXxRect& a, const HXxRect& b )
  119. {
  120.     return ( a.left == b.left ) && 
  121.     ( a.top == b.top ) && 
  122.     ( a.right == b.right ) && 
  123.     ( a.bottom == b.bottom );
  124. }
  125. inline BOOL operator !=( const HXxRect& a, const HXxRect& b )
  126. {
  127.     return !( a == b );
  128. }
  129. inline BOOL HXxRect_IsEmpty( const HXxRect& rect )
  130. {
  131.     return ( rect.left >= rect.right  ) ||
  132.    ( rect.top  >= rect.bottom );
  133. }
  134. inline void HXxRect_Intersection( const HXxRect& r1, const HXxRect& r2, HXxRect* result )
  135. {
  136.     result->left   = ( r1.left   > r2.left   ) ? r1.left   : r2.left;
  137.     result->top    = ( r1.top    > r2.top    ) ? r1.top    : r2.top;
  138.     result->right  = ( r1.right  < r2.right  ) ? r1.right  : r2.right;
  139.     result->bottom = ( r1.bottom < r2.bottom ) ? r1.bottom : r2.bottom;
  140. }
  141. #endif // __cplusplus
  142. /****************************************************************************
  143.  * 
  144.  *  Structure:
  145.  *
  146.  * HXxWindow
  147.  *
  148.  *  Purpose:
  149.  *
  150.  * Cross Platform definition of a window. This struct is sufficiently
  151.  * wide to describe parent or child windows in Windows, MacOS, and
  152.  * various flavours of X-Windows.
  153.  *
  154.  *  Data Members:
  155.  *
  156.  * void* window
  157.  * platform specific window handle
  158.  *
  159.  * ULONG32 x, y
  160.  * position of top left corner relative to a client page
  161.  *
  162.  * ULONG32 width, height
  163.  * maximum window size
  164.  *
  165.  * HXxRect clipRect;            
  166.  * clipping rectangle in port coordinates
  167.  *
  168.  */
  169. typedef struct HXEXPORT_CLASS _HXxWindow
  170. {
  171.     /* NOTE: The window parameter is NOT guaranteed to be unique for every
  172.        corresponding CHXWindow. Use HXxWindowID if this is desired. */
  173.     void*       window;
  174.     ULONG32     x;
  175.     ULONG32     y;                   
  176.     ULONG32     width;
  177.     ULONG32     height;
  178.     HXxRect     clipRect;
  179. #ifdef _UNIX
  180.     void *      display;
  181. #endif
  182. #ifdef _SYMBIAN
  183.     CDirectScreenAccess* iDSA;
  184. #endif    
  185. } HXxWindow;
  186. typedef void* HXxWindowID;
  187. /****************************************************************************
  188.  * 
  189.  *  Structure:
  190.  *
  191.  * HXxEvent
  192.  *
  193.  *  Purpose:
  194.  *
  195.  * Cross Platform definition of a event. This struct is sufficiently
  196.  * wide to describe an event in Windows, MacOS, and various flavours of 
  197.  * X-Windows.
  198.  *
  199.  *  Data Members:
  200.  *
  201.  * void* event
  202.  * platform specific event ID, can also be one of the several HXxMSG_*
  203.  * event IDs which map onto existing platform specific event IDs
  204.  *      UNIX: X Event Type
  205.  *
  206.  * void* window
  207.  * platform specific window handle
  208.  *      UNIX: X Window ID
  209.  *
  210.  * void* param1
  211.  * message specific parameter
  212.  *      UNIX: Display*
  213.  *
  214.  * void* param2
  215.  *      Mac:  for UpdateEvt, either NULL or RgnHandle to be filled with updated area
  216.  *      UNIX: Native              XEvent*
  217.  *            HX_SURFACE_UPDATE  HXxWindow*
  218.  *
  219.  */
  220. typedef struct HXEXPORT_CLASS _HXxEvent
  221. {
  222.     ULONG32 event;     /* IN  */
  223.     void* window;     /* IN  */
  224.     void* param1;     /* IN  */
  225.     void* param2;     /* IN  */
  226.     UINT32 result;     /* OUT */
  227.     BOOL handled;    /* OUT */
  228. } HXxEvent;
  229. /****************************************************************************
  230.  * 
  231.  *  typedef:
  232.  *
  233.  * HXxRegion
  234.  *
  235.  *  Purpose:
  236.  *
  237.  * Cross Platform definition of a region. This typedef is redefined as
  238.  * appropriate to describe a region in Windows, MacOS, and various 
  239.  * flavours of X-Windows.
  240.  *
  241.  */
  242. typedef void* HXxRegion;
  243. /****************************************************************************
  244.  * 
  245.  *  typedef:
  246.  *
  247.  * HXxDC
  248.  *
  249.  *  Purpose:
  250.  *
  251.  * Cross Platform definition of a device context. This typedef is redefined as
  252.  * appropriate to describe a device context in Windows, MacOS, and various 
  253.  * flavours of X-Windows.
  254.  *
  255.  */
  256. typedef void* HXxDC;
  257. /****************************************************************************
  258.  * 
  259.  *  typedef:
  260.  *
  261.  * HXxFont
  262.  *
  263.  *  Purpose:
  264.  *
  265.  * Cross Platform definition of a font. This typedef is redefined as
  266.  * appropriate to describe a font in Windows, MacOS, and various 
  267.  * flavours of X-Windows.
  268.  *
  269.  */
  270. typedef void* HXxFont;
  271. /****************************************************************************
  272.  * 
  273.  *  typedef:
  274.  *
  275.  * HXxColor
  276.  *
  277.  *  Purpose:
  278.  *
  279.  * Cross Platform definition of a color. This typedef is redefined as
  280.  * appropriate to describe a font in Windows, MacOS, and various 
  281.  * flavours of X-Windows.
  282.  *
  283.  */
  284. typedef ULONG32 HXxColor;
  285. /****************************************************************************
  286.  * 
  287.  *  typedef:
  288.  *
  289.  * HXxIcon
  290.  *
  291.  *  Purpose:
  292.  *
  293.  * Cross Platform definition of a icon. This typedef is redefined as
  294.  * appropriate to describe a font in Windows, MacOS, and various 
  295.  * flavours of X-Windows.
  296.  *
  297.  */
  298. typedef void* HXxIcon;
  299. /****************************************************************************
  300.  * 
  301.  *  typedef:
  302.  *
  303.  * HXxMenu
  304.  *
  305.  *  Purpose:
  306.  *
  307.  * Cross Platform definition of a menu. This typedef is redefined as
  308.  * appropriate to describe a font in Windows, MacOS, and various 
  309.  * flavours of X-Windows.
  310.  *
  311.  */
  312. typedef void* HXxMenu;
  313. /****************************************************************************
  314.  * 
  315.  *  typedef:
  316.  *
  317.  * HXxCursor
  318.  *
  319.  *  Purpose:
  320.  *
  321.  * Cross Platform definition of a cursor. This typedef is redefined as
  322.  * appropriate to describe a cursor in Windows, MacOS, and various 
  323.  * flavours of X-Windows.
  324.  *
  325.  */
  326. typedef void* HXxCursor;
  327. /****************************************************************************
  328.  * 
  329.  *  Structure:
  330.  *
  331.  * HXREGION
  332.  *
  333.  *  Purpose:
  334.  *
  335.  * Cross Platform Region definition.
  336.  */
  337. typedef struct HXEXPORT_CLASS _HXBox
  338. {
  339.     short x1, x2, y1, y2;
  340. } HXBOX, *HXBoxPtr;
  341. typedef struct HXEXPORT_CLASS _HXxRegion
  342. {
  343.     HXBOX* rects;
  344.     long    numRects;
  345. } HXxBoxRegion, *HXxRegionPtr;
  346. //Definition of the ExposeInfo structure pass with HX_SURFACE_UPDATE2.
  347. typedef struct HXEXPORT_CLASS _HXxExposeInfo
  348. {
  349.     HXxRect     extents;  //The bounding rect of all dirty rects.
  350.     HXxBoxRegion* pRegion;  //Pointer to dirty region. DO NOT MODIFY.
  351.     HXxWindow*  pWindow;  //Pointer to the HXxWindow for this site.
  352.     void*       pParam1;  //Reserved
  353.     void*       pParam2;  //Reserved
  354. } HXxExposeInfo;
  355. #endif /* _HXWINTYP_H_ */