X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b95edd4708105589d03267b5932f3a42e89b0d06..fcc9de54786c9a42d20b6e3409083a34b4399f4b:/include/wx/dc.h diff --git a/include/wx/dc.h b/include/wx/dc.h index 8366a5c479..39d9c5563b 100644 --- a/include/wx/dc.h +++ b/include/wx/dc.h @@ -12,7 +12,7 @@ #ifndef _WX_DC_H_BASE_ #define _WX_DC_H_BASE_ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(__APPLE__) #pragma interface "dcbase.h" #endif @@ -30,6 +30,7 @@ #include "wx/palette.h" #include "wx/list.h" // we use wxList in inline functions +class WXDLLEXPORT wxDC; class WXDLLEXPORT wxDCBase; class WXDLLEXPORT wxDrawObject @@ -37,9 +38,9 @@ class WXDLLEXPORT wxDrawObject public: wxDrawObject() - { - ResetBoundingBox(); - } + : m_isBBoxValid(FALSE) + , m_minX(0), m_minY(0), m_maxX(0), m_maxY(0) + { } virtual ~wxDrawObject() { } @@ -103,33 +104,34 @@ class WXDLLEXPORT wxDCBase : public wxObject { public: wxDCBase() + : m_colour(wxColourDisplay()) + , m_ok(TRUE) + , m_clipping(FALSE) + , m_isInteractive(0) + , m_isBBoxValid(FALSE) + , m_logicalOriginX(0), m_logicalOriginY(0) + , m_deviceOriginX(0), m_deviceOriginY(0) + , m_logicalScaleX(1.0), m_logicalScaleY(1.0) + , m_userScaleX(1.0), m_userScaleY(1.0) + , m_scaleX(1.0), m_scaleY(1.0) + , m_signX(1), m_signY(1) + , m_minX(0), m_minY(0), m_maxX(0), m_maxY(0) + , m_clipX1(0), m_clipY1(0), m_clipX2(0), m_clipY2(0) + , m_logicalFunction(wxCOPY) + , m_backgroundMode(wxTRANSPARENT) + , m_mappingMode(wxMM_TEXT) + , m_pen() + , m_brush() + , m_backgroundBrush(*wxTRANSPARENT_BRUSH) + , m_textForegroundColour(*wxBLACK) + , m_textBackgroundColour(*wxWHITE) + , m_font() +#if wxUSE_PALETTE + , m_palette() + , m_hasCustomPalette(FALSE) +#endif // wxUSE_PALETTE { - m_clipping = FALSE; - m_ok = TRUE; - ResetBoundingBox(); - - m_signX = m_signY = 1; - - m_logicalOriginX = m_logicalOriginY = - m_deviceOriginX = m_deviceOriginY = 0; - - m_logicalScaleX = m_logicalScaleY = - m_userScaleX = m_userScaleY = - m_scaleX = m_scaleY = 1.0; - - m_logicalFunction = wxCOPY; - - m_backgroundMode = wxTRANSPARENT; - - m_mappingMode = wxMM_TEXT; - - m_backgroundBrush = *wxTRANSPARENT_BRUSH; - - m_textForegroundColour = *wxBLACK; - m_textBackgroundColour = *wxWHITE; - - m_colour = wxColourDisplay(); } ~wxDCBase() { } @@ -147,12 +149,12 @@ public: CalcBoundingBox(drawobject->MaxX(),drawobject->MaxY()); } - void FloodFill(wxCoord x, wxCoord y, const wxColour& col, + bool FloodFill(wxCoord x, wxCoord y, const wxColour& col, int style = wxFLOOD_SURFACE) - { DoFloodFill(x, y, col, style); } - void FloodFill(const wxPoint& pt, const wxColour& col, + { return DoFloodFill(x, y, col, style); } + bool FloodFill(const wxPoint& pt, const wxColour& col, int style = wxFLOOD_SURFACE) - { DoFloodFill(pt.x, pt.y, col, style); } + { return DoFloodFill(pt.x, pt.y, col, style); } bool GetPixel(wxCoord x, wxCoord y, wxColour *col) const { return DoGetPixel(x, y, col); } @@ -340,10 +342,15 @@ public: { DoGetClippingBox(x, y, w, h); } void GetClippingBox(wxRect& rect) const { +#if 1 + DoGetClippingBox(&rect.x, &rect.y, &rect.width, &rect.height); +#else // Necessary to use intermediate variables for 16-bit compilation + // REMOVE ME if the above is OK for all current platforms wxCoord x, y, w, h; DoGetClippingBox(&x, &y, &w, &h); rect.x = x; rect.y = y; rect.width = w; rect.height = h; +#endif } // text extent @@ -490,16 +497,6 @@ public: virtual void SetOptimization(bool WXUNUSED(opt)) { } virtual bool GetOptimization() { return FALSE; } - // Some platforms have a DC cache, which should be cleared - // at appropriate points such as after a series of DC operations. - // Put ClearCache in the wxDC implementation class, since it has to be - // static. - // static void ClearCache() ; -#if 0 // wxUSE_DC_CACHEING - static void EnableCache(bool cacheing) { sm_cacheing = cacheing; } - static bool CacheEnabled() { return sm_cacheing ; } -#endif - // bounding box // ------------ @@ -593,21 +590,17 @@ public: #if WXWIN_COMPATIBILITY -#if wxUSE_PALETTE - virtual void SetColourMap(const wxPalette& palette) { SetPalette(palette); } -#endif // wxUSE_PALETTE - void GetTextExtent(const wxString& string, float *x, float *y, float *descent = NULL, float *externalLeading = NULL, wxFont *theFont = NULL, bool use16bit = FALSE) const ; void GetSize(float* width, float* height) const { int w, h; GetSize(& w, & h); *width = w; *height = h; } - void GetSizeMM(float *width, float *height) const { long w, h; GetSizeMM(& w, & h); *width = (float) w; *height = (float) h; } + void GetSizeMM(float *width, float *height) const { int w, h; GetSizeMM(& w, & h); *width = (float) w; *height = (float) h; } #endif // WXWIN_COMPATIBILITY protected: // the pure virtual functions which should be implemented by wxDC - virtual void DoFloodFill(wxCoord x, wxCoord y, const wxColour& col, + virtual bool DoFloodFill(wxCoord x, wxCoord y, const wxColour& col, int style = wxFLOOD_SURFACE) = 0; virtual bool DoGetPixel(wxCoord x, wxCoord y, wxColour *col) const = 0; @@ -707,9 +700,6 @@ protected: bool m_clipping:1; bool m_isInteractive:1; bool m_isBBoxValid:1; -#if wxUSE_DC_CACHEING -// static bool sm_cacheing; -#endif // coordinate system variables @@ -767,10 +757,10 @@ private: #include "wx/mgl/dc.h" #elif defined(__WXMAC__) #include "wx/mac/dc.h" +#elif defined(__WXCOCOA__) + #include "wx/cocoa/dc.h" #elif defined(__WXPM__) #include "wx/os2/dc.h" -#elif defined(__WXSTUBS__) - #include "wx/stubs/dc.h" #endif // ---------------------------------------------------------------------------- @@ -781,7 +771,7 @@ private: class WXDLLEXPORT wxDCTextColourChanger { public: - wxDCTextColourChanger(wxDC& dc) : m_dc(dc) { } + wxDCTextColourChanger(wxDC& dc) : m_dc(dc), m_colFgOld() { } ~wxDCTextColourChanger() {