Adopted OS/2 to DC reorganisation (r50348).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51054 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Neis
2008-01-06 22:37:10 +00:00
parent b5343e065a
commit 2c24e7adf0
11 changed files with 373 additions and 409 deletions

View File

@@ -13,6 +13,7 @@
#define _WX_DC_H_
#include "wx/defs.h"
#include "wx/dc.h"
// ---------------------------------------------------------------------------
// macros
@@ -94,13 +95,15 @@ public:
}; // 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 WXDLLEXPORT wxPMDCImpl : public wxDCImpl
{
DECLARE_DYNAMIC_CLASS(wxDC)
public:
wxDC(void);
virtual ~wxDC();
wxPMDCImpl(wxDC *owner, WXHDC hDC);
virtual ~wxPMDCImpl();
// implement base class pure virtuals
// ----------------------------------
@@ -124,13 +127,7 @@ public:
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
,const wxFont* pTheFont = NULL
) const;
virtual bool CanDrawBitmap(void) const;
virtual bool CanGetTextExtent(void) const;
virtual int GetDepth(void) const;
@@ -197,6 +194,39 @@ public:
#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
@@ -322,6 +352,7 @@ protected:
void InitializePalette(void);
#endif // wxUSE_PALETTE
protected:
//
// common part of DoDrawText() and DoDrawRotatedText()
//

View File

@@ -17,6 +17,8 @@
// ----------------------------------------------------------------------------
#include "wx/dc.h"
#include "wx/os2/dc.h"
#include "wx/dcclient.h"
#include "wx/dynarray.h"
// ----------------------------------------------------------------------------
@@ -26,68 +28,63 @@
// this one if used by wxPaintDC only
struct WXDLLIMPEXP_FWD_CORE wxPaintDCInfo;
WX_DECLARE_OBJARRAY(wxPaintDCInfo, wxArrayDCInfo);
WX_DECLARE_EXPORTED_OBJARRAY(wxPaintDCInfo, wxArrayDCInfo);
// ----------------------------------------------------------------------------
// DC classes
// ----------------------------------------------------------------------------
class WXDLLEXPORT wxWindowDC : public wxDC
class WXDLLEXPORT wxWindowDCImpl : public wxPMDCImpl
{
public:
wxWindowDC();
// default ctor
wxWindowDCImpl( wxDC *owner );
//
// Create a DC corresponding to the whole window
//
wxWindowDC(wxWindow* pWin);
wxWindowDCImpl( wxDC *owner, wxWindow *pWin );
virtual void DoGetSize(int *pWidth, int *pHeight) const;
protected:
// initialize the newly created DC
void InitDC(void);
//
// Override some base class virtuals
//
virtual void DoGetSize( int* pWidth
,int* pHeight
) const;
private:
SIZEL m_PageSize;
DECLARE_DYNAMIC_CLASS(wxWindowDC)
DECLARE_CLASS(wxWindowDCImpl)
DECLARE_NO_COPY_CLASS(wxWindowDCImpl)
}; // end of CLASS wxWindowDC
class WXDLLEXPORT wxClientDC : public wxWindowDC
class WXDLLEXPORT wxClientDCImpl : public wxWindowDCImpl
{
public:
wxClientDC();
virtual ~wxClientDC();
// default ctor
wxClientDCImpl( wxDC *owner );
wxClientDC(wxWindow *win);
// Create a DC corresponding to the client area of the window
wxClientDCImpl( wxDC *owner, wxWindow *pWin );
virtual ~wxClientDCImpl();
virtual void DoGetSize(int *pWidth, int *pHeight) const;
protected:
void InitDC(void);
//
// Override some base class virtuals
//
virtual void DoGetSize( int* pWidth
,int* pHeight
) const;
private:
DECLARE_DYNAMIC_CLASS(wxClientDC)
DECLARE_CLASS(wxClientDCImpl)
DECLARE_NO_COPY_CLASS(wxClientDCImpl)
}; // end of CLASS wxClientDC
class WXDLLEXPORT wxPaintDC : public wxClientDC
class WXDLLEXPORT wxPaintDCImpl : public wxClientDCImpl
{
public:
wxPaintDC();
wxPaintDCImpl( wxDC *owner );
// Create a DC corresponding for painting the window in OnPaint()
wxPaintDC(wxWindow* pWin);
wxPaintDCImpl( wxDC *owner, wxWindow *pWin );
virtual ~wxPaintDC();
virtual ~wxPaintDCImpl();
// find the entry for this DC in the cache (keyed by the window)
static WXHDC FindDCInCache(wxWindow* pWin);
@@ -98,7 +95,8 @@ protected:
// 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)
DECLARE_CLASS(wxPaintDCImpl)
DECLARE_NO_COPY_CLASS(wxPaintDCImpl)
}; // end of wxPaintDC
#endif

View File

@@ -12,30 +12,33 @@
#ifndef _WX_DCMEMORY_H_
#define _WX_DCMEMORY_H_
#include "wx/dcclient.h"
#include "wx/dcmemory.h"
#include "wx/os2/dc.h"
class WXDLLEXPORT wxMemoryDC: public wxDC, public wxMemoryDCBase
class WXDLLEXPORT wxMemoryDCImpl: public wxPMDCImpl
{
public:
wxMemoryDC() { CreateCompatible(NULL); Init(); }
wxMemoryDC(wxBitmap& bitmap) { CreateCompatible(NULL); Init(); SelectObject(bitmap); }
wxMemoryDC(wxDC* pDC); // Create compatible DC
wxMemoryDCImpl( wxMemoryDC *owner );
wxMemoryDCImpl( wxMemoryDC *owner, wxBitmap& bitmap );
wxMemoryDCImpl( wxMemoryDC *owner, wxDC* pDC); // Create compatible DC
protected:
// override some base class virtuals
virtual void DoGetSize( int* pWidth
,int* pHeight
) const;
virtual void DoGetSize(int* pWidth, int* pHeight) const;
virtual void DoSelect(const wxBitmap& bitmap);
virtual wxBitmap DoGetAsBitmap(const wxRect* subrect) const
{ return subrect == NULL ? GetSelectedBitmap() : GetSelectedBitmap().GetSubBitmap(*subrect);}
protected:
// create DC compatible with the given one or screen if dc == NULL
bool CreateCompatible(wxDC* pDC);
// initialize the newly created DC
void Init(void);
private:
DECLARE_DYNAMIC_CLASS(wxMemoryDC)
}; // end of CLASS wxMemoryDC
DECLARE_CLASS(wxMemoryDCImpl)
DECLARE_NO_COPY_CLASS(wxMemoryDCImpl)
}; // end of CLASS wxMemoryDCImpl
#endif
// _WX_DCMEMORY_H_

View File

@@ -16,28 +16,24 @@
#include "wx/dc.h"
#include "wx/cmndata.h"
#include "wx/os2/dc.h"
class WXDLLEXPORT wxPrinterDC: public wxDC
class WXDLLEXPORT wxPrinterDCImpl: public wxPMDCImpl
{
public:
// Create a printer DC [obsolete]
wxPrinterDC( const wxString& rsDriver
,const wxString& rsDevice
,const wxString& rsOutput
,bool bInteractive = TRUE
,int nOrientation = wxPORTRAIT
);
// Create a printer DC
// Create from print data
wxPrinterDC(const wxPrintData& rData);
wxPrinterDC(WXHDC hTheDC);
wxPrinterDCImpl( wxPrinterDC *owner, const wxPrintData& rData );
wxPrinterDCImpl( wxPrinterDC *owner, WXHDC hTheDC);
bool StartDoc(const wxString& rsMessage);
void EndDoc(void);
void StartPage(void);
void EndPage(void);
// override some base class virtuals
virtual bool StartDoc(const wxString& rsMessage);
virtual void EndDoc(void);
virtual void StartPage(void);
virtual void EndPage(void);
wxRect GetPaperRect();
virtual wxRect GetPaperRect();
protected:
virtual void DoDrawBitmap( const wxBitmap& rBmp
@@ -63,7 +59,8 @@ protected:
wxPrintData m_printData;
private:
DECLARE_CLASS(wxPrinterDC)
DECLARE_CLASS(wxPrinterDCImpl)
DECLARE_NO_COPY_CLASS(wxPrinterDCImpl)
}; // end of CLASS wxPrinterDC
// Gets an HDC for the specified printer configuration

View File

@@ -9,36 +9,26 @@
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_DCSCREEN_H_
#define _WX_DCSCREEN_H_
#ifndef _WX_OS2_DCSCREEN_H_
#define _WX_OS2_DCSCREEN_H_
#include "wx/dcclient.h"
#include "wx/dcscreen.h"
#include "wx/os2/dc.h"
class WXDLLEXPORT wxScreenDC: public wxWindowDC
class WXDLLEXPORT wxScreenDCImpl: public wxPMDCImpl
{
public:
//
// Create a DC representing the whole screen
//
wxScreenDC();
wxScreenDCImpl( wxScreenDC *owner );
//
// Compatibility with X's requirements for
// drawing on top of all windows
//
static bool StartDrawingOnTop(wxWindow* WXUNUSED(pWindow)) { return TRUE; }
static bool StartDrawingOnTop(wxRect* WXUNUSED(prect) = NULL) { return TRUE; }
static bool EndDrawingOnTop() { return TRUE; }
protected:
virtual void DoGetSize( int* pnWidth
,int* pnHeight
) const;
private:
DECLARE_DYNAMIC_CLASS(wxScreenDC)
DECLARE_CLASS(wxScreenDCImpl)
DECLARE_NO_COPY_CLASS(wxScreenDCImpl)
}; // end of CLASS wxScreenDC
#endif
// _WX_DCSCREEN_H_