X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0e320a79f187558effb04d92020b470372bbe456..d471bb2d4c029e0f9a47e191fa28a56a5588f75e:/include/wx/os2/dcclient.h diff --git a/include/wx/os2/dcclient.h b/include/wx/os2/dcclient.h index 3130147c4f..f202a3b34b 100644 --- a/include/wx/os2/dcclient.h +++ b/include/wx/os2/dcclient.h @@ -1,142 +1,105 @@ ///////////////////////////////////////////////////////////////////////////// // Name: dcclient.h -// Purpose: wxClientDC, wxPaintDC and wxWindowDC classes -// Author: AUTHOR +// Purpose: wxClientDC class +// Author: David Webster // Modified by: -// Created: ??/??/98 +// Created: 09/12/99 // RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence +// Copyright: (c) David Webster +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_DCCLIENT_H_ #define _WX_DCCLIENT_H_ -#ifdef __GNUG__ -#pragma interface "dcclient.h" -#endif +// ---------------------------------------------------------------------------- +// headers +// ---------------------------------------------------------------------------- #include "wx/dc.h" +#include "wx/dynarray.h" + +// ---------------------------------------------------------------------------- +// array types +// ---------------------------------------------------------------------------- -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- +// this one if used by wxPaintDC only +struct WXDLLEXPORT wxPaintDCInfo; -class WXDLLEXPORT wxPaintDC; -class WXDLLEXPORT wxWindow; +WX_DECLARE_OBJARRAY(wxPaintDCInfo, wxArrayDCInfo); -// Under Windows, wxClientDC, wxPaintDC and wxWindowDC are implemented differently. -// On many platforms, however, they will be the same. +// ---------------------------------------------------------------------------- +// DC classes +// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxWindowDC: public wxDC +class WXDLLEXPORT wxWindowDC : public wxDC { - DECLARE_DYNAMIC_CLASS(wxWindowDC) - - public: - - wxWindowDC(void); - wxWindowDC( wxWindow *win ); - - ~wxWindowDC(void); - - virtual void FloodFill( long x1, long y1, const wxColour& col, int style=wxFLOOD_SURFACE ); - virtual bool GetPixel( long x1, long y1, wxColour *col ) const; - - virtual void DrawLine( long x1, long y1, long x2, long y2 ); - virtual void CrossHair( long x, long y ); - virtual void DrawArc( long x1, long y1, long x2, long y2, long xc, long yc ); - virtual void DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ); - virtual void DrawPoint( long x, long y ); - - virtual void DrawLines( int n, wxPoint points[], long xoffset = 0, long yoffset = 0 ); - virtual void DrawLines( wxList *points, long xoffset = 0, long yoffset = 0 ); - virtual void DrawPolygon( int n, wxPoint points[], long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - virtual void DrawPolygon( wxList *lines, long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - - virtual void DrawRectangle( long x, long y, long width, long height ); - virtual void DrawRoundedRectangle( long x, long y, long width, long height, double radius = 20.0 ); - virtual void DrawEllipse( long x, long y, long width, long height ); - - virtual bool CanDrawBitmap(void) const; - virtual void DrawIcon( const wxIcon &icon, long x, long y, bool useMask=FALSE ); - virtual bool Blit( long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int logical_func = wxCOPY, bool useMask=FALSE ); - - virtual void DrawText( const wxString &text, long x, long y, bool use16 = FALSE ); - virtual bool CanGetTextExtent(void) const; - virtual void GetTextExtent( const wxString &string, long *width, long *height, - long *descent = NULL, long *externalLeading = NULL, - wxFont *theFont = NULL, bool use16 = FALSE ); - virtual long GetCharWidth(void); - virtual long GetCharHeight(void); - - virtual void Clear(void); - - virtual void SetFont( const wxFont &font ); - virtual void SetPen( const wxPen &pen ); - virtual void SetBrush( const wxBrush &brush ); - virtual void SetBackground( const wxBrush &brush ); - virtual void SetLogicalFunction( int function ); - virtual void SetTextForeground( const wxColour &col ); - virtual void SetTextBackground( const wxColour &col ); - virtual void SetBackgroundMode( int mode ); - virtual void SetPalette( const wxPalette& palette ); - - virtual void SetClippingRegion( long x, long y, long width, long height ); - virtual void SetClippingRegion( const wxRegion& region ) ; - virtual void DestroyClippingRegion(void); - - virtual void DrawSpline( wxList *points ); +public: + wxWindowDC(); + + // + // Create a DC corresponding to the whole window + // + wxWindowDC(wxWindow* pWin); + +protected: + void InitDC(void); + + // + // Override some base class virtuals + // + virtual void DoGetSize( int* pWidth + ,int* pHeight + ) const; + private: - // VisualAge function hiding warning supression - void DrawEllipticArc (const wxPoint& pt, const wxSize& sz, double sa, double ea) - { wxDC::DrawEllipticArc(pt, sz, sa, ea); } - void DrawPoint( wxPoint& point ) - { wxDC::DrawPoint(point); } - void DrawSpline( long x1, long y1, long x2, long y2, long x3, long y3 ) - { DrawSpline(x1, y1, x2, y2, x3, y3); } - void DrawSpline( int n, wxPoint points[] ) - { DrawSpline(n, points); } - void GetTextExtent( const wxString &string, long *width, long *height, - long *descent = NULL, long *externalLeading = NULL, - wxFont *theFont = NULL ) const - { GetTextExtent( string, width, height, descent, externalLeading, theFont); }; - // these next two are ridiculous! the only difference is the const - long GetCharWidth(void) const {return(GetCharWidth());}; - long GetCharHeight(void) const {return(GetCharHeight());}; -}; - -//----------------------------------------------------------------------------- -// wxPaintDC -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxPaintDC: public wxWindowDC + SIZEL m_PageSize; + DECLARE_DYNAMIC_CLASS(wxWindowDC) +}; // end of CLASS wxWindowDC + +class WXDLLEXPORT wxClientDC : public wxWindowDC { - DECLARE_DYNAMIC_CLASS(wxPaintDC) +public: + wxClientDC(); + virtual ~wxClientDC(); - public: + wxClientDC(wxWindow *win); - wxPaintDC(void):wxWindowDC() {}; - wxPaintDC( wxWindow *win ): wxWindowDC(win) {}; +protected: + void InitDC(void); -}; + // + // Override some base class virtuals + // + virtual void DoGetSize( int* pWidth + ,int* pHeight + ) const; -//----------------------------------------------------------------------------- -// wxClientDC -//----------------------------------------------------------------------------- +private: + DECLARE_DYNAMIC_CLASS(wxClientDC) +}; // end of CLASS wxClientDC -class WXDLLEXPORT wxClientDC: public wxWindowDC +class WXDLLEXPORT wxPaintDC : public wxClientDC { - DECLARE_DYNAMIC_CLASS(wxClientDC) +public: + wxPaintDC(); + + // Create a DC corresponding for painting the window in OnPaint() + wxPaintDC(wxWindow* pWin); - public: + virtual ~wxPaintDC(); - wxClientDC(void):wxWindowDC() {}; - wxClientDC( wxWindow *win ): wxWindowDC(win) {}; + // find the entry for this DC in the cache (keyed by the window) + static WXHDC FindDCInCache(wxWindow* pWin); -}; +protected: + static wxArrayDCInfo ms_cache; + + // find the entry for this DC in the cache (keyed by the window) + wxPaintDCInfo* FindInCache(size_t* pIndex = NULL) const; +private: + DECLARE_DYNAMIC_CLASS(wxPaintDC) +}; // end of wxPaintDC #endif // _WX_DCCLIENT_H_