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

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 _UNIXROOT_H
  36. #define _UNIXROOT_H
  37. #include "baseroot.h"
  38. #include <X11/Xatom.h>
  39. #include <X11/Xlib.h>
  40. #include <X11/Xutil.h>
  41. #include <X11/Xos.h>
  42. #include <X11/Intrinsic.h>
  43. #include <X11/extensions/XShm.h>
  44. class CUnixRootSurf : public CBaseRootSurface
  45. {
  46. public:
  47.    CUnixRootSurf(IUnknown* pContext, CHXBaseSite* pSite );
  48.    //Helpers....
  49.    HX_RESULT Init();
  50.    GC        GetGC();
  51.    //public inherited stuff
  52.    virtual HX_RESULT CreateScratchSurface(int nCompositionSurfaceCID, 
  53.                                           HXxSize* pSize);
  54.    virtual HX_RESULT ScratchLock(UCHAR** pBits, INT32* pPitch);
  55.    virtual HX_RESULT ScratchUnlock(UCHAR* pBits);
  56.    virtual HX_RESULT BeginOptimizedBlt(HXBitmapInfoHeader* pBitmapInfo);
  57.    virtual HX_RESULT OptimizedBlt( UCHAR*   pImageBits,
  58.                                    HXxRect& rDestRect,
  59.                                    HXxRect& rSrcRect);
  60.    virtual HX_RESULT EndOptimizedBlt(void);
  61.    virtual HX_RESULT GetOptimizedFormat(HX_COMPRESSION_TYPE& ulType);
  62.    virtual HX_RESULT GetPreferredFormat(HX_COMPRESSION_TYPE& ulType);
  63.    XImage* _GetCompositionSurfaceDrawable();
  64.    //Shared Memory helper func for the basesurf to use.
  65. //     HX_RESULT _DetachSharedRegion();
  66. //     HX_RESULT _CreateSharedRegion(INT32 nSize);
  67.    
  68. protected:
  69.    //Smartly handle resizing of shm buffer.
  70.    HX_RESULT _ResizeVideoBuffer(INT32 nSize);
  71.    //Inherited from CBaseRootSurface....
  72.    virtual void _BltFromScratchToComposition(HXxRect& rDestRect,
  73.                                              HXxRect& rSrcRect);
  74.    virtual HX_RESULT _DebugBlt( UCHAR*               pImageData,
  75.                                 HXBitmapInfoHeader* pBitmapInfo,
  76.                                 HXxRect&             rDestRect,
  77.                                 HXxRect&             rSrcRect);
  78.    virtual void _GetYUVScratchWidthHeight(UINT32* pWidth, UINT32* pHeight);
  79.    virtual void _CreateYUVScratchSurface(UINT32 width, UINT32 height);
  80.    virtual void _GetYUVScratchSurfacePointer(UCHAR** pYUVBits, INT32* YUVPitch);
  81.    virtual HX_RESULT _MinimalUnlock(HXxWindow* pWindow);
  82.    virtual HX_RESULT _LockComposition(UCHAR** pBits, INT32* pPitch);
  83.    virtual HX_RESULT _CreateCompositionSurface();
  84.    virtual HX_RESULT _DestroyCompositionSurface();
  85.    virtual void      _MinimalBlt(HXxRect& src, HXxRect& dest);
  86.    
  87. private:
  88.    virtual ~CUnixRootSurf();
  89.    PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME
  90.    
  91.    //Protect unintentional copy and default ctors.
  92.    CUnixRootSurf();
  93.    CUnixRootSurf( const CUnixRootSurf& );
  94.    CUnixRootSurf& operator=( const CUnixRootSurf& it );
  95.    //Shared memory members.
  96.    BOOL            m_bUseShm;
  97.    XShmSegmentInfo m_shmInfo;
  98.    int             m_nShmId;
  99.    //General display and GC stuff.
  100.    Display*     m_pDisplay;
  101.    GC           m_GC;
  102.    int          m_nScreenNumber;
  103.    XImage*      m_pXImage;
  104.    Window       m_window;
  105.    Visual*      m_pVisual;
  106.    unsigned int m_unDepth;
  107.    Screen*      m_pScreen;
  108.    Colormap     m_colormap;
  109.    int          m_nBitsPerPixel;
  110.    //Bitmap stuff.
  111.    UCHAR*         m_pYUVScratchBits;
  112.    HXBitmapInfo  m_bmiYUVScratch;
  113.    int            m_nYUVScratchPitch;
  114.    UCHAR*         m_pScratchBits;
  115.    HXBitmapInfo  m_bmiScratch;
  116.    int            m_nScratchPitch;
  117.    HXBitmapInfo  m_bmiSave;
  118.    ULONG32        m_nCompositionSize;
  119. };
  120. #endif