X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fe2e43661ec454a020e57deda94db36ca26f8a1e..50ccc908dc4e6376de91edd7f74018898fd690b1:/include/wx/os2/dc.h diff --git a/include/wx/os2/dc.h b/include/wx/os2/dc.h index aabfd38711..e3f48e3710 100644 --- a/include/wx/os2/dc.h +++ b/include/wx/os2/dc.h @@ -13,7 +13,6 @@ #define _WX_DC_H_ #include "wx/defs.h" -//#include "wx/dc.h" // --------------------------------------------------------------------------- // macros @@ -67,13 +66,41 @@ #define wx_round(a) (int)((a)+.5) +#if wxUSE_DC_CACHEING +/* + * Cached blitting, maintaining a cache + * of bitmaps required for transparent blitting + * instead of constant creation/deletion + */ + +class wxDCCacheEntry : public wxObject +{ +public: + wxDCCacheEntry( WXHBITMAP hBitmap + ,int nWidth + ,int nHeight + ,int nDepth + ); + wxDCCacheEntry( HPS hPS + ,int nDepth + ); + virtual ~wxDCCacheEntry(); + + WXHBITMAP m_hBitmap; + HPS m_hPS; + int m_nWidth; + int m_nHeight; + int m_nDepth; +}; // end of CLASS wxDCCacheEntry +#endif + class WXDLLEXPORT wxDC : public wxDCBase { DECLARE_DYNAMIC_CLASS(wxDC) public: wxDC(void); - ~wxDC(); + virtual ~wxDC(); // implement base class pure virtuals // ---------------------------------- @@ -102,7 +129,7 @@ public: ,wxCoord* pY ,wxCoord* pDescent = NULL ,wxCoord* pExternalLeading = NULL - ,wxFont* pTheFont = NULL + ,const wxFont* pTheFont = NULL ) const; virtual bool CanDrawBitmap(void) const; virtual bool CanGetTextExtent(void) const; @@ -113,9 +140,6 @@ public: virtual void SetUserScale( double dX ,double dY ); - virtual void SetSystemScale( double dX - ,double dY - ); virtual void SetLogicalScale( double dX ,double dY ); @@ -151,14 +175,29 @@ public: HPS GetHPS(void) const { return m_hPS; } void SetHPS(HPS hPS) { - HDC hDC = ::GpiQueryDevice(hPS); m_hPS = hPS; } const wxBitmap& GetSelectedBitmap(void) const { return m_vSelectedBitmap; } wxBitmap& GetSelectedBitmap(void) { return m_vSelectedBitmap; } + void UpdateClipBox(); + +#if wxUSE_DC_CACHEING + static wxDCCacheEntry* FindBitmapInCache( HPS hPS + ,int nWidth + ,int nHeight + ); + static wxDCCacheEntry* FindDCInCache( wxDCCacheEntry* pNotThis + ,HPS hPS + ); + + static void AddToBitmapCache(wxDCCacheEntry* pEntry); + static void AddToDCCache(wxDCCacheEntry* pEntry); + static void ClearCache(void); +#endif + protected: - virtual void DoFloodFill( wxCoord vX + virtual bool DoFloodFill( wxCoord vX ,wxCoord vY ,const wxColour& rCol ,int nStyle = wxFLOOD_SURFACE @@ -248,6 +287,8 @@ protected: ,wxCoord vYsrc ,int nRop = wxCOPY ,bool bUseMask = FALSE + ,wxCoord vXsrcMask = -1 + ,wxCoord vYsrcMask = -1 ); virtual void DoSetClippingRegionAsRegion(const wxRegion& rRegion); @@ -256,17 +297,6 @@ protected: ,wxCoord vWidth ,wxCoord vHeight ); - virtual void DoGetClippingRegion( wxCoord* pX - ,wxCoord* pY - ,wxCoord* pWidth - ,wxCoord* pHeight) - { - GetClippingBox( pX - ,pY - ,pWidth - ,pHeight - ); - } virtual void DoGetSize( int* pWidth ,int* pHeight @@ -287,6 +317,10 @@ protected: ,int nFillStyle = wxODDEVEN_RULE ); +#if wxUSE_PALETTE + void DoSelectPalette(bool bRealize = FALSE); + void InitializePalette(void); +#endif // wxUSE_PALETTE // // common part of DoDrawText() and DoDrawRotatedText() @@ -319,11 +353,9 @@ public: bool m_bOwnsDC:1; // - // our HDC and its usage count: we only free it when the usage count drops - // to 0 + // our HDC // WXHDC m_hDC; - int m_nDCCount; // // Store all old GDI objects when do a SelectObject, so we can select them @@ -335,6 +367,11 @@ public: WXHBRUSH m_hOldBrush; WXHFONT m_hOldFont; WXHPALETTE m_hOldPalette; -}; + +#if wxUSE_DC_CACHEING + static wxList m_svBitmapCache; + static wxList m_svDCCache; +#endif +}; // end of CLASS wxDC #endif // _WX_DC_H_