wxWidgets/include/wx/dcsvg.h
Robert Roebling 04ab8b6ddf Moved all the coordinate system calculation to wxDCBase
and thus removed all the duplicated code in all wxDC
   classes.
  Problematic is that wxSVGFileDC and wxPostscriptDC inherit
   from wxDC and therefore include platform specific code
   (also before this change) so I chose to override all
   SetLogicalOrigin() etc. methods in these classes and
   call their wxDCBase methods thereby circumventing the
   platform dependent code.
  I'm afraid the Mac code will require updating, too.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45752 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-05-02 11:05:45 +00:00

150 lines
5.8 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: wx/dcsvg.h
// Purpose: wxSVGFileDC
// Author: Chris Elliott
// Modified by:
// Created:
// Copyright: (c) Chris Elliott
// RCS-ID: $Id$
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __DCSVG_H
#define __DCSVG_H
#include "wx/wfstream.h"
#include "wx/string.h"
#define wxSVGVersion wxT("v0100")
#ifdef __BORLANDC__
#pragma warn -8008
#pragma warn -8066
#endif
class WXDLLIMPEXP_CORE wxSVGFileDC : public wxDC
{
public:
wxSVGFileDC (wxString f);
wxSVGFileDC (wxString f, int Width, int Height);
wxSVGFileDC (wxString f, int Width, int Height, float dpi);
~wxSVGFileDC();
bool CanDrawBitmap() const { return true; }
bool CanGetTextExtent() const { return true; }
int GetDepth() const
{ wxASSERT_MSG (false, wxT("wxSVGFILEDC::GetDepth Call not implemented")); return -1 ; }
void Clear()
{ wxASSERT_MSG (false, wxT("wxSVGFILEDC::Clear() Call not implemented \nNot sensible for an output file?")); return ; }
void DestroyClippingRegion()
{ wxASSERT_MSG (false, wxT("wxSVGFILEDC::void Call not yet implemented")); return ; }
wxCoord GetCharHeight() const;
wxCoord GetCharWidth() const;
void SetClippingRegion(wxCoord WXUNUSED(x), wxCoord WXUNUSED(y), wxCoord WXUNUSED(width), wxCoord WXUNUSED(height))
{ wxASSERT_MSG (false, wxT("wxSVGFILEDC::SetClippingRegion not implemented")); return ; }
void SetPalette(const wxPalette& WXUNUSED(palette))
{ wxASSERT_MSG (false, wxT("wxSVGFILEDC::SetPalette not implemented")); return ; }
void GetClippingBox(wxCoord *WXUNUSED(x), wxCoord *WXUNUSED(y), wxCoord * WXUNUSED(width), wxCoord * WXUNUSED(height))
{ wxASSERT_MSG (false, wxT("wxSVGFILEDC::GetClippingBox not implemented")); return ; }
void SetLogicalFunction(int WXUNUSED(function))
{ wxASSERT_MSG (false, wxT("wxSVGFILEDC::SetLogicalFunction Call not implemented")); return ; }
int GetLogicalFunction() const
{ wxASSERT_MSG (false, wxT("wxSVGFILEDC::GetLogicalFunction() not implemented")); return wxCOPY ; }
void SetBackground( const wxBrush &brush ) ;
void SetBackgroundMode( int mode ) ;
void SetBrush(const wxBrush& brush) ;
void SetFont(const wxFont& font) ;
void SetPen(const wxPen& pen) ;
bool IsOk() const {return m_OK;}
// these need to be overridden as wxPostscriptDC inherits
// from the platform dependent wxDC and this we'd call
// e.g. wxMSW specific code here.
virtual void SetMapMode( int mode );
virtual void SetUserScale( double x, double y );
virtual void SetLogicalScale( double x, double y );
virtual void SetLogicalOrigin( wxCoord x, wxCoord y );
virtual void SetDeviceOrigin( wxCoord x, wxCoord y );
void SetAxisOrientation( bool xLeftRight, bool yBottomUp );
private:
bool DoGetPixel(wxCoord, wxCoord, class wxColour *) const
{ wxASSERT_MSG (false, wxT("wxSVGFILEDC::DoGetPixel Call not implemented")); return true; }
virtual bool DoBlit(wxCoord, wxCoord, wxCoord, wxCoord, class wxDC *,
wxCoord, wxCoord, int = wxCOPY, bool = 0, int = -1, int = -1) ;
void DoCrossHair(wxCoord, wxCoord)
{ wxASSERT_MSG (false, wxT("wxSVGFILEDC::CrossHair Call not implemented")); return ; }
void DoDrawArc(wxCoord, wxCoord, wxCoord, wxCoord, wxCoord, wxCoord);
void DoDrawBitmap(const class wxBitmap &, wxCoord, wxCoord, bool = 0) ;
void DoDrawCheckMark(wxCoord x, wxCoord y, wxCoord width, wxCoord height) ;
void DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height) ;
void DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoord h,double sa,double ea) ;
void DoDrawIcon(const class wxIcon &, wxCoord, wxCoord) ;
void DoDrawLine (wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2) ;
void DoDrawLines(int n, wxPoint points[], wxCoord xoffset = 0, wxCoord yoffset = 0) ;
void DoDrawPoint(wxCoord, wxCoord) ;
void DoDrawPolygon(int n, wxPoint points[], wxCoord xoffset, wxCoord yoffset,int fillStyle) ;
void DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height) ;
void DoDrawRotatedText(const wxString& text, wxCoord x, wxCoord y, double angle) ;
void DoDrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height, double radius = 20) ;
void DoDrawText(const wxString& text, wxCoord x, wxCoord y);
bool DoFloodFill(wxCoord WXUNUSED(x), wxCoord WXUNUSED(y), const wxColour& WXUNUSED(col),
int WXUNUSED(style) = wxFLOOD_SURFACE)
{ wxASSERT_MSG (false, wxT("wxSVGFILEDC::DoFloodFill Call not implemented")); return false ; }
void DoGetSize(int * x, int *y) const { *x = m_width; *y = m_height ; return ; }
void DoGetTextExtent(const wxString& string, wxCoord *w, wxCoord *h, wxCoord *descent = NULL, wxCoord *externalLeading = NULL, const wxFont *font = NULL) const ;
void DoSetClippingRegionAsRegion(const class wxRegion &)
{ wxASSERT_MSG (false, wxT("wxSVGFILEDC::DoSetClippingRegionAsRegion Call not yet implemented")); return ; }
void Init (wxString f, int Width, int Height, float dpi);
void NewGraphics();
void write( const wxString &s );
private:
wxFileOutputStream *m_outfile;
wxString m_filename;
int m_sub_images; // number of png format images we have
bool m_OK;
bool m_graphics_changed;
int m_width, m_height;
private:
DECLARE_ABSTRACT_CLASS(wxSVGFileDC)
};
#endif // __DCSVG_H