diff --git a/src/common/dcbase.cpp b/src/common/dcbase.cpp new file mode 100644 index 0000000000..da3b41768b --- /dev/null +++ b/src/common/dcbase.cpp @@ -0,0 +1,108 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: dc.cpp +// Purpose: wxDC Class +// Author: Brian Macy +// Modified by: +// Created: 05/25/99 +// RCS-ID: $Id$ +// Copyright: (c) Julian Smart and Markus Holzem +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +#ifdef __GNUG__ +#pragma implementation "dcbase.h" +#endif + +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ +#pragma hdrstop +#endif + +#ifndef WX_PRECOMP +#include "wx/defs.h" +#endif + +#include "wx/dc.h" + +void wxDCBase::DrawLines(const wxList *list, long xoffset, long yoffset) +{ + int n = list->Number(); + wxPoint *points = new wxPoint[n]; + + int i = 0; + for ( wxNode *node = list->First(); node; node = node->Next(), i++ ) + { + wxPoint *point = (wxPoint *)node->Data(); + points[i].x = point->x; + points[i].y = point->y; + } + + DoDrawLines(n, points, xoffset, yoffset); + + delete [] points; +} + + +void wxDCBase::DrawPolygon(const wxList *list, + long xoffset, long yoffset, + int fillStyle) +{ + int n = list->Number(); + wxPoint *points = new wxPoint[n]; + + int i = 0; + for ( wxNode *node = list->First(); node; node = node->Next(), i++ ) + { + wxPoint *point = (wxPoint *)node->Data(); + points[i].x = point->x; + points[i].y = point->y; + } + + DoDrawPolygon(n, points, xoffset, yoffset, fillStyle); + + delete [] points; +} + + +#ifdef wxUSE_SPLINES + +// TODO: this API needs fixing (wxPointList, why (!const) "wxList *"?) +void wxDCBase::DrawSpline(long x1, long y1, long x2, long y2, long x3, long y3) +{ + wxList point_list; + + wxPoint *point1 = new wxPoint; + point1->x = x1; point1->y = y1; + point_list.Append((wxObject*)point1); + + wxPoint *point2 = new wxPoint; + point2->x = x2; point2->y = y2; + point_list.Append((wxObject*)point2); + + wxPoint *point3 = new wxPoint; + point3->x = x3; point3->y = y3; + point_list.Append((wxObject*)point3); + + DrawSpline(&point_list); + + for( wxNode *node = point_list.First(); node; node = node->Next() ) + { + wxPoint *p = (wxPoint *)node->Data(); + delete p; + } +} + +void wxDCBase::DrawSpline(int n, wxPoint points[]) +{ + wxList list; + for (int i =0; i < n; i++) + { + list.Append((wxObject*)&points[i]); + } + + DrawSpline(&list); +} + +#endif // wxUSE_SPLINES \ No newline at end of file