Support SetDeviceOrigin and SetAxisOrientation in wxSVGFileDC.

Override SetDeviceOrigin, SetLogicalOrigin and SetAxisOrientation from wxDC and mark the graphics as changed, so the correct transform translations are applied.
This commit is contained in:
Maarten Bent 2016-06-04 14:10:46 +02:00
parent 1717db0373
commit 9e07ba8fae
2 changed files with 24 additions and 2 deletions

View File

@ -117,6 +117,24 @@ public:
return wxCOPY; return wxCOPY;
} }
virtual void SetLogicalOrigin(wxCoord x, wxCoord y) wxOVERRIDE
{
wxDCImpl::SetLogicalOrigin(x, y);
m_graphics_changed = true;
}
virtual void SetDeviceOrigin(wxCoord x, wxCoord y) wxOVERRIDE
{
wxDCImpl::SetDeviceOrigin(x, y);
m_graphics_changed = true;
}
virtual void SetAxisOrientation(bool xLeftRight, bool yBottomUp) wxOVERRIDE
{
wxDCImpl::SetAxisOrientation(xLeftRight, yBottomUp);
m_graphics_changed = true;
}
virtual void SetBackground( const wxBrush &brush ) wxOVERRIDE; virtual void SetBackground( const wxBrush &brush ) wxOVERRIDE;
virtual void SetBackgroundMode( int mode ) wxOVERRIDE; virtual void SetBackgroundMode( int mode ) wxOVERRIDE;
virtual void SetBrush(const wxBrush& brush) wxOVERRIDE; virtual void SetBrush(const wxBrush& brush) wxOVERRIDE;

View File

@ -1023,8 +1023,12 @@ void wxSVGFileDCImpl::DoStartNewGraphics()
sPenJoin = wxT("stroke-linejoin:round; "); sPenJoin = wxT("stroke-linejoin:round; ");
} }
sLast.Printf( wxT("stroke-width:%d\" \n transform=\"translate(%s %s) scale(%s %s)\">"), sLast.Printf(wxT("stroke-width:%d\" transform=\"translate(%s %s) scale(%s %s)\">"),
m_pen.GetWidth(), NumStr(m_logicalOriginX), NumStr(m_logicalOriginY), NumStr(m_scaleX), NumStr(m_scaleY) ); m_pen.GetWidth(),
NumStr((m_deviceOriginX - m_logicalOriginX)* m_signX),
NumStr((m_deviceOriginY - m_logicalOriginY)* m_signY),
NumStr(m_scaleX * m_signX),
NumStr(m_scaleY * m_signY));
s = sBrush + sPenCap + sPenJoin + sPenStyle + sLast + wxT("\n"); s = sBrush + sPenCap + sPenJoin + sPenStyle + sLast + wxT("\n");
write(s); write(s);