DDDrvEsc.h
上传用户:fjqzjn
上传日期:2008-01-21
资源大小:2764k
文件大小:5k
源码类别:

Windows CE

开发平台:

Visual C++

  1. /******************************************************************************
  2. ** Copyright (c) 2004, Intel Corporation
  3. ** Copyright (c) 2003 by Imagination Technologies Limited.
  4. ** All rights reserved.
  5. **
  6. ** The source code contained or described herein and all documents related to the
  7. ** source code ("Material") are owned by Intel Corporation or its suppliers or 
  8. ** licensors. Title to the Material remains with Intel Corporation or its suppliers
  9. ** and licensors. The Material contains trade secrets and proprietary and 
  10. ** confidential information of Intel or its suppliers and licensors. The Material 
  11. ** is protected by worldwide copyright and trade secret laws and treaty provisions.
  12. ** No part of the Material may be used, copied, reproduced, modified, published, 
  13. ** uploaded, posted, transmitted, distributed, or disclosed in any way without 
  14. ** Intel抯 prior express written permission.
  15. ** 
  16. ** No license under any patent, copyright, trade secret or other intellectual 
  17. ** property right is granted to or conferred upon you by disclosure or delivery 
  18. ** of the Materials, either expressly, by implication, inducement, estoppel or 
  19. ** otherwise. Any license under such intellectual property rights must be express 
  20. ** and approved by Intel in writing.
  21. *
  22. * Description  : Dual display drvesc wrapper function declarations for 
  23. *                DualDispDemo application.
  24. *
  25. * Platform     : Marathon/WinCE
  26. *
  27. ***************************************************************************/
  28. #ifndef __DDDRVESC_H__
  29. #define __DDDRVESC_H__
  30. #include <windows.h>
  31. #include "dispconfig.h"
  32. /* Set the secondary surface dimensions. */
  33. #define SECONDARYSURFACEWIDTH 640
  34. #define SECONDARYSURFACEHEIGHT 480
  35. #define XSCALE_CACHE_ENABLED 1
  36. #define MARATHON_CACHE_ENABLED 1
  37. /* Certain fields within the DISPCFG_DISPLAY_SYSTEM struct are not 
  38.    applicable when connecting the PDP to the Desktop. This 'define' 
  39.    is used to explicitly set any such field to zero. */
  40. #define PARAM_NOT_APPLICABLE 0
  41. /* Error handling: Calling functions will 'BITWISE OR' return values with
  42.    nDDRetVal to avoid overwriting it. nDDRetVal is a locally declared
  43.    variable used in all functions returning an error code. */
  44. #define DUALDISPSUCCESS 0
  45. #define DUALDISPERROR 1
  46. /* Enable logging to a file instead of the debugger. */
  47. #ifdef LOGGING_TO_FILE
  48. #define TEXTOUT(X) fwprintf(gpStream, X); fflush(gpStream)
  49. #else
  50. #define TEXTOUT(X) OutputDebugString(X)
  51. #endif
  52. typedef enum _SELECT_DUALDISP_CONFIG_{
  53.     eDefaultDisplay,
  54.     eMirrorModeIncompatible,
  55.     eMirrorModeCompatible,
  56.     eVideoMode,
  57.     eCustomGDIApplication,
  58.     eCustomFBApplication,
  59.     eInternalDispOnlySecSurf,
  60.     eExternalDispOnlySecSurf,
  61.     eExternalDispOnlyDesktop,
  62.     eModeInvalid,
  63.     eSlowTestMode,
  64.     eQuickTestMode,
  65. } SELECT_DUAL_DISP_CONFIG;
  66. typedef struct _XSCALE_SURFACE_INFO_
  67. {
  68.     ULONG  ulPhysAddress;                /* Physical address */
  69.     ULONG  ulPageAddress;                /* Start address of the page containing XScale FB */
  70.     ULONG  ulWidth;                      /* Width in pixels */
  71.     ULONG  ulHeight;                     /* Height in pixels */
  72.     ULONG  ulStride;                     /* Stride in bytes */
  73.     ULONG  ulBpp;                        /* Bits Per Pixel */
  74.     LONG    nPhysicalRotation;  /* Rotation angle of the frame buffer contents */
  75.     BOOL    bDouble;                      /* XScale display requires pixel/line doubling */
  76. } XSCALE_SURFACE_INFO;
  77. /* For the purposes of this test application, XScale display surface
  78. information will be hardwired as described by this enumeration. */
  79. enum XScaleSurfaceInfo
  80. {
  81.     XSCALE_DISPLAY_BPP = 16,
  82.     XSCALE_DISPLAY_WIDTH =   640,
  83.     XSCALE_DISPLAY_HEIGHT =   480,
  84.     XSCALE_DISPLAY_STRIDE = ((XSCALE_DISPLAY_WIDTH * XSCALE_DISPLAY_BPP) / 8),
  85.     XSCALE_DISPLAY_PHYS_ROTATION = 0,
  86.     XSCALE_DISPLAY_DOUBLE = FALSE,
  87. };
  88. /* Connect surface to PDP */
  89. LONG DE_ConfigureDisplaySystem(DISPCFG_DISPLAY_SYSTEM& sDisplayConfig, HDC hdcMarathon);
  90. /* Get information about the Marathon display surface */
  91. LONG DE_GetMarathonSurfaceInfo(DISPCFG_GET_SURFACE_INFO& sMarathonSurfaceInfo, 
  92.                                DCFG_DISPLAY_SURFACE eDisplaySurface, HDC hdcMarathon);
  93. /* Get information about the XScale display surface */
  94. LONG DE_GetXScaleSurfaceInfo(XSCALE_SURFACE_INFO& sXScaleSurfaceInfo, HDC hdcXScale);
  95. LONG DE_CreateSecondarySurfBitmap(HDC hdcMarathon, 
  96.                                        HDC& hdcMem, 
  97.                                        HBITMAP& hBitmap, 
  98.                                        HGDIOBJ& hOldBitmap, 
  99.                                        BOOL& bSecondarySurfaceCreated);
  100. LONG DE_CheckForScreenUpdate(HDC hdcMarathon, BOOL& bIsDirty);
  101. BOOL DE_AcquireDualDisplay(HDC hdcMarathon);
  102. BOOL DE_ReleaseDualDisplay(HDC hdcMarathon);
  103. void* getMemory(DWORD dwPhysAddr, DWORD size, DWORD dwCacheEnabled);
  104. #endif  /* __DDDRVESC_H__ */