wxMotif compilation fixes after wxDC changes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50701 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2007-12-15 00:06:08 +00:00
parent 09294e12fb
commit fce127d758
12 changed files with 279 additions and 303 deletions

View File

@@ -1,6 +1,6 @@
/////////////////////////////////////////////////////////////////////////////
// Name: wx/motif/dc.h
// Purpose: wxDC class
// Purpose: wxMotifDCImpl class
// Author: Julian Smart
// Modified by:
// Created: 17/09/98
@@ -12,38 +12,16 @@
#ifndef _WX_DC_H_
#define _WX_DC_H_
#include "wx/pen.h"
#include "wx/brush.h"
#include "wx/icon.h"
#include "wx/font.h"
#include "wx/gdicmn.h"
#include "wx/dc.h"
//-----------------------------------------------------------------------------
// constants
//-----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
// wxMotifDCImpl
// ----------------------------------------------------------------------------
#ifndef MM_TEXT
#define MM_TEXT 0
#define MM_ISOTROPIC 1
#define MM_ANISOTROPIC 2
#define MM_LOMETRIC 3
#define MM_HIMETRIC 4
#define MM_TWIPS 5
#define MM_POINTS 6
#define MM_METRIC 7
#endif
//-----------------------------------------------------------------------------
// wxDC
//-----------------------------------------------------------------------------
class WXDLLEXPORT wxDC : public wxDCBase
class WXDLLEXPORT wxMotifDCImpl : public wxDCImpl
{
DECLARE_DYNAMIC_CLASS(wxDC)
public:
wxDC();
virtual ~wxDC() { }
wxMotifDCImpl(wxDC *owner);
virtual wxSize GetPPI() const;
@@ -78,7 +56,7 @@ public:
return wxRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY;
}
DECLARE_DYNAMIC_CLASS(wxMotifDCImpl)
};
#endif
// _WX_DC_H_
#endif // _WX_DC_H_

View File

@@ -1,6 +1,6 @@
/////////////////////////////////////////////////////////////////////////////
// Name: wx/motif/dcclient.h
// Purpose: wxClientDC, wxPaintDC and wxWindowDC classes
// Purpose: wxClientDCImpl, wxPaintDCImpl and wxWindowDCImpl classes
// Author: Julian Smart
// Modified by:
// Created: 17/09/98
@@ -12,31 +12,21 @@
#ifndef _WX_DCCLIENT_H_
#define _WX_DCCLIENT_H_
#include "wx/dc.h"
#include "wx/motif/dc.h"
// ----------------------------------------------------------------------------
// fwd declarations
// ----------------------------------------------------------------------------
class WXDLLIMPEXP_FWD_CORE wxWindowDC;
class WXDLLIMPEXP_FWD_CORE wxWindow;
// Under Windows, wxClientDC, wxPaintDC and wxWindowDC are implemented
// differently. On many platforms, however, they will be the same.
//-----------------------------------------------------------------------------
// wxWindowDC
// wxWindowDCImpl
//-----------------------------------------------------------------------------
class WXDLLEXPORT wxWindowDC : public wxDC
class WXDLLEXPORT wxWindowDCImpl : public wxMotifDCImpl
{
DECLARE_DYNAMIC_CLASS(wxWindowDC)
public:
wxWindowDC();
wxWindowDC( wxWindow *win );
wxWindowDCImpl(wxDC *owner);
wxWindowDCImpl(wxDC *owner, wxWindow *win);
virtual ~wxWindowDC();
virtual ~wxWindowDCImpl();
// TODO this function is Motif-only for now - should it go into base class?
void Clear(const wxRect& rect);
@@ -164,26 +154,29 @@ protected:
int m_currentStyle ;
int m_currentFill ;
int m_autoSetting ; // See comment in dcclient.cpp
DECLARE_DYNAMIC_CLASS(wxWindowDCImpl)
};
class WXDLLEXPORT wxPaintDC: public wxWindowDC
class WXDLLEXPORT wxPaintDCImpl: public wxWindowDCImpl
{
DECLARE_DYNAMIC_CLASS(wxPaintDC)
public:
wxPaintDC() { }
wxPaintDC(wxWindow* win);
wxPaintDCImpl(wxDC *owner) : wxWindowDCImpl(owner) { }
wxPaintDCImpl(wxDC *owner, wxWindow* win);
virtual ~wxPaintDC();
virtual ~wxPaintDCImpl();
DECLARE_DYNAMIC_CLASS(wxPaintDCImpl)
};
class WXDLLEXPORT wxClientDC: public wxWindowDC
class WXDLLEXPORT wxClientDCImpl: public wxWindowDCImpl
{
DECLARE_DYNAMIC_CLASS(wxClientDC)
public:
wxClientDC() { }
wxClientDC(wxWindow* win) : wxWindowDC(win) { }
wxClientDCImpl(wxDC *owner) : wxWindowDCImpl(owner) { }
wxClientDCImpl(wxDC *owner, wxWindow* win)
: wxWindowDCImpl(owner, win) { }
DECLARE_DYNAMIC_CLASS(wxClientDCImpl)
};
#endif // _WX_DCCLIENT_H_

View File

@@ -1,6 +1,6 @@
/////////////////////////////////////////////////////////////////////////////
// Name: wx/motif/dcmemory.h
// Purpose: wxMemoryDC class
// Purpose: wxMemoryDCImpl class
// Author: Julian Smart
// Modified by:
// Created: 17/09/98
@@ -12,23 +12,23 @@
#ifndef _WX_DCMEMORY_H_
#define _WX_DCMEMORY_H_
#include "wx/dcclient.h"
#include "wx/motif/dcclient.h"
class WXDLLIMPEXP_CORE wxMemoryDC : public wxWindowDC, public wxMemoryDCBase
class WXDLLIMPEXP_CORE wxMemoryDCImpl : public wxWindowDCImpl
{
DECLARE_DYNAMIC_CLASS(wxMemoryDC)
public:
wxMemoryDC() { Init(); }
wxMemoryDC(wxBitmap& bitmap) { Init(); SelectObject(bitmap); }
wxMemoryDC( wxDC *dc ); // Create compatible DC
virtual ~wxMemoryDC();
wxMemoryDCImpl(wxMemoryDC *owner) : wxWindowDCImpl(owner) { Init(); }
wxMemoryDCImpl(wxMemoryDC *owner, wxBitmap& bitmap)
: wxWindowDCImpl(owner)
{
Init();
DoSelect(bitmap);
}
void DoGetSize( int *width, int *height ) const;
wxMemoryDCImpl(wxMemoryDC *owner, wxDC *dc);
virtual ~wxMemoryDCImpl();
wxBitmap& GetBitmap() const { return (wxBitmap&) m_bitmap; }
protected:
virtual void DoGetSize( int *width, int *height ) const;
virtual void DoSelect(const wxBitmap& bitmap);
private:
@@ -37,6 +37,8 @@ private:
void Init();
wxBitmap m_bitmap;
DECLARE_DYNAMIC_CLASS(wxMemoryDCImpl)
};
#endif

View File

@@ -12,20 +12,21 @@
#ifndef _WX_DCPRINT_H_
#define _WX_DCPRINT_H_
#include "wx/dc.h"
#include "wx/motif/dc.h"
class WXDLLEXPORT wxPrinterDC: public wxDC
class WXDLLEXPORT wxPrinterDC : public wxMotifDCImpl
{
public:
DECLARE_CLASS(wxPrinterDC)
// Create a printer DC
wxPrinterDC(const wxString& driver, const wxString& device, const wxString& output, bool interactive = true, int orientation = wxPORTRAIT);
wxPrinterDCImpl(const wxString& driver, const wxString& device,
const wxString& output,
bool interactive = true,
int orientation = wxPORTRAIT);
virtual ~wxPrinterDC();
wxRect GetPaperRect();
virtual ~wxPrinterDC();
DECLARE_CLASS(wxPrinterDCImpl)
};
#endif
// _WX_DCPRINT_H_
#endif // _WX_DCPRINT_H_

View File

@@ -1,6 +1,6 @@
/////////////////////////////////////////////////////////////////////////////
// Name: wx/motif/dcscreen.h
// Purpose: wxScreenDC class
// Purpose: wxScreenDCImpl class
// Author: Julian Smart
// Modified by:
// Created: 17/09/98
@@ -12,16 +12,14 @@
#ifndef _WX_DCSCREEN_H_
#define _WX_DCSCREEN_H_
#include "wx/dcclient.h"
#include "wx/motif/dcclient.h"
class WXDLLEXPORT wxScreenDC: public wxWindowDC
class WXDLLEXPORT wxScreenDCImpl : public wxWindowDCImpl
{
DECLARE_DYNAMIC_CLASS(wxScreenDC)
public:
// Create a DC representing the whole screen
wxScreenDC();
virtual ~wxScreenDC();
wxScreenDCImpl(wxScreenDC *owner);
virtual ~wxScreenDCImpl();
// Compatibility with X's requirements for
// drawing on top of all windows
@@ -37,7 +35,8 @@ private:
// constructor.
static int sm_overlayWindowX;
static int sm_overlayWindowY;
DECLARE_DYNAMIC_CLASS(wxScreenDCImpl)
};
#endif
// _WX_DCSCREEN_H_
#endif // _WX_DCSCREEN_H_

View File

@@ -60,6 +60,12 @@
#include "wx/cocoa/dcscreen.h"
#endif
#ifdef __WXMOTIF__
#include "wx/motif/dcclient.h"
#include "wx/motif/dcmemory.h"
#include "wx/motif/dcscreen.h"
#endif
#ifdef __WXX11__
#include "wx/x11/dcclient.h"
#include "wx/x11/dcmemory.h"

View File

@@ -209,7 +209,7 @@ wxDialog *wxNativePrintFactory::CreatePrintSetupDialog( wxWindow *parent,
wxDCImpl* wxNativePrintFactory::CreatePrinterDCImpl( wxPrinterDC *owner, const wxPrintData& data )
{
#if defined(__WXGTK__) || defined(__WXUNIVERSAL__)
#if defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXUNIVERSAL__)
return new wxPostScriptDCImpl( owner, data );
#else
return new wxPrinterDCImpl( owner, data );

View File

@@ -1,6 +1,6 @@
/////////////////////////////////////////////////////////////////////////////
// Name: src/motif/dc.cpp
// Purpose: wxDC class
// Purpose: wxMotifDCImpl class
// Author: Julian Smart
// Modified by:
// Created: 01/02/97
@@ -12,36 +12,35 @@
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#include "wx/dc.h"
#ifndef WX_PRECOMP
#include "wx/dcmemory.h"
#endif
IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject)
#include "wx/motif/dc.h"
IMPLEMENT_ABSTRACT_CLASS(wxMotifDCImpl, wxDCImpl)
//-----------------------------------------------------------------------------
// wxDC
// wxMotifDCImpl
//-----------------------------------------------------------------------------
wxDC::wxDC()
wxMotifDCImpl::wxMotifDCImpl(wxDC *owner)
: wxDCImpl(owner)
{
m_ok = false;
m_backgroundMode = wxTRANSPARENT;
m_isInteractive = false;
}
void wxDC::DoDrawIcon( const wxIcon &icon, wxCoord x, wxCoord y)
void wxMotifDCImpl::DoDrawIcon( const wxIcon &icon, wxCoord x, wxCoord y)
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
wxCHECK_RET( icon.Ok(), "invalid icon" );
DoDrawBitmap(icon, x, y, true);
}
void wxDC::DoDrawBitmap( const wxBitmap& bitmap, wxCoord x, wxCoord y, bool useMask )
void wxMotifDCImpl::DoDrawBitmap( const wxBitmap& bitmap, wxCoord x, wxCoord y, bool useMask )
{
wxCHECK_RET( bitmap.Ok(), "invalid bitmap" );
@@ -60,12 +59,12 @@ void wxDC::DoDrawBitmap( const wxBitmap& bitmap, wxCoord x, wxCoord y, bool useM
}
#endif // 0
Blit(x, y, bitmap.GetWidth(), bitmap.GetHeight(), &memDC, 0, 0, wxCOPY, useMask);
DoBlit(x, y, bitmap.GetWidth(), bitmap.GetHeight(), &memDC, 0, 0, wxCOPY, useMask);
memDC.SelectObject(wxNullBitmap);
}
void wxDC::DoSetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoord height )
void wxMotifDCImpl::DoSetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoord height )
{
m_clipping = true;
m_clipX1 = x;
@@ -74,7 +73,7 @@ void wxDC::DoSetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoord hei
m_clipY2 = y + height;
}
void wxDC::DoGetSize( int* width, int* height ) const
void wxMotifDCImpl::DoGetSize( int* width, int* height ) const
{
if ( width )
*width = m_maxX - m_minX;
@@ -82,7 +81,7 @@ void wxDC::DoGetSize( int* width, int* height ) const
*height = m_maxY - m_minY;
}
void wxDC::DoGetSizeMM( int* width, int* height ) const
void wxMotifDCImpl::DoGetSizeMM( int* width, int* height ) const
{
int w, h;
GetSize( &w, &h );
@@ -94,7 +93,7 @@ void wxDC::DoGetSizeMM( int* width, int* height ) const
}
// Resolution in pixels per logical inch
wxSize wxDC::GetPPI() const
wxSize wxMotifDCImpl::GetPPI() const
{
// TODO (should probably be pure virtual)
return wxSize(0, 0);

View File

@@ -1,6 +1,6 @@
/////////////////////////////////////////////////////////////////////////////
// Name: src/motif/dcclient.cpp
// Purpose: wxClientDC class
// Purpose: wxClientDCImpl class
// Author: Julian Smart
// Modified by:
// Created: 01/02/97
@@ -39,8 +39,6 @@
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#include "wx/dcclient.h"
#ifndef WX_PRECOMP
#include "wx/log.h"
#include "wx/app.h"
@@ -59,6 +57,7 @@
#endif
#include "wx/motif/private.h"
#include "wx/motif/dcclient.h"
#ifdef __EMX__
#include <float.h> // for M_PI
@@ -84,9 +83,9 @@ static Pixmap bdiag, cdiag, fdiag, cross, horiz, verti;
// macros
// ----------------------------------------------------------------------------
IMPLEMENT_DYNAMIC_CLASS(wxClientDC, wxWindowDC)
IMPLEMENT_DYNAMIC_CLASS(wxPaintDC, wxWindowDC)
IMPLEMENT_DYNAMIC_CLASS(wxWindowDC, wxDC)
IMPLEMENT_ABSTRACT_CLASS(wxClientDCImpl, wxWindowDCImpl)
IMPLEMENT_ABSTRACT_CLASS(wxPaintDCImpl, wxWindowDCImpl)
IMPLEMENT_ABSTRACT_CLASS(wxWindowDCImpl, wxMotifDCImpl)
#define IS_HATCH(s) ((s)>=wxFIRST_HATCH && (s)<=wxLAST_HATCH)
@@ -129,10 +128,10 @@ static int roundmin(double a, double b)
// ----------------------------------------------------------------------------
// wxWindowDC
// wxWindowDCImpl
// ----------------------------------------------------------------------------
void wxWindowDC::Init()
void wxWindowDCImpl::Init()
{
m_gc = (WXGC) 0;
m_gcBacking = (WXGC) 0;
@@ -152,14 +151,16 @@ void wxWindowDC::Init()
m_clipRegion = (WXRegion) 0;
}
wxWindowDC::wxWindowDC()
wxWindowDCImpl::wxWindowDCImpl(wxDC *owner)
: wxMotifDCImpl(owner)
{
Init();
}
wxWindowDC::wxWindowDC( wxWindow *window )
wxWindowDCImpl::wxWindowDCImpl(wxDC *owner, wxWindow *window)
: wxMotifDCImpl(owner)
{
wxASSERT_MSG( (window != (wxWindow*) NULL), "You must pass a valid wxWindow to wxWindowDC/wxClientDC/wxPaintDC constructor." );
wxASSERT_MSG( (window != (wxWindow*) NULL), "You must pass a valid wxWindow to wxWindowDCImpl/wxClientDCImpl/wxPaintDCImpl constructor." );
Init();
@@ -204,7 +205,7 @@ wxWindowDC::wxWindowDC( wxWindow *window )
SetBackground(wxBrush(m_window->GetBackgroundColour(), wxSOLID));
}
wxWindowDC::~wxWindowDC()
wxWindowDCImpl::~wxWindowDCImpl()
{
if (m_gc)
XFreeGC ((Display*) m_display, (GC) m_gc);
@@ -222,13 +223,13 @@ wxWindowDC::~wxWindowDC()
extern bool wxDoFloodFill(wxDC *dc, wxCoord x, wxCoord y,
const wxColour & col, int style);
bool wxWindowDC::DoFloodFill(wxCoord x, wxCoord y,
bool wxWindowDCImpl::DoFloodFill(wxCoord x, wxCoord y,
const wxColour& col, int style)
{
return wxDoFloodFill(this, x, y, col, style);
return wxDoFloodFill(GetOwner(), x, y, col, style);
}
bool wxWindowDC::DoGetPixel( wxCoord x1, wxCoord y1, wxColour *col ) const
bool wxWindowDCImpl::DoGetPixel( wxCoord x1, wxCoord y1, wxColour *col ) const
{
// Generic (and therefore rather inefficient) method.
// Could be improved.
@@ -242,9 +243,9 @@ bool wxWindowDC::DoGetPixel( wxCoord x1, wxCoord y1, wxColour *col ) const
return true;
}
void wxWindowDC::DoDrawLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2 )
void wxWindowDCImpl::DoDrawLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2 )
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
int x1d, y1d, x2d, y2d;
@@ -267,9 +268,9 @@ void wxWindowDC::DoDrawLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2 )
CalcBoundingBox(x2, y2);
}
void wxWindowDC::DoCrossHair( wxCoord x, wxCoord y )
void wxWindowDCImpl::DoCrossHair( wxCoord x, wxCoord y )
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
if (m_autoSetting)
SetPen (m_pen);
@@ -296,9 +297,9 @@ void wxWindowDC::DoCrossHair( wxCoord x, wxCoord y )
}
}
void wxWindowDC::DoDrawArc( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2, wxCoord xc, wxCoord yc )
void wxWindowDCImpl::DoDrawArc( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2, wxCoord xc, wxCoord yc )
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
int xx1 = XLOG2DEV (x1);
int yy1 = YLOG2DEV (y1);
@@ -350,7 +351,7 @@ void wxWindowDC::DoDrawArc( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2, wxCo
while (alpha2 > 360 * 64)
alpha2 -= 360 * 64;
if (m_brush.Ok() && m_brush.GetStyle () != wxTRANSPARENT)
if (m_brush.IsOk() && m_brush.GetStyle () != wxTRANSPARENT)
{
SetBrush (m_brush);
XFillArc ((Display*) m_display, (Pixmap) m_pixmap, (GC) (GC) m_gc,
@@ -362,7 +363,7 @@ void wxWindowDC::DoDrawArc( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2, wxCo
}
if (m_pen.Ok() && m_pen.GetStyle () != wxTRANSPARENT)
if (m_pen.IsOk() && m_pen.GetStyle () != wxTRANSPARENT)
{
if (m_autoSetting)
SetPen (m_pen);
@@ -377,9 +378,9 @@ void wxWindowDC::DoDrawArc( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2, wxCo
CalcBoundingBox (x2, y2);
}
void wxWindowDC::DoDrawEllipticArc( wxCoord x, wxCoord y, wxCoord width, wxCoord height, double sa, double ea )
void wxWindowDCImpl::DoDrawEllipticArc( wxCoord x, wxCoord y, wxCoord width, wxCoord height, double sa, double ea )
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
int xd, yd, wd, hd;
@@ -397,7 +398,7 @@ void wxWindowDC::DoDrawEllipticArc( wxCoord x, wxCoord y, wxCoord width, wxCoord
if (end>start) end-=start;
else end+=360*64-start;
if (m_brush.Ok() && m_brush.GetStyle () != wxTRANSPARENT)
if (m_brush.IsOk() && m_brush.GetStyle () != wxTRANSPARENT)
{
m_autoSetting = true; // must be reset
@@ -409,7 +410,7 @@ void wxWindowDC::DoDrawEllipticArc( wxCoord x, wxCoord y, wxCoord width, wxCoord
XLOG2DEV_2 (x), YLOG2DEV_2 (y),wd,hd,start,end);
}
if (m_pen.Ok() && m_pen.GetStyle () != wxTRANSPARENT)
if (m_pen.IsOk() && m_pen.GetStyle () != wxTRANSPARENT)
{
if (m_autoSetting)
SetPen (m_pen);
@@ -422,11 +423,11 @@ void wxWindowDC::DoDrawEllipticArc( wxCoord x, wxCoord y, wxCoord width, wxCoord
CalcBoundingBox (x + width, y + height);
}
void wxWindowDC::DoDrawPoint( wxCoord x, wxCoord y )
void wxWindowDCImpl::DoDrawPoint( wxCoord x, wxCoord y )
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
if (m_pen.Ok() && m_autoSetting)
if (m_pen.IsOk() && m_autoSetting)
SetPen (m_pen);
XDrawPoint ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, XLOG2DEV (x), YLOG2DEV (y));
@@ -436,11 +437,11 @@ void wxWindowDC::DoDrawPoint( wxCoord x, wxCoord y )
CalcBoundingBox (x, y);
}
void wxWindowDC::DoDrawLines( int n, wxPoint points[], wxCoord xoffset, wxCoord yoffset )
void wxWindowDCImpl::DoDrawLines( int n, wxPoint points[], wxCoord xoffset, wxCoord yoffset )
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
if (m_pen.Ok() && m_pen.GetStyle () != wxTRANSPARENT)
if (m_pen.IsOk() && m_pen.GetStyle () != wxTRANSPARENT)
{
if (m_autoSetting)
SetPen (m_pen);
@@ -468,10 +469,10 @@ void wxWindowDC::DoDrawLines( int n, wxPoint points[], wxCoord xoffset, wxCoord
}
}
void wxWindowDC::DoDrawPolygon( int n, wxPoint points[],
void wxWindowDCImpl::DoDrawPolygon( int n, wxPoint points[],
wxCoord xoffset, wxCoord yoffset, int fillStyle )
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
XPoint *xpoints1 = new XPoint[n + 1];
XPoint *xpoints2 = new XPoint[n + 1];
@@ -491,7 +492,7 @@ void wxWindowDC::DoDrawPolygon( int n, wxPoint points[],
xpoints2[i].x = xpoints2[0].x;
xpoints2[i].y = xpoints2[0].y;
if (m_brush.Ok() && m_brush.GetStyle () != wxTRANSPARENT)
if (m_brush.IsOk() && m_brush.GetStyle () != wxTRANSPARENT)
{
SetBrush (m_brush);
XSetFillRule ((Display*) m_display, (GC) m_gc, fillStyle == wxODDEVEN_RULE ? EvenOddRule : WindingRule);
@@ -506,7 +507,7 @@ void wxWindowDC::DoDrawPolygon( int n, wxPoint points[],
}
}
if (m_pen.Ok() && m_pen.GetStyle () != wxTRANSPARENT)
if (m_pen.IsOk() && m_pen.GetStyle () != wxTRANSPARENT)
{
if (m_autoSetting)
SetPen (m_pen);
@@ -520,9 +521,9 @@ void wxWindowDC::DoDrawPolygon( int n, wxPoint points[],
delete[]xpoints2;
}
void wxWindowDC::DoDrawRectangle( wxCoord x, wxCoord y, wxCoord width, wxCoord height )
void wxWindowDCImpl::DoDrawRectangle( wxCoord x, wxCoord y, wxCoord width, wxCoord height )
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
int xd, yd, wfd, hfd, wd, hd;
@@ -537,7 +538,7 @@ void wxWindowDC::DoDrawRectangle( wxCoord x, wxCoord y, wxCoord width, wxCoord h
if (wd < 0) { wd = - wd; xd = xd - wd; }
if (hd < 0) { hd = - hd; yd = yd - hd; }
if (m_brush.Ok() && m_brush.GetStyle () != wxTRANSPARENT)
if (m_brush.IsOk() && m_brush.GetStyle () != wxTRANSPARENT)
{
SetBrush (m_brush);
XFillRectangle ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd, yd, wfd, hfd);
@@ -548,7 +549,7 @@ void wxWindowDC::DoDrawRectangle( wxCoord x, wxCoord y, wxCoord width, wxCoord h
wfd, hfd);
}
if (m_pen.Ok() && m_pen.GetStyle () != wxTRANSPARENT)
if (m_pen.IsOk() && m_pen.GetStyle () != wxTRANSPARENT)
{
if (m_autoSetting)
SetPen (m_pen);
@@ -563,9 +564,9 @@ void wxWindowDC::DoDrawRectangle( wxCoord x, wxCoord y, wxCoord width, wxCoord h
CalcBoundingBox (x + width, y + height);
}
void wxWindowDC::DoDrawRoundedRectangle( wxCoord x, wxCoord y, wxCoord width, wxCoord height, double radius )
void wxWindowDCImpl::DoDrawRoundedRectangle( wxCoord x, wxCoord y, wxCoord width, wxCoord height, double radius )
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
// If radius is negative, it's a proportion of the smaller dimension.
@@ -584,7 +585,7 @@ void wxWindowDC::DoDrawRoundedRectangle( wxCoord x, wxCoord y, wxCoord width, wx
// X drawing errors with small radii
if (rd == 0)
{
DrawRectangle( x, y, width, height );
DoDrawRectangle( x, y, width, height );
return;
}
@@ -615,7 +616,7 @@ void wxWindowDC::DoDrawRoundedRectangle( wxCoord x, wxCoord y, wxCoord width, wx
int rw_d2 = rd2 * 2;
int rh_d2 = rw_d2;
if (m_brush.Ok() && m_brush.GetStyle () != wxTRANSPARENT)
if (m_brush.IsOk() && m_brush.GetStyle () != wxTRANSPARENT)
{
SetBrush (m_brush);
@@ -665,7 +666,7 @@ void wxWindowDC::DoDrawRoundedRectangle( wxCoord x, wxCoord y, wxCoord width, wx
}
}
if (m_pen.Ok() && m_pen.GetStyle () != wxTRANSPARENT)
if (m_pen.IsOk() && m_pen.GetStyle () != wxTRANSPARENT)
{
SetPen (m_pen);
XDrawLine ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd + rd, yd,
@@ -723,9 +724,9 @@ void wxWindowDC::DoDrawRoundedRectangle( wxCoord x, wxCoord y, wxCoord width, wx
CalcBoundingBox (x + width, y + height);
}
void wxWindowDC::DoDrawEllipse( wxCoord x, wxCoord y, wxCoord width, wxCoord height )
void wxWindowDCImpl::DoDrawEllipse( wxCoord x, wxCoord y, wxCoord width, wxCoord height )
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
// Check for negative width and height
if (height < 0)
@@ -749,7 +750,7 @@ void wxWindowDC::DoDrawEllipse( wxCoord x, wxCoord y, wxCoord width, wxCoord hei
wd = XLOG2DEVREL(width) ;
hd = YLOG2DEVREL(height) ;
if (m_brush.Ok() && m_brush.GetStyle () != wxTRANSPARENT)
if (m_brush.IsOk() && m_brush.GetStyle () != wxTRANSPARENT)
{
SetBrush (m_brush);
XFillArc ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd, yd, wd, hd, 0, angle);
@@ -760,7 +761,7 @@ void wxWindowDC::DoDrawEllipse( wxCoord x, wxCoord y, wxCoord width, wxCoord hei
YLOG2DEVREL (height) - WX_GC_CF, 0, angle);
}
if (m_pen.Ok() && m_pen.GetStyle () != wxTRANSPARENT)
if (m_pen.IsOk() && m_pen.GetStyle () != wxTRANSPARENT)
{
if (m_autoSetting)
SetPen (m_pen);
@@ -776,26 +777,31 @@ void wxWindowDC::DoDrawEllipse( wxCoord x, wxCoord y, wxCoord width, wxCoord hei
}
bool wxWindowDC::CanDrawBitmap() const
bool wxWindowDCImpl::CanDrawBitmap() const
{
wxCHECK_MSG( Ok(), false, "invalid dc" );
wxCHECK_MSG( IsOk(), false, "invalid dc" );
return true;
}
// TODO: use scaled Blit e.g. as per John Price's implementation
// in Contrib/Utilities
bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest,
bool wxWindowDCImpl::DoBlit( wxCoord xdest, wxCoord ydest,
wxCoord width, wxCoord height,
wxDC *source, wxCoord xsrc, wxCoord ysrc,
int rop, bool useMask,
wxCoord xsrcMask, wxCoord ysrcMask )
{
wxCHECK_MSG( Ok(), false, "invalid dc" );
wxCHECK_MSG( IsOk(), false, "invalid dc" );
wxWindowDC* sourceDC = wxDynamicCast(source, wxWindowDC);
wxWindowDC const * sourceDC = wxDynamicCast(source, wxWindowDC);
wxCHECK_MSG( sourceDC, false, "Blit source DC must be wxWindowDCImpl or derived class." );
// cast is safe in virtue of the above wxCHECK_MSG()
const wxWindowDCImpl * const
srcImpl = static_cast<const wxWindowDCImpl *>(sourceDC->GetImpl());
WXDisplay * const srcDpy = srcImpl->m_display;
wxASSERT_MSG( sourceDC, "Blit source DC must be wxWindowDC or derived class." );
// Be sure that foreground pixels (1) of the Icon will be painted with
// foreground colour. [m_textForegroundColour] Background pixels (0)
@@ -804,7 +810,7 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest,
WXPixel oldBackgroundPixel = -1;
WXPixel oldForegroundPixel = -1;
if (m_textBackgroundColour.Ok())
if (m_textBackgroundColour.IsOk())
{
oldBackgroundPixel = m_backgroundPixel;
WXPixel pixel = m_textBackgroundColour.AllocColour(m_display);
@@ -814,7 +820,7 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest,
XSetBackground ((Display*) m_display,(GC) m_gcBacking,
pixel);
}
if (m_textForegroundColour.Ok())
if (m_textForegroundColour.IsOk())
{
oldForegroundPixel = m_currentColour.GetPixel();
@@ -845,12 +851,12 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest,
if (!useMask && (scaleX != 1.0 || scaleY != 1.0) && sourceDC->IsKindOf(CLASSINFO(wxMemoryDC)))
{
wxMemoryDC* memDC = (wxMemoryDC*) sourceDC;
wxBitmap& bitmap = memDC->GetBitmap();
wxBitmap& bitmap = memDC->GetSelectedBitmap();
wxASSERT_MSG( (bitmap.Ok()), "Bad source bitmap in wxWindowDC::Blit");
wxASSERT_MSG( (bitmap.IsOk()), "Bad source bitmap in wxWindowDCImpl::Blit");
wxImage image = bitmap.ConvertToImage();
if (!image.Ok())
if (!image.IsOk())
{
sourcePixmap = (Pixmap) bitmap.GetDrawable();
}
@@ -865,7 +871,9 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest,
}
}
else
sourcePixmap = (Pixmap) sourceDC->m_pixmap;
{
sourcePixmap = (Pixmap) srcImpl->m_pixmap;
}
if (m_pixmap && sourcePixmap)
{
@@ -874,12 +882,12 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest,
SetLogicalFunction (rop);
if (m_display != sourceDC->m_display)
if (m_display != srcDpy)
{
XImage *cache = NULL;
if (m_window && m_window->GetBackingPixmap())
XCopyRemote((Display*) sourceDC->m_display, (Display*) m_display,
XCopyRemote((Display*) srcDpy, (Display*) m_display,
(Pixmap) sourcePixmap, (Pixmap) m_window->GetBackingPixmap(),
(GC) m_gcBacking,
source->LogicalToDeviceX (xsrc),
@@ -892,15 +900,15 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest,
if ( useMask && source->IsKindOf(CLASSINFO(wxMemoryDC)) )
{
wxMemoryDC *memDC = (wxMemoryDC *)source;
wxBitmap& sel = memDC->GetBitmap();
if ( sel.Ok() && sel.GetMask() && sel.GetMask()->GetBitmap() )
wxBitmap& sel = memDC->GetSelectedBitmap();
if ( sel.IsOk() && sel.GetMask() && sel.GetMask()->GetBitmap() )
{
XSetClipMask ((Display*) m_display, (GC) m_gc, (Pixmap) sel.GetMask()->GetBitmap());
XSetClipOrigin ((Display*) m_display, (GC) m_gc, XLOG2DEV (xdest), YLOG2DEV (ydest));
}
}
XCopyRemote((Display*) sourceDC->m_display, (Display*) m_display, (Pixmap) sourcePixmap, (Pixmap) m_pixmap, (GC) m_gc,
XCopyRemote((Display*) srcDpy, (Display*) m_display, (Pixmap) sourcePixmap, (Pixmap) m_pixmap, (GC) m_gc,
source->LogicalToDeviceX (xsrc),
source->LogicalToDeviceY (ysrc),
source->LogicalToDeviceXRel(width),
@@ -926,7 +934,7 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest,
if (m_window && m_window->GetBackingPixmap())
{
// +++ MARKUS (mho@comnets.rwth-aachen): error on blitting bitmaps with depth 1
if (source->IsKindOf(CLASSINFO(wxMemoryDC)) && ((wxMemoryDC*) source)->GetBitmap().GetDepth() == 1)
if (source->IsKindOf(CLASSINFO(wxMemoryDC)) && ((wxMemoryDC*) source)->GetSelectedBitmap().GetDepth() == 1)
{
XCopyPlane ((Display*) m_display, (Pixmap) sourcePixmap, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking,
source->LogicalToDeviceX (xsrc),
@@ -948,8 +956,8 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest,
if ( useMask && source->IsKindOf(CLASSINFO(wxMemoryDC)) )
{
wxMemoryDC *memDC = (wxMemoryDC *)source;
wxBitmap& sel = memDC->GetBitmap();
if ( sel.Ok() && sel.GetMask() && sel.GetMask()->GetBitmap() )
wxBitmap& sel = memDC->GetSelectedBitmap();
if ( sel.IsOk() && sel.GetMask() && sel.GetMask()->GetBitmap() )
{
XSetClipMask ((Display*) m_display, (GC) m_gc, (Pixmap) sel.GetMask()->GetBitmap());
XSetClipOrigin ((Display*) m_display, (GC) m_gc, XLOG2DEV (xdest), YLOG2DEV (ydest));
@@ -958,7 +966,8 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest,
// Check if we're copying from a mono bitmap
if (source->IsKindOf(CLASSINFO(wxMemoryDC)) &&
((wxMemoryDC*)source)->GetBitmap().Ok() && (((wxMemoryDC*)source)->GetBitmap().GetDepth () == 1))
((wxMemoryDC*)source)->GetSelectedBitmap().IsOk() &&
(((wxMemoryDC*)source)->GetSelectedBitmap().GetDepth () == 1))
{
XCopyPlane ((Display*) m_display, (Pixmap) sourcePixmap, (Pixmap) m_pixmap, (GC) m_gc,
source->LogicalToDeviceX (xsrc),
@@ -1016,9 +1025,9 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest,
return retVal;
}
void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y )
void wxWindowDCImpl::DoDrawText( const wxString &text, wxCoord x, wxCoord y )
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
// Since X draws from the baseline of the text, must add the text height
int cx = 0;
@@ -1038,17 +1047,17 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y )
XSetFillStyle ((Display*) m_display, (GC) m_gcBacking, FillSolid);
}
if (m_font.Ok())
if (m_font.IsOk())
wxGetTextExtent (m_display, m_font, m_userScaleY * m_logicalScaleY,
text, &cx, &cy, &ascent, NULL);
// First draw a rectangle representing the text background, if a text
// background is specified
if (m_textBackgroundColour.Ok () && (m_backgroundMode != wxTRANSPARENT))
if (m_textBackgroundColour.IsOk () && (m_backgroundMode != wxTRANSPARENT))
{
wxColour oldPenColour = m_currentColour;
m_currentColour = m_textBackgroundColour;
bool sameColour = (oldPenColour.Ok () && m_textBackgroundColour.Ok () &&
bool sameColour = (oldPenColour.IsOk () && m_textBackgroundColour.IsOk () &&
(oldPenColour.Red () == m_textBackgroundColour.Red ()) &&
(oldPenColour.Blue () == m_textBackgroundColour.Blue ()) &&
(oldPenColour.Green () == m_textBackgroundColour.Green ()));
@@ -1081,11 +1090,11 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y )
}
// Now set the text foreground and draw the text
if (m_textForegroundColour.Ok ())
if (m_textForegroundColour.IsOk ())
{
wxColour oldPenColour = m_currentColour;
m_currentColour = m_textForegroundColour;
bool sameColour = (oldPenColour.Ok () && m_currentColour.Ok () &&
bool sameColour = (oldPenColour.IsOk () && m_currentColour.IsOk () &&
(oldPenColour.Red () == m_currentColour.Red ()) &&
(oldPenColour.Blue () == m_currentColour.Blue ()) &&
(oldPenColour.Green () == m_currentColour.Green ()) &&
@@ -1149,33 +1158,33 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y )
gcBackingV.fill_style);
wxCoord w, h;
GetTextExtent (text, &w, &h);
DoGetTextExtent (text, &w, &h);
CalcBoundingBox (x + w, y + h);
CalcBoundingBox (x, y);
}
void wxWindowDC::DoDrawRotatedText( const wxString &text, wxCoord x, wxCoord y,
void wxWindowDCImpl::DoDrawRotatedText( const wxString &text, wxCoord x, wxCoord y,
double angle )
{
if (angle == 0.0)
{
DrawText(text, x, y);
DoDrawText(text, x, y);
return;
}
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
WXPixel oldBackgroundPixel = -1;
WXPixel oldForegroundPixel = -1;
WXPixel foregroundPixel = -1;
WXPixel backgroundPixel = -1;
if (m_textBackgroundColour.Ok())
if (m_textBackgroundColour.IsOk())
{
oldBackgroundPixel = m_backgroundPixel;
backgroundPixel = m_textBackgroundColour.AllocColour(m_display);
}
if (m_textForegroundColour.Ok())
if (m_textForegroundColour.IsOk())
{
oldForegroundPixel = m_currentColour.GetPixel();
@@ -1191,7 +1200,7 @@ void wxWindowDC::DoDrawRotatedText( const wxString &text, wxCoord x, wxCoord y,
int cy = 0;
int ascent = 0;
if (m_font.Ok())
if (m_font.IsOk())
wxGetTextExtent (m_display, m_font, m_userScaleY * m_logicalScaleY,
text, &cx, &cy, &ascent, NULL);
@@ -1290,20 +1299,20 @@ void wxWindowDC::DoDrawRotatedText( const wxString &text, wxCoord x, wxCoord y,
CalcBoundingBox (maxx, maxy);
}
bool wxWindowDC::CanGetTextExtent() const
bool wxWindowDCImpl::CanGetTextExtent() const
{
return true;
}
void wxWindowDC::DoGetTextExtent( const wxString &string, wxCoord *width, wxCoord *height,
void wxWindowDCImpl::DoGetTextExtent( const wxString &string, wxCoord *width, wxCoord *height,
wxCoord *descent, wxCoord *externalLeading,
const wxFont *font ) const
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
const wxFont* theFont = font ? font : &m_font;
if (!theFont->Ok())
if (!theFont->IsOk())
{
// TODO: this should be an error log function
wxFAIL_MSG("set a valid font before calling GetTextExtent!");
@@ -1322,10 +1331,10 @@ void wxWindowDC::DoGetTextExtent( const wxString &string, wxCoord *width, wxCoor
*externalLeading = 0;
}
wxCoord wxWindowDC::GetCharWidth() const
wxCoord wxWindowDCImpl::GetCharWidth() const
{
wxCHECK_MSG( Ok(), 0, "invalid dc" );
wxCHECK_MSG( m_font.Ok(), 0, "invalid font" );
wxCHECK_MSG( IsOk(), 0, "invalid dc" );
wxCHECK_MSG( m_font.IsOk(), 0, "invalid font" );
int width;
@@ -1335,10 +1344,10 @@ wxCoord wxWindowDC::GetCharWidth() const
return XDEV2LOGREL(width);
}
wxCoord wxWindowDC::GetCharHeight() const
wxCoord wxWindowDCImpl::GetCharHeight() const
{
wxCHECK_MSG( Ok(), 0, "invalid dc" );
wxCHECK_MSG( m_font.Ok(), 0, "invalid font" );
wxCHECK_MSG( IsOk(), 0, "invalid dc" );
wxCHECK_MSG( m_font.IsOk(), 0, "invalid font" );
int height;
@@ -1348,7 +1357,7 @@ wxCoord wxWindowDC::GetCharHeight() const
return XDEV2LOGREL(height);
}
void wxWindowDC::DoGetSize( int *width, int *height ) const
void wxWindowDCImpl::DoGetSize( int *width, int *height ) const
{
int w = 0, h = 0;
@@ -1367,17 +1376,17 @@ void wxWindowDC::DoGetSize( int *width, int *height ) const
if( height ) *height = h;
}
void wxWindowDC::Clear()
void wxWindowDCImpl::Clear()
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
wxRect rect( GetSize() );
Clear( rect );
}
void wxWindowDC::Clear(const wxRect& rect)
void wxWindowDCImpl::Clear(const wxRect& rect)
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
int x = rect.x; int y = rect.y;
int w = rect.width; int h = rect.height;
@@ -1396,13 +1405,13 @@ void wxWindowDC::Clear(const wxRect& rect)
m_brush = saveBrush;
}
void wxWindowDC::SetFont( const wxFont &font )
void wxWindowDCImpl::SetFont( const wxFont &font )
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
m_font = font;
if (!m_font.Ok())
if (!m_font.IsOk())
{
return;
}
@@ -1418,7 +1427,7 @@ void wxWindowDC::SetFont( const wxFont &font )
#endif
}
void wxWindowDC::SetForegroundPixelWithLogicalFunction(WXPixel pixel)
void wxWindowDCImpl::SetForegroundPixelWithLogicalFunction(WXPixel pixel)
{
if (m_logicalFunction == wxXOR)
{
@@ -1438,7 +1447,7 @@ void wxWindowDC::SetForegroundPixelWithLogicalFunction(WXPixel pixel)
}
}
WXPixel wxWindowDC::CalculatePixel(wxColour& colour, wxColour& curCol,
WXPixel wxWindowDCImpl::CalculatePixel(wxColour& colour, wxColour& curCol,
bool roundToWhite) const
{
const unsigned char wp = (unsigned char)255;
@@ -1479,12 +1488,12 @@ WXPixel wxWindowDC::CalculatePixel(wxColour& colour, wxColour& curCol,
return pixel;
}
void wxWindowDC::SetPen( const wxPen &pen )
void wxWindowDCImpl::SetPen( const wxPen &pen )
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
m_pen = pen;
if (!m_pen.Ok())
if (!m_pen.IsOk())
return;
wxBitmap oldStipple = m_currentStipple;
@@ -1517,7 +1526,7 @@ void wxWindowDC::SetPen( const wxPen &pen )
old_pen_dash == m_currentPenDash &&
old_pen_width == m_currentPenWidth);
bool sameColour = (oldPenColour.Ok () &&
bool sameColour = (oldPenColour.IsOk () &&
(oldPenColour.Red () == m_currentColour.Red ()) &&
(oldPenColour.Blue () == m_currentColour.Blue ()) &&
(oldPenColour.Green () == m_currentColour.Green ()) &&
@@ -1693,7 +1702,7 @@ void wxWindowDC::SetPen( const wxPen &pen )
if (m_window && m_window->GetBackingPixmap())
XSetStipple ((Display*) m_display,(GC) m_gcBacking, myStipple);
}
else if (m_currentStyle == wxSTIPPLE && m_currentStipple.Ok()
else if (m_currentStyle == wxSTIPPLE && m_currentStipple.IsOk()
&& ((!m_currentStipple.IsSameAs(oldStipple)) || !GET_OPTIMIZATION))
{
XSetStipple ((Display*) m_display, (GC) m_gc, (Pixmap) m_currentStipple.GetDrawable());
@@ -1739,13 +1748,13 @@ void wxWindowDC::SetPen( const wxPen &pen )
m_autoSetting = 0;
}
void wxWindowDC::SetBrush( const wxBrush &brush )
void wxWindowDCImpl::SetBrush( const wxBrush &brush )
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
m_brush = brush;
if (!m_brush.Ok() || m_brush.GetStyle () == wxTRANSPARENT)
if (!m_brush.IsOk() || m_brush.GetStyle () == wxTRANSPARENT)
return;
int oldFill = m_currentFill;
@@ -1760,7 +1769,7 @@ void wxWindowDC::SetBrush( const wxBrush &brush )
wxColour oldBrushColour(m_currentColour);
m_currentColour = m_brush.GetColour ();
bool sameColour = (oldBrushColour.Ok () &&
bool sameColour = (oldBrushColour.IsOk () &&
(oldBrushColour.Red () == m_currentColour.Red ()) &&
(oldBrushColour.Blue () == m_currentColour.Blue ()) &&
(oldBrushColour.Green () == m_currentColour.Green ()) &&
@@ -1865,7 +1874,7 @@ void wxWindowDC::SetBrush( const wxBrush &brush )
// X can forget the stipple value when resizing a window (apparently)
// so always set the stipple.
else if (m_currentFill != wxSOLID && m_currentFill != wxTRANSPARENT &&
m_currentStipple.Ok()) // && m_currentStipple != oldStipple)
m_currentStipple.IsOk()) // && m_currentStipple != oldStipple)
{
if (m_currentStipple.GetDepth() == 1)
{
@@ -1897,13 +1906,13 @@ void wxWindowDC::SetBrush( const wxBrush &brush )
m_brush.GetColour().SetPixel(oldBrushColour.GetPixel());
}
void wxWindowDC::SetBackground( const wxBrush &brush )
void wxWindowDCImpl::SetBackground( const wxBrush &brush )
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
m_backgroundBrush = brush;
if (!m_backgroundBrush.Ok())
if (!m_backgroundBrush.IsOk())
return;
m_backgroundPixel = m_backgroundBrush.GetColour().AllocColour(m_display);
@@ -1916,9 +1925,9 @@ void wxWindowDC::SetBackground( const wxBrush &brush )
m_backgroundPixel);
}
void wxWindowDC::SetLogicalFunction( int function )
void wxWindowDCImpl::SetLogicalFunction( int function )
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
int x_function;
@@ -1991,30 +2000,30 @@ void wxWindowDC::SetLogicalFunction( int function )
}
void wxWindowDC::SetTextForeground( const wxColour &col )
void wxWindowDCImpl::SetTextForeground( const wxColour &col )
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
m_textForegroundColour = col;
}
void wxWindowDC::SetTextBackground( const wxColour &col )
void wxWindowDCImpl::SetTextBackground( const wxColour &col )
{
wxCHECK_RET( Ok(), "invalid dc" );
wxCHECK_RET( IsOk(), "invalid dc" );
m_textBackgroundColour = col;
}
void wxWindowDC::SetBackgroundMode( int mode )
void wxWindowDCImpl::SetBackgroundMode( int mode )
{
m_backgroundMode = mode;
}
void wxWindowDC::SetPalette( const wxPalette& palette )
void wxWindowDCImpl::SetPalette( const wxPalette& palette )
{
if (m_window)
{
if (palette.Ok())
if (palette.IsOk())
/* Use GetXColormap */
XSetWindowColormap ((Display*) m_display, (Window) m_window->GetXWindow(),
(Colormap) palette.GetXColormap());
@@ -2033,9 +2042,9 @@ static void wxCopyRegion( WXRegion src, WXRegion& dst )
}
// Helper function; userRegion is the region set by calling SetClippingRegion
void wxWindowDC::SetDCClipping( WXRegion userRegion )
void wxWindowDCImpl::SetDCClipping( WXRegion userRegion )
{
bool hasUpdateRegion = m_window && m_window->GetUpdateRegion().Ok();
bool hasUpdateRegion = m_window && m_window->GetUpdateRegion().IsOk();
// this means that we should start the clip region from scratch,
// or from the update region, if any
if( !userRegion )
@@ -2065,10 +2074,10 @@ void wxWindowDC::SetDCClipping( WXRegion userRegion )
XSetClipMask( (Display*)m_display, (GC)m_gc, None );
}
void wxWindowDC::DoSetClippingRegion( wxCoord x, wxCoord y,
void wxWindowDCImpl::DoSetClippingRegion( wxCoord x, wxCoord y,
wxCoord width, wxCoord height )
{
wxDC::DoSetClippingRegion( x, y, width, height );
wxMotifDCImpl::DoSetClippingRegion( x, y, width, height );
wxRegion temp(XLOG2DEV(x), YLOG2DEV(y),
XLOG2DEVREL(width), YLOG2DEVREL(height));
@@ -2089,7 +2098,7 @@ void wxWindowDC::DoSetClippingRegion( wxCoord x, wxCoord y,
}
}
void wxWindowDC::DoSetClippingRegionAsRegion( const wxRegion& region )
void wxWindowDCImpl::DoSetClippingRegionAsRegion( const wxRegion& region )
{
SetDCClipping(region.GetX11Region());
@@ -2110,9 +2119,9 @@ void wxWindowDC::DoSetClippingRegionAsRegion( const wxRegion& region )
}
void wxWindowDC::DestroyClippingRegion()
void wxWindowDCImpl::DestroyClippingRegion()
{
wxDC::DestroyClippingRegion();
wxMotifDCImpl::DestroyClippingRegion();
SetDCClipping(NULL);
@@ -2121,13 +2130,13 @@ void wxWindowDC::DestroyClippingRegion()
}
// Resolution in pixels per logical inch
wxSize wxWindowDC::GetPPI() const
wxSize wxWindowDCImpl::GetPPI() const
{
// TODO
return wxSize(100, 100);
}
int wxWindowDC::GetDepth() const
int wxWindowDCImpl::GetDepth() const
{
// TODO
return 24;
@@ -2137,16 +2146,17 @@ int wxWindowDC::GetDepth() const
// ----------------------------------------------------------------------------
// wxPaintDC
// wxPaintDCImpl
// ----------------------------------------------------------------------------
wxPaintDC::wxPaintDC(wxWindow* win) : wxWindowDC(win)
wxPaintDCImpl::wxPaintDCImpl(wxDC *owner, wxWindow* win)
: wxWindowDCImpl(owner, win)
{
// Set the clipping region.to the update region
SetDCClipping((WXRegion)NULL);
}
wxPaintDC::~wxPaintDC()
wxPaintDCImpl::~wxPaintDCImpl()
{
if (m_window)
m_window->ClearUpdateRegion();
@@ -2233,19 +2243,3 @@ install:
XDestroyImage(image);
}
#if 0
/* Helper function for 16-bit fonts */
static int str16len(const char *s)
{
int count = 0;
while (s[0] && s[1]) {
count++;
s += 2;
}
return count;
}
#endif // 0

View File

@@ -1,6 +1,6 @@
/////////////////////////////////////////////////////////////////////////////
// Name: src/motif/dcmemory.cpp
// Purpose: wxMemoryDC class
// Purpose: wxMemoryDCImpl class
// Author: Julian Smart
// Modified by:
// Created: 01/02/97
@@ -12,8 +12,6 @@
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#include "wx/dcmemory.h"
#ifndef WX_PRECOMP
#include "wx/utils.h"
#include "wx/settings.h"
@@ -28,14 +26,15 @@
#endif
#include "wx/motif/private.h"
#include "wx/motif/dcmemory.h"
//-----------------------------------------------------------------------------
// wxMemoryDC
// wxMemoryDCImpl
//-----------------------------------------------------------------------------
IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC, wxWindowDC)
IMPLEMENT_ABSTRACT_CLASS(wxMemoryDCImpl, wxWindowDCImpl)
void wxMemoryDC::Init()
void wxMemoryDCImpl::Init()
{
m_ok = true;
m_display = wxGetDisplay();
@@ -59,11 +58,12 @@ void wxMemoryDC::Init()
SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT));
}
wxMemoryDC::wxMemoryDC( wxDC* dc )
wxMemoryDCImpl::wxMemoryDCImpl(wxMemoryDC *owner, wxDC* dc)
: wxWindowDCImpl(owner)
{
m_ok = true;
if (dc && dc->IsKindOf(CLASSINFO(wxWindowDC)))
m_display = ((wxWindowDC*)dc)->GetDisplay();
m_display = ((wxWindowDCImpl *)dc->GetImpl())->GetDisplay();
else
m_display = wxGetDisplay();
@@ -85,11 +85,11 @@ wxMemoryDC::wxMemoryDC( wxDC* dc )
SetPen (* wxBLACK_PEN);
}
wxMemoryDC::~wxMemoryDC(void)
wxMemoryDCImpl::~wxMemoryDCImpl(void)
{
}
void wxMemoryDC::DoSelect( const wxBitmap& bitmap )
void wxMemoryDCImpl::DoSelect( const wxBitmap& bitmap )
{
m_bitmap = bitmap;
@@ -125,7 +125,7 @@ void wxMemoryDC::DoSelect( const wxBitmap& bitmap )
};
}
void wxMemoryDC::DoGetSize( int *width, int *height ) const
void wxMemoryDCImpl::DoGetSize( int *width, int *height ) const
{
if (m_bitmap.Ok())
{

View File

@@ -1,6 +1,6 @@
/////////////////////////////////////////////////////////////////////////////
// Name: src/motif/dcscreen.cpp
// Purpose: wxScreenDC class
// Purpose: wxScreenDCImpl class
// Author: Julian Smart
// Modified by:
// Created: 17/09/98
@@ -12,8 +12,6 @@
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#include "wx/dcscreen.h"
#ifndef WX_PRECOMP
#include "wx/utils.h"
#include "wx/window.h"
@@ -29,15 +27,17 @@
#endif
#include "wx/motif/private.h"
#include "wx/motif/dcscreen.h"
IMPLEMENT_DYNAMIC_CLASS(wxScreenDC, wxWindowDC)
IMPLEMENT_ABSTRACT_CLASS(wxScreenDCImpl, wxWindowDCImpl)
WXWindow wxScreenDC::sm_overlayWindow = 0;
int wxScreenDC::sm_overlayWindowX = 0;
int wxScreenDC::sm_overlayWindowY = 0;
WXWindow wxScreenDCImpl::sm_overlayWindow = 0;
int wxScreenDCImpl::sm_overlayWindowX = 0;
int wxScreenDCImpl::sm_overlayWindowY = 0;
// Create a DC representing the whole screen
wxScreenDC::wxScreenDC()
wxScreenDCImpl::wxScreenDCImpl(wxScreenDC *owner)
: wxWindowDCImpl(owner)
{
m_display = wxGetDisplay();
Display* display = (Display*) m_display;
@@ -65,12 +65,12 @@ wxScreenDC::wxScreenDC()
m_ok = true;
}
wxScreenDC::~wxScreenDC()
wxScreenDCImpl::~wxScreenDCImpl()
{
EndDrawingOnTop();
}
bool wxScreenDC::StartDrawingOnTop(wxWindow* window)
bool wxScreenDCImpl::StartDrawingOnTop(wxWindow* window)
{
wxRect rect;
int x, y, width, height;
@@ -84,7 +84,7 @@ bool wxScreenDC::StartDrawingOnTop(wxWindow* window)
return StartDrawingOnTop(& rect);
}
bool wxScreenDC::StartDrawingOnTop(wxRect* rect)
bool wxScreenDCImpl::StartDrawingOnTop(wxRect* rect)
{
if (sm_overlayWindow)
return false;
@@ -123,7 +123,7 @@ bool wxScreenDC::StartDrawingOnTop(wxRect* rect)
return false;
}
bool wxScreenDC::EndDrawingOnTop()
bool wxScreenDCImpl::EndDrawingOnTop()
{
if (sm_overlayWindow)
{

View File

@@ -80,6 +80,7 @@
#endif
#include "wx/motif/private.h"
#include "wx/motif/dcclient.h"
#include <string.h>
@@ -880,6 +881,9 @@ void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect)
int y2 = (dy >= 0) ? y + dy : y;
wxClientDC dc(this);
wxClientDCImpl * const
dcimpl = static_cast<wxClientDCImpl *>(dc.GetImpl());
GC const gc = (GC) dcimpl->GetGC();
dc.SetLogicalFunction (wxCOPY);
@@ -887,10 +891,9 @@ void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect)
Window window = XtWindow(widget);
Display* display = XtDisplay(widget);
XCopyArea(display, window, window, (GC) dc.GetGC(),
x1, y1, w1, h1, x2, y2);
XCopyArea(display, window, window, gc, x1, y1, w1, h1, x2, y2);
dc.SetAutoSetting(true);
dcimpl->SetAutoSetting(true);
wxBrush brush(GetBackgroundColour(), wxSOLID);
dc.SetBrush(brush); // FIXME: needed?
@@ -918,8 +921,7 @@ void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect)
rect->width = dx;
rect->height = h;
XFillRectangle(display, window,
(GC) dc.GetGC(), rect->x, rect->y, rect->width, rect->height);
XFillRectangle(display, window, gc, rect->x, rect->y, rect->width, rect->height);
rect->x = rect->x;
rect->y = rect->y;
@@ -937,9 +939,7 @@ void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect)
rect->width = -dx;
rect->height = h;
XFillRectangle(display, window,
(GC) dc.GetGC(), rect->x, rect->y, rect->width,
rect->height);
XFillRectangle(display, window, gc, rect->x, rect->y, rect->width, rect->height);
rect->x = rect->x;
rect->y = rect->y;
@@ -957,8 +957,7 @@ void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect)
rect->width = w;
rect->height = dy;
XFillRectangle(display, window,
(GC) dc.GetGC(), rect->x, rect->y, rect->width, rect->height);
XFillRectangle(display, window, gc, rect->x, rect->y, rect->width, rect->height);
rect->x = rect->x;
rect->y = rect->y;
@@ -976,8 +975,7 @@ void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect)
rect->width = w;
rect->height = -dy;
XFillRectangle(display, window,
(GC) dc.GetGC(), rect->x, rect->y, rect->width, rect->height);
XFillRectangle(display, window, gc, rect->x, rect->y, rect->width, rect->height);
rect->x = rect->x;
rect->y = rect->y;
@@ -1549,10 +1547,13 @@ void wxWindow::Refresh(bool eraseBack, const wxRect *rect)
wxClientDC dc(this);
wxBrush backgroundBrush(GetBackgroundColour(), wxSOLID);
dc.SetBackground(backgroundBrush);
wxClientDCImpl * const
dcimpl = static_cast<wxClientDCImpl *>(dc.GetImpl());
if (rect)
dc.Clear(*rect);
dcimpl->Clear(*rect);
else
dc.Clear();
dcimpl->Clear();
}
XSendEvent(display, thisWindow, False, ExposureMask, (XEvent *)&dummyEvent);
@@ -1565,7 +1566,10 @@ void wxWindow::DoPaint()
{
wxPaintDC dc(this);
GC tempGC = (GC) dc.GetBackingGC();
wxPaintDCImpl * const
dcimpl = static_cast<wxPaintDCImpl *>(dc.GetImpl());
GC tempGC = (GC) dcimpl->GetBackingGC();
Widget widget = (Widget) GetMainWidget();