#include "wx/brush.h"
#include "wx/pen.h"
#include "wx/palette.h"
-#include "wx/list.h" // we use wxList in inline functions
#include "wx/dynarray.h"
#include "wx/math.h"
#include "wx/image.h"
#if wxUSE_NEW_DC
class WXDLLIMPEXP_FWD_CORE wxDC;
+class WXDLLIMPEXP_FWD_CORE wxClientDC;
+class WXDLLIMPEXP_FWD_CORE wxPaintDC;
+class WXDLLIMPEXP_FWD_CORE wxWindowDC;
+class WXDLLIMPEXP_FWD_CORE wxScreenDC;
+class WXDLLIMPEXP_FWD_CORE wxMemoryDC;
#else
class WXDLLIMPEXP_FWD_CORE wxDCBase;
#endif
wxDCFactory() {}
virtual ~wxDCFactory() {}
- virtual wxImplDC* CreateWindowDC() = 0;
- virtual wxImplDC* CreateWindowDC( wxWindow *window ) = 0;
- virtual wxImplDC* CreateClientDC() = 0;
- virtual wxImplDC* CreateClientDC( wxWindow *window ) = 0;
- virtual wxImplDC* CreatePaintDC() = 0;
- virtual wxImplDC* CreatePaintDC( wxWindow *window ) = 0;
- virtual wxImplDC* CreateMemoryDC() = 0;
- virtual wxImplDC* CreateMemoryDC( wxBitmap &bitmap ) = 0;
- virtual wxImplDC* CreateMemoryDC( wxDC *dc ) = 0;
+ virtual wxImplDC* CreateWindowDC( wxWindowDC *owner ) = 0;
+ virtual wxImplDC* CreateWindowDC( wxWindowDC *owner, wxWindow *window ) = 0;
+ virtual wxImplDC* CreateClientDC( wxClientDC *owner ) = 0;
+ virtual wxImplDC* CreateClientDC( wxClientDC *owner, wxWindow *window ) = 0;
+ virtual wxImplDC* CreatePaintDC( wxPaintDC *owner ) = 0;
+ virtual wxImplDC* CreatePaintDC( wxPaintDC *owner, wxWindow *window ) = 0;
+ virtual wxImplDC* CreateMemoryDC( wxMemoryDC *owner ) = 0;
+ virtual wxImplDC* CreateMemoryDC( wxMemoryDC *owner, wxBitmap &bitmap ) = 0;
+ virtual wxImplDC* CreateMemoryDC( wxMemoryDC *owner, wxDC *dc ) = 0;
+ virtual wxImplDC* CreateScreenDC( wxScreenDC *owner ) = 0;
static void SetDCFactory( wxDCFactory *factory );
static wxDCFactory *GetFactory();
// wxNativeDCFactory
//-----------------------------------------------------------------------------
-class WXDLLIMPEXP_CORE wxNativeDCFactory
+class WXDLLIMPEXP_CORE wxNativeDCFactory: public wxDCFactory
{
public:
wxNativeDCFactory() {}
- virtual wxImplDC* CreateWindowDC();
- virtual wxImplDC* CreateWindowDC( wxWindow *window );
- virtual wxImplDC* CreateClientDC();
- virtual wxImplDC* CreateClientDC( wxWindow *window );
- virtual wxImplDC* CreatePaintDC();
- virtual wxImplDC* CreatePaintDC( wxWindow *window );
- virtual wxImplDC* CreateMemoryDC();
- virtual wxImplDC* CreateMemoryDC( wxBitmap &bitmap );
- virtual wxImplDC* CreateMemoryDC( wxDC *dc );
+ virtual wxImplDC* CreateWindowDC( wxWindowDC *owner );
+ virtual wxImplDC* CreateWindowDC( wxWindowDC *owner, wxWindow *window );
+ virtual wxImplDC* CreateClientDC( wxClientDC *owner );
+ virtual wxImplDC* CreateClientDC( wxClientDC *owner, wxWindow *window );
+ virtual wxImplDC* CreatePaintDC( wxPaintDC *owner );
+ virtual wxImplDC* CreatePaintDC( wxPaintDC *owner, wxWindow *window );
+ virtual wxImplDC* CreateMemoryDC( wxMemoryDC *owner );
+ virtual wxImplDC* CreateMemoryDC( wxMemoryDC *owner, wxBitmap &bitmap );
+ virtual wxImplDC* CreateMemoryDC( wxMemoryDC *owner, wxDC *dc );
+ virtual wxImplDC* CreateScreenDC( wxScreenDC *owner );
};
//-----------------------------------------------------------------------------
wxImplDC( wxDC *owner );
~wxImplDC();
- wxDC *GetOwner() { return m_owner; }
+ wxDC *GetOwner() const { return m_owner; }
virtual bool IsOk() const { return m_ok; }
virtual void StartPage() { }
virtual void EndPage() { }
+ // flushing the content of this dc immediately eg onto screen
+ virtual void Flush() { }
+
// bounding box
virtual void CalcBoundingBox(wxCoord x, wxCoord y)
#if wxUSE_SPLINES
virtual void DoDrawSpline(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2, wxCoord x3, wxCoord y3);
virtual void DoDrawSpline(int n, wxPoint points[]);
- virtual void DoDrawSpline(wxList *points);
+ virtual void DoDrawSpline(const wxPointList *points);
#endif
private:
public:
wxDC() { m_pimpl = NULL; }
+ wxImplDC *GetImpl()
+ { return m_pimpl; }
+ const wxImplDC *GetImpl() const
+ { return m_pimpl; }
+
+
bool IsOk() const
{ return m_pimpl && m_pimpl->IsOk(); }
#if 0
// needs to be removed
- void DrawLines(const wxList *list,
+ void DrawLines(const wxPointList *list,
wxCoord xoffset = 0, wxCoord yoffset = 0)
#endif
#if 0
// needs to be removed
- void DrawPolygon(const wxList *list,
+ void DrawPolygon(const wxPointList *list,
wxCoord xoffset = 0, wxCoord yoffset = 0,
int fillStyle = wxODDEVEN_RULE)
{ m_pimpl->DrawPolygon( list, xoffset, yoffset, fillStyle ); }
{ m_pimpl->DoDrawSpline(x1,y1,x2,y2,x3,y3); }
void DrawSpline(int n, wxPoint points[])
{ m_pimpl->DoDrawSpline(n,points); }
-
-#if 0
- // needs to be removed
- void DrawSpline(wxList *points)
+ void DrawSpline(const wxPointList *points)
{ m_pimpl->DoDrawSpline(points); }
-#endif
#endif // wxUSE_SPLINES
DECLARE_DYNAMIC_CLASS(wxClientDC)
};
-//-----------------------------------------------------------------------------
-// wxMemoryDC
-//-----------------------------------------------------------------------------
-
-class WXDLLIMPEXP_CORE wxMemoryDC: public wxDC
-{
-public:
- wxMemoryDC();
- wxMemoryDC( wxBitmap& bitmap );
- wxMemoryDC( wxDC *dc );
-
-private:
- DECLARE_DYNAMIC_CLASS(wxMemoryDC)
-};
-
//-----------------------------------------------------------------------------
// wxPaintDC
//-----------------------------------------------------------------------------
CalcBoundingBox(drawobject->MaxX(),drawobject->MaxY());
}
+ wxDC *GetOwner() const { return (wxDC*) this; }
+
bool FloodFill(wxCoord x, wxCoord y, const wxColour& col,
int style = wxFLOOD_SURFACE)
{ return DoFloodFill(x, y, col, style); }
void DrawLines(int n, wxPoint points[],
wxCoord xoffset = 0, wxCoord yoffset = 0)
{ DoDrawLines(n, points, xoffset, yoffset); }
- void DrawLines(const wxList *list,
+ void DrawLines(const wxPointList *list,
wxCoord xoffset = 0, wxCoord yoffset = 0);
+#if WXWIN_COMPATIBILITY_2_8
+ wxDEPRECATED( void DrawLines(const wxList *list,
+ wxCoord xoffset = 0, wxCoord yoffset = 0) );
+#endif // WXWIN_COMPATIBILITY_2_8
+
+
void DrawPolygon(int n, wxPoint points[],
wxCoord xoffset = 0, wxCoord yoffset = 0,
int fillStyle = wxODDEVEN_RULE)
{ DoDrawPolygon(n, points, xoffset, yoffset, fillStyle); }
- void DrawPolygon(const wxList *list,
+ void DrawPolygon(const wxPointList *list,
wxCoord xoffset = 0, wxCoord yoffset = 0,
int fillStyle = wxODDEVEN_RULE);
+#if WXWIN_COMPATIBILITY_2_8
+ wxDEPRECATED( void DrawPolygon(const wxList *list,
+ wxCoord xoffset = 0, wxCoord yoffset = 0,
+ int fillStyle = wxODDEVEN_RULE) );
+#endif // WXWIN_COMPATIBILITY_2_8
+
void DrawPolyPolygon(int n, int count[], wxPoint points[],
wxCoord xoffset = 0, wxCoord yoffset = 0,
int fillStyle = wxODDEVEN_RULE)
}
#if wxUSE_SPLINES
- // TODO: this API needs fixing (wxPointList, why (!const) "wxList *"?)
void DrawSpline(wxCoord x1, wxCoord y1,
wxCoord x2, wxCoord y2,
wxCoord x3, wxCoord y3);
void DrawSpline(int n, wxPoint points[]);
- void DrawSpline(wxList *points) { DoDrawSpline(points); }
+ void DrawSpline(const wxPointList *points) { DoDrawSpline(points); }
+
+#if WXWIN_COMPATIBILITY_2_8
+ wxDEPRECATED( void DrawSpline(const wxList *points) );
+#endif // WXWIN_COMPATIBILITY_2_8
+
#endif // wxUSE_SPLINES
// Eventually we will have wxUSE_GENERIC_DRAWELLIPSE
* \param angle Rotating angle (counterclockwise, start at 3 o'clock, 360 is full circle).
* \param center Center of rotation.
*/
- void Rotate( wxList* points, double angle, wxPoint center = wxPoint(0,0) );
+ void Rotate( wxPointList* points, double angle, wxPoint center = wxPoint(0,0) );
// used by DrawEllipticArcRot
// Careful: wxList gets filled with points you have to delete later.
- void CalculateEllipticPoints( wxList* points,
+ void CalculateEllipticPoints( wxPointList* points,
wxCoord xStart, wxCoord yStart,
wxCoord w, wxCoord h,
double sa, double ea );
virtual bool DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) const;
#if wxUSE_SPLINES
- virtual void DoDrawSpline(wxList *points);
+ virtual void DoDrawSpline(const wxPointList *points);
#endif
protected: