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

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 _MACSITE_H_
  36. #define _MACSITE_H_
  37. #include "hxslist.h"
  38. #include "hxmap.h"
  39. #include "chxpckts.h"
  40. #include "hxwin.h"
  41. #include "hxsite2.h"
  42. #include "hxcomm.h"
  43. #include "hxengin.h"
  44. #include "basesite.h"
  45. #ifdef THREADS_SUPPORTED
  46. #ifndef _MAC_MACHO
  47. #include <Multiprocessing.h>
  48. #endif
  49. #endif
  50. struct IHXCoreMutex;
  51. struct IHXMacBlitMutex;
  52. struct IHXClientEngine;
  53. #define USE_CARBON_TIMER
  54. void SetOriginAndMaintainClipRgn(short horizOffset, short vertOffset);
  55. class CHXMacSite : public CHXBaseSite
  56. {
  57. public:
  58. friend class CMacRootSurface;
  59. friend class CMacSurface;
  60. CHXMacSite(IUnknown* pContext, IUnknown* pUnkOuter = NULL, INT32 lZOrder = 0);
  61. virtual ~CHXMacSite();
  62.     STDMETHOD_(HXxWindow*,GetWindow)(THIS);
  63.     //HXxWindow* GetWindow();
  64. protected:
  65.     virtual void _NeedWindowedSite();
  66.     virtual void _AttachWindow();
  67.     virtual void _DetachWindow();
  68.     virtual void* _Create(void* ParentWindow, UINT32 style);
  69.     virtual void _Destroy(HXxWindow* pWindow);
  70.     virtual void _SetSize(HXxSize size);
  71.     virtual void _SetPosition(HXxPoint position);
  72.     virtual void _DamageRect(HXxRect rect);
  73.     virtual void        _DamageRegion(HXxRegion rgn);
  74.     virtual BOOL _ShouldEnterForceRedraw();
  75.     virtual void _ExitForceRedraw();
  76.     virtual void _SendOSUpdateMessage();
  77.     virtual void _ShowSite(BOOL bShow);
  78.     virtual BOOL _AtSystemTime();
  79.     virtual HX_RESULT _EventOccurred(HXxEvent* pEvent);
  80.     virtual void _GetDeviceCaps(void* hdc, UINT16& uBytesPerPixel, UINT16& uHorizRes, UINT16& uVertRes);
  81.     virtual void _GetWindowRect(HXxRect* destRect);
  82.     virtual void _DestroySliders();
  83.     virtual BOOL _HandleOSEvents(HXxEvent* pEvent);
  84. public:
  85.     static void _HandleAllOSEvents(HXxEvent* pEvent);
  86.     static RgnHandle _ConvertRegionToMacRegion(HXREGION* pRegion);
  87. protected:
  88.     virtual BOOL        _ConvertToHXEvent( HXxEvent* pEvent );
  89.     virtual void _GenerateOSEvent(HXxEvent* pEvent, HXxEvent* pEvent2);
  90.     virtual void _GenerateSetCursorEvent();
  91.     virtual void _ScaleFullScreen(HXxWindow* pWindow);
  92.     virtual HX_RESULT _EnterFullScreen();
  93.     virtual HX_RESULT _ExitFullScreen();
  94.     virtual HX_RESULT _TestFullScreen(void* hTestBitmap, const char* pszStatusText);
  95.     virtual void _TryCreateXSlider();
  96.     virtual void _SetXSliderValues(INT32 range, INT32 pageSize);
  97.     virtual void _TryCreateYSlider();
  98.     virtual void _SetYSliderValues(INT32 range, INT32 pageSize);
  99.     virtual void _GetSystemSizeOfSliders(INT32* pWidth, INT32* pHeight);
  100.     virtual BOOL _IsWindowVisible();
  101.     void ShowMacControl(ControlHandle theControl, BOOL bShow);
  102.     void SetMacControlRectangle(ControlHandle,
  103.      INT32 left, INT32 top, INT32 right, INT32 bottom);
  104.     void SetMacControlRange(ControlHandle theControl, INT32 controlMax);
  105.     virtual void _ShowXSlider(BOOL bShow);
  106.     virtual void _MoveXSlider(INT32 left, INT32 top, INT32 right, INT32 bottom, BOOL bRedraw);
  107.     virtual void _ShowYSlider(BOOL bShow);
  108.     virtual void _MoveYSlider(INT32 left, INT32 top, INT32 right, INT32 bottom, BOOL bRedraw);
  109.     virtual BOOL _DoesXSliderExist();
  110.     virtual void* _GetContainingWindow();
  111.     virtual void _GetCursorPos(HXxPoint* pPoint);
  112.     virtual void _MapPointToOSWindow(HXxPoint* pPt, void** pWindowHandle);
  113.     virtual void* _GetWindowWithCursor();
  114.     virtual void _ReInitPrimarySurface();
  115.     virtual BOOL _MoveWindow(void*, INT32 X, INT32 Y, INT32 nWidth, INT32 nHeight, BOOL bRepaint);
  116.     virtual BOOL _UpdateWindow(void* hWnd);
  117.     virtual BOOL _ShowWindow(void* hWnd, INT32 nCmdShow);
  118.     virtual BOOL _SetWindowPos(void* hWnd, void* hWndInsertAfter, INT32 X, INT32 Y, INT32 cx, INT32 cy, INT32 uFlags);
  119.     virtual BOOL _SetWindowRgn(void* hWnd, HXREGION* hRgn, BOOL bRedraw);
  120.     virtual void _SetFocus(void* pWindow);
  121.     
  122.     void GetMacContentAreaOffset(REF(HXxPoint) offset );
  123.     
  124. private:
  125.     class MacSiteRedrawCallback : public IHXCallback
  126.     {
  127.     private:
  128. LONG32 m_lRefCount;
  129. ~MacSiteRedrawCallback();
  130. PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME
  131.     public:
  132.      MacSiteRedrawCallback(CHXMacSite* pMacSite);
  133.     
  134.      // IUnknown methods
  135.      STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj);
  136.      STDMETHOD_(ULONG32, AddRef) (THIS);
  137.      STDMETHOD_(ULONG32, Release) (THIS);
  138.     
  139.      // IHXCallback methods
  140.      STDMETHOD(Func) (THIS);
  141.     
  142.      // MacSiteRedrawCallback stuff
  143.      CallbackHandle m_ulMacSiteRedrawCallbackPendingID;
  144.      CHXMacSite* m_pMacSite;
  145.     };
  146.     
  147.     MacSiteRedrawCallback* m_pMacSiteRedrawCallback;
  148. protected:
  149.     ControlHandle m_hHScrollBar;
  150.     ControlHandle m_hVScrollBar;
  151.     ControlActionUPP m_ScrollBarActionProc;
  152.     INT32 m_nHorizPageSize;
  153.     INT32 m_nVertPageSize;
  154.     
  155.     GrafPtr m_RememberMacPort;
  156.     Point m_RememberMacOrigin;
  157.     
  158.     BOOL m_bCreatedOSWindow;
  159.     
  160.     HXxPoint m_MostRecentConvertedMouseLoc;
  161.     
  162.     static CHXSimpleList zm_ListOfMacSites;
  163.     static BOOL zm_bFullScreenActive;
  164.     HXxWindow* m_pHXxFullScreenWindow;
  165.     double m_fStretchMultiple;
  166.     static Ptr zm_pRememberFullScreenInformation;
  167.     
  168.     BOOL m_bInternalResizeOnFullscreen;
  169.     HXxSize m_RememberNonFullscreenSize;
  170.     HXxPoint m_RememberNonFullscreenPosition;
  171.     
  172.     BOOL m_bThisOrAChildHasBlitted;
  173. #ifdef THREADS_SUPPORTED
  174. #ifdef USE_CARBON_TIMER
  175. #ifdef _MAC_MACHO
  176.     CFRunLoopTimerRef m_RedrawCFTimerRef;
  177.     CFRunLoopTimerContext m_RedrawCFTimerContext;
  178.     
  179.     static void RedrawCFTimer(CFRunLoopTimerRef, CHXMacSite* pMacSite);
  180. #else
  181.     // keep Carbon Timer around for CFM builds since I
  182.     // think CFTimers need mach-o -- at least, that's
  183.     // the implication of the callback when creating
  184.     // a new CFTimer.
  185.     EventLoopTimerRef m_RedrawCarbonTimerRef;
  186.     EventLoopTimerUPP m_RedrawCarbonTimerUPP;
  187.     static void RedrawCarbonTimer(EventLoopTimerRef, CHXMacSite* pMacSite);
  188. #endif
  189. #endif
  190.     
  191.     IHXCoreMutex* m_pIHXCoreMutex;
  192.     IHXClientEngine* m_pClientEngine;
  193. #endif
  194. };
  195. #endif