// Created: 08/26/99
// RCS-ID: $Id$
// Copyright: (c) David Webster
-// Licence: wxWidgets licence
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_DC_H_
#define _WX_DC_H_
#include "wx/defs.h"
-//#include "wx/dc.h"
+#include "wx/dc.h"
// ---------------------------------------------------------------------------
// macros
wxDCCacheEntry( HPS hPS
,int nDepth
);
- ~wxDCCacheEntry();
+ virtual ~wxDCCacheEntry();
WXHBITMAP m_hBitmap;
HPS m_hPS;
}; // end of CLASS wxDCCacheEntry
#endif
-class WXDLLEXPORT wxDC : public wxDCBase
+// this is an ABC: use one of the derived classes to create a DC associated
+// with a window, screen, printer and so on
+class WXDLLIMPEXP_CORE wxPMDCImpl : public wxDCImpl
{
DECLARE_DYNAMIC_CLASS(wxDC)
public:
- wxDC(void);
- ~wxDC();
+ wxPMDCImpl(wxDC *owner, WXHDC hDC);
+ virtual ~wxPMDCImpl();
// implement base class pure virtuals
// ----------------------------------
virtual wxCoord GetCharHeight(void) const;
virtual wxCoord GetCharWidth(void) const;
- virtual void DoGetTextExtent( const wxString& rsString
- ,wxCoord* pX
- ,wxCoord* pY
- ,wxCoord* pDescent = NULL
- ,wxCoord* pExternalLeading = NULL
- ,wxFont* pTheFont = NULL
- ) const;
+
virtual bool CanDrawBitmap(void) const;
virtual bool CanGetTextExtent(void) const;
virtual int GetDepth(void) const;
virtual void SetUserScale( double dX
,double dY
);
- virtual void SetSystemScale( double dX
- ,double dY
- );
virtual void SetLogicalScale( double dX
,double dY
);
#endif
protected:
+ void Init()
+ {
+ m_pCanvas = NULL;
+ m_hOldBitmap = 0;
+ m_hOldPen = 0;
+ m_hOldBrush = 0;
+ m_hOldFont = 0;
+#if wxUSE_PALETTE
+ m_hOldPalette = 0;
+#endif // wxUSE_PALETTE
+
+ m_bOwnsDC = false;
+ m_hDC = 0;
+ m_hOldPS = NULL;
+ m_hPS = NULL;
+ m_bIsPaintTime = false; // True at Paint Time
+
+ m_pen.SetColour(*wxBLACK);
+ m_brush.SetColour(*wxWHITE);
+ }
+
+ // create an uninitialized DC: this should be only used by the derived
+ // classes
+ wxPMDCImpl( wxDC *owner ) : wxDCImpl( owner ) { Init(); }
+
+public:
+ virtual void DoGetTextExtent( const wxString& rsString
+ ,wxCoord* pX
+ ,wxCoord* pY
+ ,wxCoord* pDescent = NULL
+ ,wxCoord* pExternalLeading = NULL
+ ,const wxFont* pTheFont = NULL
+ ) const;
virtual bool DoFloodFill( wxCoord vX
,wxCoord vY
,const wxColour& rCol
,wxCoord vYsrcMask = -1
);
- virtual void DoSetClippingRegionAsRegion(const wxRegion& rRegion);
virtual void DoSetClippingRegion( wxCoord vX
,wxCoord vY
,wxCoord vWidth
,wxCoord vHeight
);
- virtual void DoGetClippingRegion( wxCoord* pX
- ,wxCoord* pY
- ,wxCoord* pWidth
- ,wxCoord* pHeight)
- {
- GetClippingBox( pX
- ,pY
- ,pWidth
- ,pHeight
- );
- }
+ virtual void DoSetDeviceClippingRegion(const wxRegion& rRegion);
virtual void DoGetSize( int* pWidth
,int* pHeight
void InitializePalette(void);
#endif // wxUSE_PALETTE
+protected:
//
// common part of DoDrawText() and DoDrawRotatedText()
//