X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/32b8ec418aee4e38877d4cb79e2984c766dcc358..f23b6f74bbf43799594924e94382b13587b4a57e:/include/wx/mgl/dc.h diff --git a/include/wx/mgl/dc.h b/include/wx/mgl/dc.h index 1032996730..1777302433 100644 --- a/include/wx/mgl/dc.h +++ b/include/wx/mgl/dc.h @@ -4,19 +4,18 @@ // Author: Vaclav Slavik // Created: 2001/03/09 // RCS-ID: $Id$ -// Copyright: (c) Vaclav Slavik +// Copyright: (c) 2001-2002 SciTech Software, Inc. (www.scitechsoft.com) // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_DC_H_ #define _WX_DC_H_ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface "dc.h" #endif #include "wx/defs.h" -#include "wx/dc.h" #include "wx/region.h" //----------------------------------------------------------------------------- @@ -29,6 +28,7 @@ class WXDLLEXPORT wxDC; // constants //----------------------------------------------------------------------------- +#ifndef MM_TEXT #define MM_TEXT 0 #define MM_ISOTROPIC 1 #define MM_ANISOTROPIC 2 @@ -37,6 +37,7 @@ class WXDLLEXPORT wxDC; #define MM_TWIPS 5 #define MM_POINTS 6 #define MM_METRIC 7 +#endif //----------------------------------------------------------------------------- // wxDC @@ -45,6 +46,7 @@ class WXDLLEXPORT wxDC; // MGL fwd declarations: class MGLDevCtx; +class MGLRegion; struct font_t; class WXDLLEXPORT wxDC : public wxDCBase @@ -98,7 +100,7 @@ public: // implementation from now on // -------------------------- - + virtual void ComputeScaleAndOrigin(); wxCoord XDEV2LOG(wxCoord x) const @@ -163,10 +165,10 @@ public: } MGLDevCtx *GetMGLDC() const { return m_MGLDC; } - void SetMGLDC(MGLDevCtx *mgldc, bool OwnsMGLDC = FALSE); + void SetMGLDC(MGLDevCtx *mgldc, bool OwnsMGLDC = false); protected: - virtual void DoFloodFill(wxCoord x, wxCoord y, const wxColour& col, + virtual bool DoFloodFill(wxCoord x, wxCoord y, const wxColour& col, int style = wxFLOOD_SURFACE); virtual bool DoGetPixel(wxCoord x, wxCoord y, wxColour *col) const; @@ -190,7 +192,7 @@ protected: virtual void DoDrawIcon(const wxIcon& icon, wxCoord x, wxCoord y); virtual void DoDrawBitmap(const wxBitmap &bmp, wxCoord x, wxCoord y, - bool useMask = FALSE); + bool useMask = false); virtual void DoDrawText(const wxString& text, wxCoord x, wxCoord y); virtual void DoDrawRotatedText(const wxString& text, wxCoord x, wxCoord y, @@ -198,18 +200,13 @@ protected: virtual bool DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, wxDC *source, wxCoord xsrc, wxCoord ysrc, - int rop = wxCOPY, bool useMask = FALSE); + int rop = wxCOPY, bool useMask = false, wxCoord xsrcMask = -1, wxCoord ysrcMask = -1); // this is gnarly - we can't even call this function DoSetClippingRegion() // because of virtual function hiding virtual void DoSetClippingRegionAsRegion(const wxRegion& region); virtual void DoSetClippingRegion(wxCoord x, wxCoord y, wxCoord width, wxCoord height); - virtual void DoGetClippingRegion(wxCoord *x, wxCoord *y, - wxCoord *width, wxCoord *height) - { - GetClippingBox(x, y, width, height); - } virtual void DoGetSize(int *width, int *height) const; virtual void DoGetSizeMM(int* width, int* height) const; @@ -229,49 +226,50 @@ protected: // common part of DoDrawText() and DoDrawRotatedText() void DrawAnyText(const wxString& text, wxCoord x, wxCoord y); - + // MGL uses pens as both wxPens and wxBrushes, so we have to // switch them as needed: void SelectPen(); void SelectBrush(); void SelectMGLStipplePen(int style); void SelectMGLFatPen(int style, int flag); - + // Select m_font into m_MGLDC: bool SelectMGLFont(); - + // Convert wxWin logical function to MGL rop: int LogicalFunctionToMGLRop(int logFunc) const; - + // Unified implementation of DrawIcon, DrawBitmap and Blit: - void DoDrawSubBitmap(const wxBitmap &bmp, + void DoDrawSubBitmap(const wxBitmap &bmp, wxCoord x, wxCoord y, wxCoord w, wxCoord h, wxCoord destx, wxCoord desty, int rop, bool useMask); // MGL DC class we use: MGLDevCtx *m_MGLDC; bool m_OwnsMGLDC:1; - + // helper variables for SelectXXXX(): bool m_penSelected; bool m_brushSelected; bool m_downloadedPatterns[2]; - // MGL does not render lines with width>1 with endings centered + // MGL does not render lines with width>1 with endings centered // at given coords but with top left corner of the pen at them, // these offsets are used to correct it. They are computed by // SelectPen. int m_penOfsX, m_penOfsY; double m_mm_to_pix_x, m_mm_to_pix_y; - + wxPalette m_oldPalette; - + wxRegion m_currentClippingRegion; + wxRegion m_globalClippingRegion; // wxDC::Blit handles memoryDCs as special cases :( bool m_isMemDC; - + font_t *m_mglFont; };