From 6a6c0a8bdadc52e87e6d1e315d1bf6f192880bd0 Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Wed, 8 Jul 1998 15:52:22 +0000 Subject: [PATCH] Removed redundant auto-setting code in wxDC; corrected utilscmn.cpp pragma; added inlines using wxPoint/wxSize/wxRect in dc.h. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@189 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/msw/changes.txt | 14 +++- include/wx/gdicmn.h | 82 +++++++++++++---------- include/wx/msw/dc.h | 140 ++++++++++++++++++++++++++++++---------- samples/mdi/mdi.cpp | 7 ++ src/common/gdicmn.cpp | 31 +++++---- src/common/utilscmn.cpp | 2 +- src/gtk/data.cpp | 4 +- src/gtk1/data.cpp | 4 +- src/msw/data.cpp | 4 +- src/msw/dc.cpp | 115 +++++++++++++-------------------- src/msw/makefile.dos | 6 ++ src/msw/makefile.g95 | 4 +- src/msw/xfspline.inc | 3 - 13 files changed, 254 insertions(+), 162 deletions(-) diff --git a/docs/msw/changes.txt b/docs/msw/changes.txt index f97796ec2c..a11165c1e2 100644 --- a/docs/msw/changes.txt +++ b/docs/msw/changes.txt @@ -2,7 +2,19 @@ wxWindows 2.0 for Windows Change Log ------------------------------------ -Alpha 12, July ??1998 +Alpha 13, July 8th 1998 +----------------------- + +- Implemented wxPoint as identical to POINT on Windows, and + altered wxDC wxPoint functions to use wxPoint directly in + Windows functions, for efficiency. +- Cured wxASSERT bug in wxStatusBar95. +- #ifdefed out some bits in oleutils.cpp for compilers that + don't support it. +- Added some operators to wxPoint, wxSize. +- Added inline wxDC functions using wxPoint, wxSize, wxRect. + +Alpha 12, July 7th 1998 ----------------------- - Added wxApp::GetComCtl32Version, and wxTB_FLAT style, so can diff --git a/include/wx/gdicmn.h b/include/wx/gdicmn.h index b196db82ff..dec74b5bb9 100644 --- a/include/wx/gdicmn.h +++ b/include/wx/gdicmn.h @@ -65,42 +65,54 @@ typedef enum { #endif } _standard_cursors_t; -class WXDLLEXPORT wxSize: public wxObject +class WXDLLEXPORT wxSize { public: long x; long y; - inline wxSize(void) { x = 0; y = 0; } + inline wxSize() { x = 0; y = 0; } inline wxSize(long xx, long yy) { x = xx; y = yy; } inline wxSize(const wxSize& sz) { x = sz.x; y = sz.y; } inline void operator = (const wxSize& sz) { x = sz.x; y = sz.y; } + inline wxSize operator + (const wxSize& sz) { return wxSize(x + sz.x, y + sz.y); } + inline wxSize operator - (const wxSize& sz) { return wxSize(x - sz.x, y - sz.y); } inline void Set(long xx, long yy) { x = xx; y = yy; } inline long GetX() const { return x; } inline long GetY() const { return y; } }; // Point -class WXDLLEXPORT wxRealPoint: public wxObject +class WXDLLEXPORT wxRealPoint { - DECLARE_DYNAMIC_CLASS(wxRealPoint) public: double x; double y; - inline wxRealPoint(void) { x = 0.0; y = 0.0; }; - inline wxRealPoint(double the_x, double the_y) { x = the_x; y = the_y; }; + inline wxRealPoint() { x = 0.0; y = 0.0; }; + inline wxRealPoint(double _x, double _y) { x = _x; y = _y; }; + inline wxRealPoint operator + (const wxRealPoint& pt) { return wxRealPoint(x + pt.x, y + pt.y); } + inline wxRealPoint operator - (const wxRealPoint& pt) { return wxRealPoint(x - pt.x, y - pt.y); } inline void operator = (const wxRealPoint& pt) { x = pt.x; y = pt.y; } }; -class WXDLLEXPORT wxPoint: public wxObject +class WXDLLEXPORT wxPoint { - DECLARE_DYNAMIC_CLASS(wxPoint) public: +#if defined(__WINDOWS__) && !defined(__WIN32__) + int x; + int y; +#else long x; long y; - inline wxPoint(void) { x = 0; y = 0; }; +#endif + + inline wxPoint() { x = 0; y = 0; }; wxPoint(long the_x, long the_y) { x = the_x; y = the_y; }; + wxPoint(const wxPoint& pt) { x = pt.x; y = pt.y; }; + inline void operator = (const wxPoint& pt) { x = pt.x; y = pt.y; } + inline wxPoint operator + (const wxPoint& pt) { return wxPoint(x + pt.x, y + pt.y); } + inline wxPoint operator - (const wxPoint& pt) { return wxPoint(x - pt.x, y - pt.y); } }; #if WXWIN_COMPATIBILITY @@ -108,31 +120,31 @@ class WXDLLEXPORT wxPoint: public wxObject #define wxRectangle wxRect #endif -class WXDLLEXPORT wxRect : public wxObject { - DECLARE_DYNAMIC_CLASS(wxRect) +class WXDLLEXPORT wxRect +{ public: - wxRect(void) ; + wxRect() ; wxRect(long x, long y, long w, long h); wxRect(const wxPoint& topLeft, const wxPoint& bottomRight); wxRect(const wxPoint& pos, const wxSize& size); wxRect(const wxRect& rect); - inline long GetX(void) const { return x; } + inline long GetX() const { return x; } inline void SetX(long X) { x = X; } - inline long GetY(void) const { return y; } + inline long GetY() const { return y; } inline void SetY(long Y) { y = Y; } inline long GetWidth() const { return width; } inline void SetWidth(long w) { width = w; } inline long GetHeight() const { return height; } inline void SetHeight(long h) { height = h; } - inline wxPoint GetPosition(void) { return wxPoint(x, y); } - inline wxSize GetSize(void) { return wxSize(width, height); } + inline wxPoint GetPosition() { return wxPoint(x, y); } + inline wxSize GetSize() { return wxSize(width, height); } - inline long GetLeft(void) const { return x; } - inline long GetTop(void) const { return y; } - inline long GetBottom(void) const { return y + height; } - inline long GetRight(void) const { return x + width; } + inline long GetLeft() const { return x; } + inline long GetTop() const { return y; } + inline long GetBottom() const { return y + height; } + inline long GetRight() const { return x + width; } wxRect& operator = (const wxRect& rect); bool operator == (const wxRect& rect); @@ -184,9 +196,9 @@ class WXDLLEXPORT wxPenList: public wxList { DECLARE_DYNAMIC_CLASS(wxPenList) public: - inline wxPenList(void) + inline wxPenList() { } - ~wxPenList(void); + ~wxPenList(); void AddPen(wxPen *pen); void RemovePen(wxPen *pen); wxPen *FindOrCreatePen(const wxColour& colour, int width, int style); @@ -197,9 +209,9 @@ class WXDLLEXPORT wxBrushList: public wxList { DECLARE_DYNAMIC_CLASS(wxBrushList) public: - inline wxBrushList(void) + inline wxBrushList() { } - ~wxBrushList(void); + ~wxBrushList(); void AddBrush(wxBrush *brush); void RemoveBrush(wxBrush *brush); wxBrush *FindOrCreateBrush(const wxColour& colour, int style); @@ -212,9 +224,9 @@ class WXDLLEXPORT wxFontList: public wxList { DECLARE_DYNAMIC_CLASS(wxFontList) public: - inline wxFontList(void) + inline wxFontList() { } - ~wxFontList(void); + ~wxFontList(); void AddFont(wxFont *font); void RemoveFont(wxFont *font); wxFont *FindOrCreateFont(int pointSize, int family, int style, int weight, @@ -226,19 +238,19 @@ class WXDLLEXPORT wxColourDatabase: public wxList DECLARE_CLASS(wxColourDatabase) public: wxColourDatabase(int type); - ~wxColourDatabase(void) ; + ~wxColourDatabase() ; // Not const because it may add a name to the database wxColour *FindColour(const wxString& colour) ; wxString FindName(const wxColour& colour) const; - void Initialize(void); + void Initialize(); }; class WXDLLEXPORT wxBitmapList: public wxList { DECLARE_DYNAMIC_CLASS(wxBitmapList) public: - wxBitmapList(void); - ~wxBitmapList(void); + wxBitmapList(); + ~wxBitmapList(); void AddBitmap(wxBitmap *bitmap); void RemoveBitmap(wxBitmap *bitmap); @@ -302,15 +314,17 @@ WXDLLEXPORT_DATA(extern wxCursor*) wxHOURGLASS_CURSOR; WXDLLEXPORT_DATA(extern wxCursor*) wxCROSS_CURSOR; WXDLLEXPORT_DATA(extern wxColourDatabase*) wxTheColourDatabase; -extern void WXDLLEXPORT wxInitializeStockObjects(void); -extern void WXDLLEXPORT wxDeleteStockObjects(void); +extern void WXDLLEXPORT wxInitializeStockObjects(); +extern void WXDLLEXPORT wxDeleteStockObjects(); -extern bool WXDLLEXPORT wxColourDisplay(void); +extern bool WXDLLEXPORT wxColourDisplay(); // Returns depth of screen -extern int WXDLLEXPORT wxDisplayDepth(void); +extern int WXDLLEXPORT wxDisplayDepth(); +#define wxGetDisplayDepth wxDisplayDepth extern void WXDLLEXPORT wxDisplaySize(int *width, int *height); +extern wxSize WXDLLEXPORT wxGetDisplaySize(); extern void WXDLLEXPORT wxSetCursor(const wxCursor& cursor); diff --git a/include/wx/msw/dc.h b/include/wx/msw/dc.h index 5392a19a3b..1b4c0457a2 100644 --- a/include/wx/msw/dc.h +++ b/include/wx/msw/dc.h @@ -33,25 +33,114 @@ public: inline void wxDC::BeginDrawing(void) {} inline void wxDC::EndDrawing(void) {} - virtual void FloodFill(long x1, long y1, wxColour *col, int style=wxFLOOD_SURFACE) ; + virtual void FloodFill(long x1, long y1, const wxColour& col, int style=wxFLOOD_SURFACE) ; + inline void FloodFill(const wxPoint& pt, const wxColour& col, int style=wxFLOOD_SURFACE) + { + FloodFill(pt.x, pt.y, col, style); + } + virtual bool GetPixel(long x1, long y1, wxColour *col) const ; + inline bool GetPixel(const wxPoint& pt, wxColour *col) const + { + return GetPixel(pt.x, pt.y, col); + } virtual void DrawLine(long x1, long y1, long x2, long y2); + inline void DrawLine(const wxPoint& pt1, const wxPoint& pt2) + { + DrawLine(pt1.x, pt1.y, pt2.x, pt2.y); + } + virtual void CrossHair(long x, long y) ; + virtual void CrossHair(const wxPoint& pt) + { + CrossHair(pt.x, pt.y); + } + virtual void DrawArc(long x1,long y1,long x2,long y2,double xc, double yc); + inline void DrawArc(const wxPoint& pt1, const wxPoint& pt2, double xc, double yc) + { + DrawArc(pt1.x, pt1.y, pt2.x, pt2.y, xc, yc); + } + virtual void DrawEllipticArc (long x, long y, long w, long h, double sa, double ea); + virtual void DrawEllipticArc (const wxPoint& pt, const wxSize& sz, double sa, double ea) + { + DrawEllipticArc(pt.x, pt.y, sz.x, sz.y, sa, ea); + } + virtual void DrawPoint(long x, long y); + inline void DrawPoint(const wxPoint& pt) + { + DrawPoint(pt.x, pt.y); + } virtual void DrawLines(int n, wxPoint points[], long xoffset = 0, long yoffset = 0); virtual void DrawPolygon(int n, wxPoint points[], long xoffset = 0, long yoffset = 0, int fillStyle=wxODDEVEN_RULE); virtual void DrawRectangle(long x, long y, long width, long height); + inline void DrawRectangle(const wxPoint& pt, const wxSize& sz) + { + DrawRectangle(pt.x, pt.y, sz.x, sz.y); + } + inline void DrawRectangle(const wxRect& rect) + { + DrawRectangle(rect.x, rect.y, rect.width, rect.height); + } + virtual void DrawRoundedRectangle(long x, long y, long width, long height, double radius = 20.0); + inline void DrawRoundedRectangle(const wxPoint& pt, const wxSize& sz, double radius = 20.0) + { + DrawRoundedRectangle(pt.x, pt.y, sz.x, sz.y, radius); + } + inline void DrawRoundedRectangle(const wxRect& rect, double radius = 20.0) + { + DrawRoundedRectangle(rect.x, rect.y, rect.width, rect.height, radius); + } + virtual void DrawEllipse(long x, long y, long width, long height); + inline void DrawEllipse(const wxPoint& pt, const wxSize& sz) + { + DrawEllipse(pt.x, pt.y, sz.x, sz.y); + } + inline void DrawEllipse(const wxRect& rect) + { + DrawEllipse(rect.x, rect.y, rect.width, rect.height); + } virtual void DrawIcon(const wxIcon& icon, long x, long y); + inline void DrawIcon(const wxIcon& icon, const wxPoint& pt) + { + DrawIcon(icon, pt.x, pt.y); + } + inline void DrawPoint(wxPoint& point) { DrawPoint(point.x, point.y); } + virtual void DrawLines(wxList *list, long xoffset = 0, long yoffset = 0); + virtual void DrawPolygon(wxList *list, long xoffset = 0, long yoffset = 0, int fillStyle=wxODDEVEN_RULE); + + virtual void DrawText(const wxString& text, long x, long y, bool use16bit = FALSE); + inline void DrawText(const wxString& text, const wxPoint& pt, bool use16bit = FALSE) + { + DrawText(text, pt.x, pt.y, use16bit); + } + + virtual bool Blit(long xdest, long ydest, long width, long height, + wxDC *source, long xsrc, long ysrc, int rop = wxCOPY, bool useMask = FALSE); + inline bool Blit(const wxPoint& destPt, const wxSize& sz, + wxDC *source, const wxPoint& srcPt, int rop = wxCOPY, bool useMask = FALSE) + { + return Blit(destPt.x, destPt.y, sz.x, sz.y, source, srcPt.x, srcPt.y, rop, useMask); + } + +#if USE_SPLINES + // Splines + // 3-point spline + virtual void DrawSpline(long x1, long y1, long x2, long y2, long x3, long y3); + // Any number of control points - a list of pointers to wxPoints + virtual void DrawSpline(wxList *points); + virtual void DrawSpline(int n, wxPoint points[]); +#endif virtual void Clear(void); virtual void SetFont(const wxFont& font); virtual void SetPen(const wxPen& pen); @@ -59,14 +148,22 @@ public: virtual void SetLogicalFunction(int function); virtual void SetBackground(const wxBrush& brush); virtual void SetBackgroundMode(int mode); + virtual void SetClippingRegion(long x, long y, long width, long height); + inline void SetClippingRegion(const wxPoint& pt, const wxSize& sz) + { + SetClippingRegion(pt.x, pt.y, sz.x, sz.y); + } + inline void SetClippingRegion(const wxRect& rect) + { + SetClippingRegion(rect.x, rect.y, rect.width, rect.height); + } + virtual void SetPalette(const wxPalette& palette); #if WXWIN_COMPATIBILITY virtual inline void SetColourMap(const wxPalette& palette) { SetPalette(palette); }; #endif virtual void DestroyClippingRegion(void); - virtual void DrawText(const wxString& text, long x, long y, bool use16bit = FALSE); - virtual long GetCharHeight(void) const; virtual long GetCharWidth(void) const; virtual void GetTextExtent(const wxString& string, long *x, long *y, @@ -127,36 +224,9 @@ public: long ImplLogicalToDeviceXRel(long x) const; long ImplLogicalToDeviceYRel(long y) const; - virtual bool Blit(long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int rop = wxCOPY, bool useMask = FALSE); - virtual bool CanDrawBitmap(void) const; virtual bool CanGetTextExtent(void) const; - // - // This function is intended to improves drawing, by avoiding to - // repeatly call ::SetPen/::SetBrush. If set to FALSE, these functions - // aren't called when calling ::DrawLine(),... - // Please note that this is YOUR responsability to use it, and do it - // only when you KNOWN that pen/brush isn't changed between 2 calls to - // DrawLine,... !!! - // Note also that in X, we don't test m_autoSetting on brushes, because they - // modify Foreground, as pens. So, convention is: - // - call your SetBrush(), THEN your SetPen, THEN AutoSetTools(FALSE) - // - call DrawLine,... - // [mainly coded for Windows] - inline virtual void AutoSetTools(bool auto_setting) { m_autoSetting = auto_setting ; } - inline virtual void DrawPoint(wxPoint& point) { DrawPoint(point.x, point.y); } - virtual void DrawLines(wxList *list, long xoffset = 0, long yoffset = 0); - virtual void DrawPolygon(wxList *list, long xoffset = 0, long yoffset = 0, int fillStyle=wxODDEVEN_RULE); -#if USE_SPLINES - // Splines - // 3-point spline - virtual void DrawSpline(long x1, long y1, long x2, long y2, long x3, long y3); - // Any number of control points - a list of pointers to wxPoints - virtual void DrawSpline(wxList *points); - virtual void DrawSpline(int n, wxPoint points[]); -#endif virtual void SetTextForeground(const wxColour& colour); virtual void SetTextBackground(const wxColour& colour); inline virtual bool Ok(void) const {return m_ok;}; @@ -185,6 +255,11 @@ public: virtual inline bool GetOptimization(void) { return FALSE; } virtual void GetClippingBox(long *x,long *y,long *w,long *h) const ; + inline void GetClippingBox(wxRect& rect) const + { + long x, y, w, h; + GetClippingBox(&x, &y, &w, &h); rect.x = x; rect.y = y; rect.width = w; rect.height = h; + } virtual void SetRop(WXHDC cdc); virtual void DoClipping(WXHDC cdc); @@ -194,10 +269,6 @@ public: inline void SetWindow(wxWindow *win) { m_canvas = win; } inline WXHDC GetHDC(void) const { return m_hDC; } inline void SetHDC(WXHDC dc, bool bOwnsDC = FALSE) { m_hDC = dc; m_bOwnsDC = bOwnsDC; } - inline bool GetAutoSetting(void) const { return m_autoSetting; } - -// inline bool GetScaleGDI(void) const { return m_scaleGDI; } -// inline void SetScaleGDI(bool flag) { m_scaleGDI = flag; } protected: bool m_colour; @@ -238,7 +309,6 @@ protected: wxColour m_textBackgroundColour; wxFont m_font; wxPalette m_palette; - bool m_autoSetting ; int m_clipX1; int m_clipY1; int m_clipX2; diff --git a/samples/mdi/mdi.cpp b/samples/mdi/mdi.cpp index c9d49661ea..588f0260bd 100644 --- a/samples/mdi/mdi.cpp +++ b/samples/mdi/mdi.cpp @@ -201,6 +201,13 @@ void MyCanvas::OnDraw(wxDC& dc) dc.DrawSpline(50, 200, 50, 100, 200, 10); dc.DrawLine(50, 230, 200, 230); dc.DrawText("This is a test string", 50, 230); + + wxPoint points[3]; + points[0].x = 200; points[0].y = 300; + points[1].x = 100; points[1].y = 400; + points[2].x = 300; points[2].y = 400; + + dc.DrawPolygon(3, points); } // This implements a tiny doodling program! Drag the mouse using diff --git a/src/common/gdicmn.cpp b/src/common/gdicmn.cpp index 2624cdbcca..7ab3528f6c 100644 --- a/src/common/gdicmn.cpp +++ b/src/common/gdicmn.cpp @@ -36,17 +36,19 @@ #endif #if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxRect, wxObject) IMPLEMENT_CLASS(wxColourDatabase, wxList) IMPLEMENT_DYNAMIC_CLASS(wxFontList, wxList) IMPLEMENT_DYNAMIC_CLASS(wxPenList, wxList) IMPLEMENT_DYNAMIC_CLASS(wxBrushList, wxList) IMPLEMENT_DYNAMIC_CLASS(wxBitmapList, wxList) +/* +IMPLEMENT_DYNAMIC_CLASS(wxRect, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxPoint, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxRealPoint, wxObject) +*/ #endif -wxRect::wxRect(void) +wxRect::wxRect() { x = 0; y = 0; width = 0; height = 0; } @@ -117,7 +119,7 @@ wxList (type) { } -wxColourDatabase::~wxColourDatabase (void) +wxColourDatabase::~wxColourDatabase () { // Cleanup Colour allocated in Initialize() wxNode *node = First (); @@ -131,7 +133,7 @@ wxColourDatabase::~wxColourDatabase (void) } // Colour database stuff -void wxColourDatabase::Initialize (void) +void wxColourDatabase::Initialize () { // Don't initialize for X: colours are found // in FindColour below. @@ -317,7 +319,7 @@ wxString wxColourDatabase::FindName (const wxColour& colour) const } void -wxInitializeStockObjects (void) +wxInitializeStockObjects () { wxTheBrushList = new wxBrushList; wxThePenList = new wxPenList; @@ -371,7 +373,7 @@ wxInitializeStockObjects (void) } void -wxDeleteStockObjects (void) +wxDeleteStockObjects () { DELETEP(wxNORMAL_FONT); DELETEP(wxSMALL_FONT); @@ -413,11 +415,11 @@ wxDeleteStockObjects (void) DELETEP(wxCROSS_CURSOR); } -wxBitmapList::wxBitmapList (void) +wxBitmapList::wxBitmapList () { } -wxBitmapList::~wxBitmapList (void) +wxBitmapList::~wxBitmapList () { wxNode *node = First (); while (node) @@ -431,7 +433,7 @@ wxBitmapList::~wxBitmapList (void) } // Pen and Brush lists -wxPenList::~wxPenList (void) +wxPenList::~wxPenList () { wxNode *node = First (); while (node) @@ -486,7 +488,7 @@ wxPen *wxPenList::FindOrCreatePen (const wxString& colour, int width, int style) return NULL; } -wxBrushList::~wxBrushList (void) +wxBrushList::~wxBrushList () { wxNode *node = First (); while (node) @@ -538,7 +540,7 @@ void wxBrushList::RemoveBrush (wxBrush * brush) DeleteObject (brush); } -wxFontList::~wxFontList (void) +wxFontList::~wxFontList () { #ifdef __WINDOWS__ wxNode *node = First (); @@ -601,3 +603,10 @@ void wxBitmapList::AddBitmap(wxBitmap *bitmap) void wxBitmapList::RemoveBitmap(wxBitmap *bitmap) { DeleteObject(bitmap); } +wxSize wxGetDisplaySize() +{ + int x, y; + wxDisplaySize(& x, & y); + return wxSize(x, y); +} + diff --git a/src/common/utilscmn.cpp b/src/common/utilscmn.cpp index 349d6f04a0..196f506ae7 100644 --- a/src/common/utilscmn.cpp +++ b/src/common/utilscmn.cpp @@ -10,7 +10,7 @@ ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ -#pragma implementation "utils.h" +#pragma implementation "utilscmn.h" #endif // For compilers that support precompilation, includes "wx.h". diff --git a/src/gtk/data.cpp b/src/gtk/data.cpp index 88bab2cde4..42facd4ae8 100644 --- a/src/gtk/data.cpp +++ b/src/gtk/data.cpp @@ -259,10 +259,12 @@ IMPLEMENT_DYNAMIC_CLASS(wxPenList, wxList) IMPLEMENT_DYNAMIC_CLASS(wxBrushList, wxList) IMPLEMENT_DYNAMIC_CLASS(wxBitmapList, wxList) +/* #if (!USE_TYPEDEFS) IMPLEMENT_DYNAMIC_CLASS(wxPoint, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxIntPoint, wxObject) #endif +*/ #if defined(wx_x) || (defined(wx_msw) && USE_PORTABLE_FONTS_IN_MSW) IMPLEMENT_DYNAMIC_CLASS(wxFontNameDirectory, wxObject) @@ -338,7 +340,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxProcessEvent, wxEvent) #include "wx/utils.h" IMPLEMENT_DYNAMIC_CLASS(wxPathList, wxList) -IMPLEMENT_DYNAMIC_CLASS(wxRect, wxObject) +// IMPLEMENT_DYNAMIC_CLASS(wxRect, wxObject) #include "wx/process.h" IMPLEMENT_DYNAMIC_CLASS(wxProcess, wxEvtHandler) diff --git a/src/gtk1/data.cpp b/src/gtk1/data.cpp index 88bab2cde4..42facd4ae8 100644 --- a/src/gtk1/data.cpp +++ b/src/gtk1/data.cpp @@ -259,10 +259,12 @@ IMPLEMENT_DYNAMIC_CLASS(wxPenList, wxList) IMPLEMENT_DYNAMIC_CLASS(wxBrushList, wxList) IMPLEMENT_DYNAMIC_CLASS(wxBitmapList, wxList) +/* #if (!USE_TYPEDEFS) IMPLEMENT_DYNAMIC_CLASS(wxPoint, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxIntPoint, wxObject) #endif +*/ #if defined(wx_x) || (defined(wx_msw) && USE_PORTABLE_FONTS_IN_MSW) IMPLEMENT_DYNAMIC_CLASS(wxFontNameDirectory, wxObject) @@ -338,7 +340,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxProcessEvent, wxEvent) #include "wx/utils.h" IMPLEMENT_DYNAMIC_CLASS(wxPathList, wxList) -IMPLEMENT_DYNAMIC_CLASS(wxRect, wxObject) +// IMPLEMENT_DYNAMIC_CLASS(wxRect, wxObject) #include "wx/process.h" IMPLEMENT_DYNAMIC_CLASS(wxProcess, wxEvtHandler) diff --git a/src/msw/data.cpp b/src/msw/data.cpp index 12a7c6672b..fc65da6e17 100644 --- a/src/msw/data.cpp +++ b/src/msw/data.cpp @@ -253,10 +253,12 @@ IMPLEMENT_DYNAMIC_CLASS(wxPenList, wxList) IMPLEMENT_DYNAMIC_CLASS(wxBrushList, wxList) IMPLEMENT_DYNAMIC_CLASS(wxBitmapList, wxList) +/* #if (!USE_TYPEDEFS) IMPLEMENT_DYNAMIC_CLASS(wxPoint, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxRealPoint, wxObject) #endif +*/ #include "wx/hash.h" IMPLEMENT_DYNAMIC_CLASS(wxHashTable, wxObject) @@ -352,7 +354,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxProcessEvent, wxEvent) #include "wx/utils.h" IMPLEMENT_DYNAMIC_CLASS(wxPathList, wxList) -IMPLEMENT_DYNAMIC_CLASS(wxRect, wxObject) +// IMPLEMENT_DYNAMIC_CLASS(wxRect, wxObject) #include "wx/process.h" IMPLEMENT_DYNAMIC_CLASS(wxProcess, wxEvtHandler) diff --git a/src/msw/dc.cpp b/src/msw/dc.cpp index 0dd99fee23..ccafc05202 100644 --- a/src/msw/dc.cpp +++ b/src/msw/dc.cpp @@ -70,7 +70,6 @@ wxDC::wxDC(void) { m_minX = 0; m_minY = 0; m_maxX = 0; m_maxY = 0; m_clipping = FALSE; - m_autoSetting = FALSE ; m_filename = ""; m_canvas = NULL; @@ -319,16 +318,10 @@ void wxDC::Clear(void) ::SetWindowOrgEx((HDC) m_hDC, (int)m_logicalOriginX, (int)m_logicalOriginY, NULL); } -void wxDC::FloodFill(long x, long y, wxColour *col, int style) +void wxDC::FloodFill(long x, long y, const wxColour& col, int style) { -// int xx = (int)x; -// int yy = (int)y; - - if (m_brush.Ok() && m_autoSetting) - SetBrush(m_brush); - (void)ExtFloodFill((HDC) m_hDC, XLOG2DEV(x), YLOG2DEV(y), - col->GetPixel(), + col.GetPixel(), style==wxFLOOD_SURFACE? FLOODFILLSURFACE:FLOODFILLBORDER ); @@ -363,9 +356,6 @@ bool wxDC::GetPixel(long x, long y, wxColour *col) const void wxDC::CrossHair(long x, long y) { - if (m_pen.Ok() && m_autoSetting) - SetPen(m_pen); - // We suppose that our screen is 2000x2000 max. long x1 = x-2000; long y1 = y-2000; @@ -384,10 +374,6 @@ void wxDC::CrossHair(long x, long y) void wxDC::DrawLine(long x1, long y1, long x2, long y2) { -// BUGBUG - is this necessary? YES YES YES YEs Yes yes ye.... - if (m_pen.Ok() && m_autoSetting) - SetPen(m_pen); - (void)MoveToEx((HDC) m_hDC, XLOG2DEV(x1), YLOG2DEV(y1), NULL); (void)LineTo((HDC) m_hDC, XLOG2DEV(x2), YLOG2DEV(y2)); @@ -411,10 +397,6 @@ void wxDC::DrawArc(long x1,long y1,long x2,long y2,double xc,double yc) return ; } -// BUGBUG - is this necessary? - if (m_pen.Ok() && m_autoSetting) - SetPen(m_pen) ; - long xx1 = XLOG2DEV(x1) ; long yy1 = YLOG2DEV(y1) ; long xx2 = XLOG2DEV(x2) ; @@ -430,9 +412,6 @@ void wxDC::DrawArc(long x1,long y1,long x2,long y2,double xc,double yc) long yyy2 = (long) (yyc+ray); if (m_brush.Ok() && m_brush.GetStyle() !=wxTRANSPARENT) { -// BUGBUG - is this necessary? - if (m_brush.GetStyle()!=wxTRANSPARENT&&m_autoSetting) - SetBrush(m_brush) ; Pie((HDC) m_hDC,xxx1,yyy1,xxx2,yyy2, xx1,yy1,xx2,yy2) ; } @@ -446,10 +425,6 @@ void wxDC::DrawArc(long x1,long y1,long x2,long y2,double xc,double yc) void wxDC::DrawPoint(long x, long y) { -// BUGBUG - is this necessary? - if (m_pen.Ok() && m_autoSetting) - SetPen(m_pen) ; - COLORREF color = 0x00ffffff; if (m_pen.Ok()) { @@ -463,54 +438,64 @@ void wxDC::DrawPoint(long x, long y) void wxDC::DrawPolygon(int n, wxPoint points[], long xoffset, long yoffset,int fillStyle) { -// BUGBUG - is this necessary? - if (m_pen.Ok() && m_autoSetting) - SetPen(m_pen) ; - - POINT *cpoints = new POINT[n]; - int i; - for (i = 0; i < n; i++) + // Do things less efficiently if we have offsets + if (xoffset != 0 || yoffset != 0) { - cpoints[i].x = (int)(XLOG2DEV(points[i].x + xoffset)); - cpoints[i].y = (int)(YLOG2DEV(points[i].y + yoffset)); + POINT *cpoints = new POINT[n]; + int i; + for (i = 0; i < n; i++) + { + cpoints[i].x = (int)(points[i].x + xoffset); + cpoints[i].y = (int)(points[i].y + yoffset); - CalcBoundingBox(points[i].x + xoffset, points[i].y + yoffset); + CalcBoundingBox(cpoints[i].x, cpoints[i].y); + } + int prev = SetPolyFillMode((HDC) m_hDC,fillStyle==wxODDEVEN_RULE?ALTERNATE:WINDING) ; + (void)Polygon((HDC) m_hDC, cpoints, n); + SetPolyFillMode((HDC) m_hDC,prev) ; + delete[] cpoints; } + else + { + int i; + for (i = 0; i < n; i++) + CalcBoundingBox(points[i].x, points[i].y); - int prev = SetPolyFillMode((HDC) m_hDC,fillStyle==wxODDEVEN_RULE?ALTERNATE:WINDING) ; - (void)Polygon((HDC) m_hDC, cpoints, n); - SetPolyFillMode((HDC) m_hDC,prev) ; - - delete[] cpoints; + int prev = SetPolyFillMode((HDC) m_hDC,fillStyle==wxODDEVEN_RULE?ALTERNATE:WINDING) ; + (void)Polygon((HDC) m_hDC, (POINT*) points, n); + SetPolyFillMode((HDC) m_hDC,prev) ; + } } void wxDC::DrawLines(int n, wxPoint points[], long xoffset, long yoffset) { -// BUGBUG - is this necessary? - if (m_pen.Ok() && m_autoSetting) - SetPen(m_pen) ; - - POINT *cpoints = new POINT[n]; - int i; - for (i = 0; i < n; i++) + // Do things less efficiently if we have offsets + if (xoffset != 0 || yoffset != 0) { - cpoints[i].x = (int)(XLOG2DEV(points[i].x + xoffset)); - cpoints[i].y = (int)(YLOG2DEV(points[i].y + yoffset)); + POINT *cpoints = new POINT[n]; + int i; + for (i = 0; i < n; i++) + { + cpoints[i].x = (int)(points[i].x + xoffset); + cpoints[i].y = (int)(points[i].y + yoffset); - CalcBoundingBox(points[i].x + xoffset, points[i].y + yoffset); + CalcBoundingBox(cpoints[i].x, cpoints[i].y); + } + (void)Polyline((HDC) m_hDC, cpoints, n); + delete[] cpoints; } + else + { + int i; + for (i = 0; i < n; i++) + CalcBoundingBox(points[i].x, points[i].y); - (void)Polyline((HDC) m_hDC, cpoints, n); - - delete[] cpoints; + (void)Polyline((HDC) m_hDC, (POINT*) points, n); + } } void wxDC::DrawRectangle(long x, long y, long width, long height) { -// BUGBUG - is this necessary? - if (m_pen.Ok() && m_autoSetting) - SetPen(m_pen) ; - long x2 = x + width; long y2 = y + height; @@ -555,10 +540,6 @@ void wxDC::DrawRectangle(long x, long y, long width, long height) void wxDC::DrawRoundedRectangle(long x, long y, long width, long height, double radius) { -// BUGBUG - is this necessary? - if (m_pen.Ok() && m_autoSetting) - SetPen(m_pen) ; - // Now, a negative radius value is interpreted to mean // 'the proportion of the smallest X or Y dimension' @@ -584,10 +565,6 @@ void wxDC::DrawRoundedRectangle(long x, long y, long width, long height, double void wxDC::DrawEllipse(long x, long y, long width, long height) { -// BUGBUG - is this necessary? - if (m_pen.Ok() && m_autoSetting) - SetPen(m_pen) ; - long x2 = (x+width); long y2 = (y+height); @@ -600,10 +577,6 @@ void wxDC::DrawEllipse(long x, long y, long width, long height) // Chris Breeze 20/5/98: first implementation of DrawEllipticArc on Windows void wxDC::DrawEllipticArc(long x,long y,long w,long h,double sa,double ea) { -// BUGBUG - is this necessary? - if (m_pen.Ok() && m_autoSetting) - SetPen(m_pen) ; - long x2 = (x+w); long y2 = (y+h); diff --git a/src/msw/makefile.dos b/src/msw/makefile.dos index 4f06021518..a22b97f133 100644 --- a/src/msw/makefile.dos +++ b/src/msw/makefile.dos @@ -89,6 +89,7 @@ COMMONOBJS = \ $(COMMDIR)\object.obj \ $(COMMDIR)\odbc.obj \ $(COMMDIR)\postscrp.obj \ + $(COMMDIR)\process.obj \ $(COMMDIR)\prntbase.obj \ $(COMMDIR)\resource.obj \ $(COMMDIR)\tbarbase.obj \ @@ -724,6 +725,11 @@ $(COMMDIR)/postscrp.obj: $*.$(SRCSUFF) $(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) << +$(COMMDIR)/process.obj: $*.$(SRCSUFF) + cl @<< +$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) +<< + $(COMMDIR)/prntbase.obj: $*.$(SRCSUFF) cl @<< $(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) diff --git a/src/msw/makefile.g95 b/src/msw/makefile.g95 index 7d18bfb644..fb2ed351f8 100644 --- a/src/msw/makefile.g95 +++ b/src/msw/makefile.g95 @@ -94,6 +94,7 @@ COMMONOBJS = \ $(COMMDIR)/object.$(OBJSUFF) \ $(COMMDIR)/odbc.$(OBJSUFF) \ $(COMMDIR)/postscrp.$(OBJSUFF) \ + $(COMMDIR)/process.$(OBJSUFF) \ $(COMMDIR)/prntbase.$(OBJSUFF) \ $(COMMDIR)/resource.$(OBJSUFF) \ $(COMMDIR)/tbarbase.$(OBJSUFF) \ @@ -113,9 +114,6 @@ COMMONOBJS = \ $(COMMDIR)/datstrm.$(OBJSUFF) \ $(COMMDIR)/extended.$(OBJSUFF) -# $(COMMDIR)/wxstrgnu/wxstrgnu.$(OBJSUFF) \ -# $(COMMDIR)/wxstrgnu/wxregex.$(OBJSUFF) - MSWOBJS = \ app.$(OBJSUFF) \ bitmap.$(OBJSUFF) \ diff --git a/src/msw/xfspline.inc b/src/msw/xfspline.inc index 3c827f5409..792cf3e23f 100644 --- a/src/msw/xfspline.inc +++ b/src/msw/xfspline.inc @@ -127,9 +127,6 @@ void wx_draw_open_spline_ps(wxPostScriptDC *dc, wxSpline *s) { double a, b, c, d, x1, y1, x2, y2, x3, y3; wxPoint *p, *q; - if (dc->GetAutoSetting()) - dc->SetPen(* dc->GetPen()); - wxNode *node = s->points->First(); p = (wxPoint *)node->Data(); -- 2.47.2