X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/210a651b4f4ef5ff4e220a100a10bb4f29e08cfd..d9b4ddf28fbf20fe28d20c72b37c85a8e2db686e:/include/wx/os2/dc.h?ds=sidebyside diff --git a/include/wx/os2/dc.h b/include/wx/os2/dc.h index 85d37c6593..c3d383cd2a 100644 --- a/include/wx/os2/dc.h +++ b/include/wx/os2/dc.h @@ -67,6 +67,34 @@ #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 + ); + ~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) @@ -159,8 +187,22 @@ public: 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 @@ -250,6 +292,8 @@ protected: ,wxCoord vYsrc ,int nRop = wxCOPY ,bool bUseMask = FALSE + ,wxCoord vXsrcMask = -1 + ,wxCoord vYsrcMask = -1 ); virtual void DoSetClippingRegionAsRegion(const wxRegion& rRegion); @@ -289,6 +333,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() @@ -335,6 +383,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_