#endif
#ifdef __WXMAC__
- #include "wx/mac/dcclient.h"
- #include "wx/mac/dcmemory.h"
- #include "wx/mac/dcscreen.h"
+ #include "wx/osx/dcclient.h"
+ #include "wx/osx/dcmemory.h"
+ #include "wx/osx/dcscreen.h"
#endif
#ifdef __WXPM__
// wxNativeDCFactory
//-----------------------------------------------------------------------------
-wxDCImpl* wxNativeDCFactory::CreateWindowDC( wxWindowDC *owner )
-{
- return new wxWindowDCImpl( owner );
-}
-
wxDCImpl* wxNativeDCFactory::CreateWindowDC( wxWindowDC *owner, wxWindow *window )
{
- return new wxWindowDCImpl( owner, window );
-}
-
-wxDCImpl* wxNativeDCFactory::CreateClientDC( wxClientDC *owner )
-{
- return new wxClientDCImpl( owner );
+ wxDCImpl * const impl = new wxWindowDCImpl( owner, window );
+ impl->InheritAttributes(window);
+ return impl;
}
wxDCImpl* wxNativeDCFactory::CreateClientDC( wxClientDC *owner, wxWindow *window )
{
- return new wxClientDCImpl( owner, window );
-}
-
-wxDCImpl* wxNativeDCFactory::CreatePaintDC( wxPaintDC *owner )
-{
- return new wxPaintDCImpl( owner );
+ wxDCImpl * const impl = new wxClientDCImpl( owner, window );
+ impl->InheritAttributes(window);
+ return impl;
}
wxDCImpl* wxNativeDCFactory::CreatePaintDC( wxPaintDC *owner, wxWindow *window )
{
- return new wxPaintDCImpl( owner, window );
+ wxDCImpl * const impl = new wxPaintDCImpl( owner, window );
+ impl->InheritAttributes(window);
+ return impl;
}
wxDCImpl* wxNativeDCFactory::CreateMemoryDC( wxMemoryDC *owner )
wxCoord wxDCImpl::DeviceToLogicalX(wxCoord x) const
{
- return wxRound((double)(x - m_deviceOriginX - m_deviceLocalOriginX) / m_scaleX) * m_signX + m_logicalOriginX;
+ return wxRound( (double)((x - m_deviceOriginX - m_deviceLocalOriginX) * m_signX) / m_scaleX ) + m_logicalOriginX ;
}
wxCoord wxDCImpl::DeviceToLogicalY(wxCoord y) const
{
- return wxRound((double)(y - m_deviceOriginY - m_deviceLocalOriginY) / m_scaleY) * m_signY + m_logicalOriginY;
+ return wxRound( (double)((y - m_deviceOriginY - m_deviceLocalOriginY) * m_signY) / m_scaleY ) + m_logicalOriginY ;
}
wxCoord wxDCImpl::DeviceToLogicalXRel(wxCoord x) const
wxCoord wxDCImpl::LogicalToDeviceX(wxCoord x) const
{
- return wxRound((double)(x - m_logicalOriginX) * m_scaleX) * m_signX + m_deviceOriginX * m_signY + m_deviceLocalOriginX;
+ return wxRound( (double)((x - m_logicalOriginX) * m_signX) * m_scaleX) + m_deviceOriginX + m_deviceLocalOriginX;
}
wxCoord wxDCImpl::LogicalToDeviceY(wxCoord y) const
{
- return wxRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY + m_deviceOriginY * m_signY + m_deviceLocalOriginY;
+ return wxRound( (double)((y - m_logicalOriginY) * m_signY) * m_scaleY) + m_deviceOriginY + m_deviceLocalOriginY;
}
wxCoord wxDCImpl::LogicalToDeviceXRel(wxCoord x) const
#if wxUSE_SPLINES
-void wxDCImpl::DoDrawSpline(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2, wxCoord x3, wxCoord y3)
+void wxDCImpl::DrawSpline(wxCoord x1, wxCoord y1,
+ wxCoord x2, wxCoord y2,
+ wxCoord x3, wxCoord y3)
{
- wxPointList point_list;
-
- wxPoint *point1 = new wxPoint;
- point1->x = x1; point1->y = y1;
- point_list.Append( point1 );
-
- wxPoint *point2 = new wxPoint;
- point2->x = x2; point2->y = y2;
- point_list.Append( point2 );
-
- wxPoint *point3 = new wxPoint;
- point3->x = x3; point3->y = y3;
- point_list.Append( point3 );
-
- DoDrawSpline(&point_list);
-
- for( wxPointList::compatibility_iterator node = point_list.GetFirst(); node; node = node->GetNext() )
- {
- wxPoint *p = node->GetData();
- delete p;
- }
+ wxPoint points[] = { wxPoint(x1, y1), wxPoint(x2, y2), wxPoint(x3, y3) };
+ DrawSpline(WXSIZEOF(points), points);
}
-void wxDCImpl::DoDrawSpline(int n, wxPoint points[])
+void wxDCImpl::DrawSpline(int n, wxPoint points[])
{
wxPointList list;
- for (int i =0; i < n; i++)
- list.Append( &points[i] );
+ for ( int i = 0; i < n; i++ )
+ list.Append(&points[i]);
- DoDrawSpline(&list);
+ DrawSpline(&list);
}
// ----------------------------------- spline code ----------------------------------------
m_pen.SetColour(oldPenColour);
}
+void wxDCImpl::InheritAttributes(wxWindow *win)
+{
+ wxCHECK_RET( win, "window can't be NULL" );
+
+ SetFont(win->GetFont());
+ SetTextForeground(win->GetForegroundColour());
+ SetTextBackground(win->GetBackgroundColour());
+ SetBackground(wxBrush(win->GetBackgroundColour()));
+}
+
//-----------------------------------------------------------------------------
// wxDC
//-----------------------------------------------------------------------------