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

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 _WINROOT_H_
  36. #define _WINROOT_H_
  37. #include "hxthread.h"
  38. #include "baseroot.h"
  39. #include "hxvctrl.h"
  40. #include "ddraw.h"
  41. #include "hxcolor.h"
  42. #include "windraw2.h"
  43. #include "hxstring.h"
  44. #include "hxwintyp.h"
  45. #include "hxmap.h"
  46. #include "coloracc.h"
  47. #include "ddhlpr.h"
  48. // Forward declarations
  49. //class CRootSurface;
  50. class CHXWinSite;
  51. typedef HRESULT (*PDRAWCREATE) (IID *,LPDIRECTDRAW *,LPUNKNOWN);
  52. typedef HRESULT (*PDRAWENUM) (LPDDENUMCALLBACKA, LPVOID);
  53. class COverlay
  54. {
  55. private:
  56.     int     m_nCID;     
  57.     int     m_nAlpha;
  58.     WINDRAW*     m_pWindraw;
  59.     WINDRAWSURFACE  m_backgroundSurface;
  60.     WINDRAWSURFACE  m_overlaySurface;
  61.     HXxRect     m_destRect;
  62.     HXxRect     m_srcRect;
  63.     HXxRect     m_backgroundSrcRect;
  64.     HXxSize     m_allocSize;
  65. public:
  66.     COverlay(WINDRAW* pWindraw);
  67.     ~COverlay();
  68.     void CreateOverlay(REF(HXxSize) size, int nCID);
  69.     void SetSrcRect(REF(HXxRect) rect);
  70.     void SetAlpha(int nAlpha);
  71.     void SetDestRect(REF(HXxRect) rect, WINDRAWSURFACE* pDestSurface);
  72.     void DrawOverlay(WINDRAWSURFACE* pDestSurface);
  73.     void RemoveOverlay(WINDRAWSURFACE* pDestSurface);
  74.     void UpdateOverlay(HXxRect* pRect, WINDRAWSURFACE* pSrcSurface);
  75.     void GetSize(REF(HXxSize) size);
  76.     void GetDC(HDC* phDC);
  77.     UCHAR* LockOverlay();
  78.     void UnlockOverlay();
  79.     UCHAR* GetAlpha();
  80.     int  GetCID();
  81.     void ReleaseDC(HDC hDC);
  82. };
  83. class COverlayMgr
  84. {
  85. private:
  86.     CHXMapStringToOb m_overlayMap;
  87. public:
  88.     COverlayMgr();
  89.     ~COverlayMgr();
  90.     BOOL GetOverlay(const char* pName, COverlay** pOverlay);
  91.     void AddOverlay(const char* pName, COverlay* pOverlay);
  92.     void RemoveOverlay(const char* pName, WINDRAWSURFACE* pDestSurface);
  93.     void UpdateOverlays(HXxRect* pRect, WINDRAWSURFACE* pSrcSurface);
  94.     void RemoveAll();
  95. };
  96. class CWinBaseRootSurface : public CBaseRootSurface
  97. {
  98. protected:
  99.     virtual ~CWinBaseRootSurface();
  100.     PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME
  101.     CRITICAL_SECTION m_CriticalSection;
  102.     WINDRAW         m_windraw;
  103.     WINDRAW         m_windrawCaps;
  104.     WINDRAWSURFACE  m_compositionSurface;
  105.     BOOL            m_bWindrawOpened;
  106.     BOOL            m_bWindrawCapsOpened;
  107.     BOOL            m_bBltLock;
  108.     UCHAR*          m_pScratchSurface;
  109.     int             m_nScratchSurfaceCID;
  110.     BOOL            m_bScratchSurfaceCreated;
  111.     HXxSize         m_scratchSize;
  112.     BOOL            m_bShowingText;
  113.     HBRUSH          m_hBrush;
  114.     HPEN            m_hPen;
  115.     COLORREF        m_textColor;
  116.     COLORREF        m_nTextBackgroundColor;
  117.     CHXString       m_sStatusText;
  118.     HFONT     m_hFont;
  119.     HFONT     m_hOldFont;
  120.     HWND            m_hLastClipper;
  121.     IHXErrorMessages*  m_pErrMsg;
  122.     void     SelectFont(HDC hdc);
  123.     void     UnSelectFont(HDC hDC);
  124.     void     CreateTextAlpha(COverlay* pOverlay);
  125. public:
  126.     UINT32 GetSurfaceType() {return m_fSurfaceType;}
  127. protected:
  128. #define _WORKAROUND_YUV_RGB_16BIT_HXCOLOR_BUG    1
  129. //#ifdef _WORKAROUND_YUV_RGB_16BIT_HXCOLOR_BUG
  130.     WINDRAWSURFACE m_scratchSurface;
  131.     int     m_nScratchPitch;
  132.     HX_RESULT CreateScratchSurface(int nCompositionSurfaceCID, HXxSize* pSize);
  133.     HX_RESULT DestroyScratchSurface();
  134.     HX_RESULT ScratchUnLock();
  135.     HX_RESULT ScratchLock();
  136. //#endif /*_WORKAROUND_YUV_RGB_16BIT_HXCOLOR_BUG*/
  137.     COverlayMgr m_overlayMgr;
  138.     UCHAR*     m_pYUVScratchBits;
  139.     BITMAPINFO m_YUVScratchbmi;
  140.     INT32     m_nYUVPitch;
  141. public:
  142.     
  143.     CWinBaseRootSurface(IUnknown* pContext, CHXBaseSite* pSite);
  144. void     PrepareFullScreen();
  145. void     _FillBorders();
  146. void     SetFullScreen();
  147. void     PrepareExitFullScreen();
  148. // void     ExitFullScreen();
  149. #if 0    
  150.     void        DrawFocusRect(WINDRAWSURFACE* pSurface,
  151.                               int nSurfaceCID,
  152.                               HXxSize* pSurfaceSize,
  153.                               UCHAR* pVidMem,
  154.                               CHXBaseSite* pSite);
  155. #endif
  156.     void     DrawText();
  157. void     RestoreResolution();
  158. WINDRAW*    GetWinDraw() {return &m_windraw;}
  159. HX_RESULT   OpenWindraw();
  160. WINDRAWSURFACE* GetCompositionSurface() {return &m_compositionSurface;}
  161.     virtual void _GetYUVScratchWidthHeight(UINT32* pWidth, UINT32* pHeight);
  162.     virtual void _CreateYUVScratchSurface(UINT32 width, UINT32 height);
  163.     virtual void _GetYUVScratchSurfacePointer(UCHAR** pYUVBits, INT32* YUVPitch);
  164.     virtual HX_RESULT ScratchLock(UCHAR** pBits, INT32* pPitch);
  165.     virtual HX_RESULT ScratchUnlock(UCHAR* pBits);
  166.     virtual void _BltFromScratchToComposition(HXxRect& rDestRect, HXxRect& rSrcRect);
  167.     virtual HX_RESULT _DebugBlt(UCHAR*               pImageData,
  168. HXBitmapInfoHeader* pBitmapInfo,
  169. REF(HXxRect)         rDestRect,
  170. REF(HXxRect)         rSrcRect);
  171.     virtual HX_RESULT _MinimalUnlock(HXxWindow* pWindow);
  172.     virtual HX_RESULT _LockComposition(UCHAR** pBits, INT32* pPitch);
  173.     virtual HX_RESULT _CreateCompositionSurface();
  174.     virtual HX_RESULT _DestroyCompositionSurface();
  175.     virtual void      _MinimalBlt(HXxRect& src, HXxRect& dst);
  176.     virtual void      _AdjustLastAppendedRectangle(REF(CHXSimpleList) rectList);
  177.     virtual void      _PreFlightBlt(HXxRect& dst);
  178.     virtual void      GetDisplayModes(CModesDesc* pModesDesc, INT32* nNumModes);
  179.     virtual void      SetResolution(int width, int height, int depth, void*);
  180.     virtual BOOL      _OptimizedSurfaceOpened();
  181.     virtual BOOL      _IsHardwareAccelerationAvail();
  182.     virtual BOOL      _AcquireHardwareAcceleration();
  183.     virtual BOOL      _LoseHardwareAcceleration();
  184.     virtual BOOL      _EnableHardwareAcceleration();
  185.     virtual BOOL      _DisableHardwareAcceleration();
  186. };
  187. #endif