GUIDOLib  1.7.7
Guido Engine Internal Documentation
SVGDevice.h
1 #ifndef __SVGDevice__
2 #define __SVGDevice__
3 
4 /*
5  GUIDO Library
6  Copyright (C) 2011 Grame
7 
8  This Source Code Form is subject to the terms of the Mozilla Public
9  License, v. 2.0. If a copy of the MPL was not distributed with this
10  file, You can obtain one at http://mozilla.org/MPL/2.0/.
11 
12  Grame Research Laboratory, 11, cours de Verdun Gensoul 69002 Lyon - France
13  research@grame.fr
14 
15 */
16 
17 #include "GUIDOExport.h"
18 
19 #ifdef WIN32
20 # pragma warning (disable : 4275 4251)
21 #endif
22 
23 #include "VGDevice.h"
24 #include <ostream>
25 #include <fstream>
26 #include <string>
27 #include <vector>
28 
34 enum TagType {
42 };
43 
44 //______________________________________________________________________________
50 class svgendl {
51  private:
52  int fIndent;
53  public:
54  svgendl() : fIndent(0) {}
55  virtual ~svgendl() {}
56 
58  svgendl& operator++ (int) { fIndent++; return *this; }
60  svgendl& operator-- (int) { fIndent--; return *this; }
62  void print(std::ostream& os) const;
63 };
64 std::ostream& operator<< (std::ostream& os, const svgendl& eol);
65 
66 
67 class SVGSystem;
68 // --------------------------------------------------------------
69 // SVGDevice class
70 // --------------------------------------------------------------
73 class_export SVGDevice : public VGDevice
74 {
75  SVGSystem* fSystem;
76  const char* fGuidoFont;
78  const VGFont * fMusicFont;
79  const VGFont * fTextFont;
80  VRasterOpMode fOpMode;
84  float fDPI;
85  bool fViewPort;
86 
89  bool fBeginDone;
90 
92 
93  void print (std::ostream& out, const VGColor& color) const;
94  void printFont (std::ostream& out, const char* font) const;
95  void getsvgfont (const char* ptr, std::string& str) const;
96  float alpha2float (const VGColor& color) const;
97  void selectfont (int font);
98  void checkfont ();
99  const char* align2str (int align) const;
100  const char* baseline2str (int align) const;
101  void putbase64 (VGDevice* pSrcDC) const;
102 
103 protected:
104  std::ostream& fStream;
106 
108  int fCurrFont; //, fCurrFontProperties;
109 
110  void closegroup ();
111 
112 private:
113  void checkTagsOrder(TagType tagToClose);
114  std::vector<TagType> fTagTypesVector; // Necessary to maintain tags order and to know when to close "font-family" tag
115 
116  public:
117  enum { kSVGSizeDivider = 8 }; // used to compute the svg view size GuidoSVGExport and GuidoGetSVGMap
118  SVGDevice(std::ostream& outstream, SVGSystem* system, const char* guidofont, bool setviewport=false);
119  virtual ~SVGDevice();
120 
122  virtual bool IsValid() const { return true; }
123 
124 
125  // - Drawing services ------------------------------------------------
126  virtual bool BeginDraw();
127  virtual void EndDraw();
128 
129  virtual void InvalidateRect( float left, float top, float right, float bottom );
130 
131  // - Standard graphic primitives -------------------------
132  virtual void MoveTo( float x, float y );
133  virtual void LineTo( float x, float y );
134  virtual void Line( float x1, float y1, float x2, float y2 );
135  virtual void Frame( float left, float top, float right, float bottom );
136  virtual void Arc( float left, float top, float right, float bottom, float startX, float startY, float endX, float endY );
137  virtual void FrameEllipse( float x, float y, float width, float height);
138 
139  // - Filled surfaces --------------------------------------
140  virtual void Ellipse( float x, float y, float width, float height, const VGColor& color);
141  virtual void Triangle( float x1, float y1, float x2, float y2, float x3, float y3 );
142  virtual void Polygon( const float * xCoords, const float * yCoords, int count );
143  virtual void Rectangle( float left, float top, float right, float bottom );
144 
145  // - Font services ---------------------------------------------------
146  virtual void SetMusicFont( const VGFont * font );
147  virtual const VGFont * GetMusicFont() const;
148  virtual void SetTextFont( const VGFont * font );
149  virtual const VGFont * GetTextFont() const;
150 
151  // - Pen & brush services --------------------------------------------
152  virtual void SelectPen( const VGColor & inColor, float witdh );
153  virtual void SelectFillColor( const VGColor & c );
154  virtual void PushPen( const VGColor & inColor, float inWidth );
155  virtual void PopPen();
156  virtual void PushFillColor( const VGColor & inColor );
157  virtual void PopFillColor();
158 
159  virtual void SetRasterOpMode( VRasterOpMode ROpMode);
160  virtual VRasterOpMode GetRasterOpMode() const;
161 
162 
163  // - Bitmap services (bit-block copy methods) --------------------------
164  virtual bool CopyPixels( VGDevice* pSrcDC, float alpha = -1.0);
165  virtual bool CopyPixels( int xDest, int yDest, VGDevice* pSrcDC, int xSrc, int ySrc,
166  int nSrcWidth, int nSrcHeight, float alpha = -1.0);
167  virtual bool CopyPixels( int xDest, int yDest, int dstWidth, int dstHeight,
168  VGDevice* pSrcDC, float alpha = -1.0);
169  virtual bool CopyPixels( int xDest, int yDest, int dstWidth, int dstHeight,
170  VGDevice* pSrcDC, int xSrc, int ySrc,
171  int nSrcWidth, int nSrcHeight, float alpha = -1.0);
172 
173  // - Coordinate services ------------------------------------------------
174  virtual void SetScale( float x, float y );
175  virtual void SetOrigin( float x, float y );
176  virtual void OffsetOrigin( float x, float y );
177  virtual void LogicalToDevice( float * x, float * y ) const;
178  virtual void DeviceToLogical( float * x, float * y ) const;
179 
180  virtual float GetXScale() const;
181  virtual float GetYScale() const;
182  virtual float GetXOrigin() const;
183  virtual float GetYOrigin() const;
184 
185  virtual void NotifySize( int inWidth, int inHeight );
186  virtual int GetWidth() const;
187  virtual int GetHeight() const;
188 
189 
190  // - Text and music symbols services -------------------------------------
191  virtual void DrawMusicSymbol(float x, float y, unsigned int inSymbolID );
192  virtual void DrawString( float x, float y, const char * s, int inCharCount );
193 
194  virtual void SetFontColor( const VGColor & inColor );
195  virtual VGColor GetFontColor() const;
196  virtual void SetFontBackgroundColor( const VGColor & inColor );
197  virtual VGColor GetFontBackgroundColor() const;
198  virtual void SetFontAlign( unsigned int inAlign );
199  virtual unsigned int GetFontAlign() const;
200 
201  // - Printer informations services ----------------------------------------
202  virtual void SetDPITag( float inDPI );
203  virtual float GetDPITag() const;
204 
205  virtual void* GetBitMapPixels() { return 0; }
206  virtual void ReleaseBitMapPixels() {}
207  virtual const char* GetImageData(const char* & outDataPtr, int& outLength) { return 0; }
208  virtual void ReleaseImageData(const char *) const {}
209 
211  virtual VGSystem * getVGSystem() const { return (VGSystem *)fSystem; }
212 
213  // - Data export services ----------------------------------------
214  virtual void * GetNativeContext() const { return 0; }
215 
216 
217  // - VGDevice extension --------------------------------------------
218  virtual void SelectPenColor( const VGColor & inColor);
219  virtual void SelectPenWidth( float witdh);
220  virtual void PushPenColor( const VGColor & inColor);
221  virtual void PopPenColor();
222  virtual void PushPenWidth( float width);
223  virtual void PopPenWidth();
224 };
225 
228 #endif
PushPenWidth
virtual void PushPenWidth(float width)
fXScale
float fXScale
Definition: SVGDevice.h:81
fViewPort
bool fViewPort
Definition: SVGDevice.h:85
GetWidth
virtual int GetWidth() const
Arc
virtual void Arc(float left, float top, float right, float bottom, float startX, float startY, float endX, float endY)
DrawMusicSymbol
virtual void DrawMusicSymbol(float x, float y, unsigned int inSymbolID)
GetFontAlign
virtual unsigned int GetFontAlign() const
penWidthTag
Definition: SVGDevice.h:36
SelectFillColor
virtual void SelectFillColor(const VGColor &c)
svgendl
Definition: SVGDevice.h:50
GetNativeContext
virtual void * GetNativeContext() const
Definition: AbstractDevice.h:173
PushFillColor
virtual void PushFillColor(const VGColor &inColor)
printFont
void printFont(std::ostream &out, const char *font) const
ReleaseImageData
virtual void ReleaseImageData(const char *) const
Definition: AbstractDevice.h:167
alpha2float
float alpha2float(const VGColor &color) const
kTextFont
Definition: SVGDevice.h:91
fScaled
bool fScaled
Definition: SVGDevice.h:107
fFontAlign
int fFontAlign
Definition: SVGDevice.h:83
LineTo
virtual void LineTo(float x, float y)
SetDPITag
virtual void SetDPITag(float inDPI)
GetFontColor
virtual VGColor GetFontColor() const
svgendl::~svgendl
virtual ~svgendl()
Definition: SVGDevice.h:55
GetHeight
virtual int GetHeight() const
PushPen
virtual void PushPen(const VGColor &inColor, float inWidth)
InvalidateRect
virtual void InvalidateRect(float left, float top, float right, float bottom)
svgendl::print
void print(std::ostream &os) const
reset the indentation to none
SVGDevice
class_export SVGDevice
A SVG based drawing device.
Definition: SVGDevice.h:67
SelectPen
virtual void SelectPen(const VGColor &inColor, float witdh)
getVGSystem
virtual VGSystem * getVGSystem() const
temporary hack - must be removed asap
Definition: AbstractDevice.h:170
fYScale
float fYScale
Definition: SVGDevice.h:81
LogicalToDevice
virtual void LogicalToDevice(float *x, float *y) const
FrameEllipse
virtual void FrameEllipse(float x, float y, float width, float height)
Frame
virtual void Frame(float left, float top, float right, float bottom)
fEndl
svgendl fEndl
Definition: SVGDevice.h:105
GetYOrigin
virtual float GetYOrigin() const
PushPenColor
virtual void PushPenColor(const VGColor &inColor)
~SVGDevice
virtual ~SVGDevice()
fXPos
float fXPos
Definition: SVGDevice.h:81
GetMusicFont
virtual const VGFont * GetMusicFont() const
SetFontColor
virtual void SetFontColor(const VGColor &inColor)
PopFillColor
virtual void PopFillColor()
fPushedPenWidth
bool fPushedPenWidth
Definition: SVGDevice.h:107
checkfont
void checkfont()
Polygon
virtual void Polygon(const float *xCoords, const float *yCoords, int count)
baseline2str
const char * baseline2str(int align) const
SetMusicFont
virtual void SetMusicFont(const VGFont *font)
fBeginDone
bool fBeginDone
Definition: SVGDevice.h:89
fDPI
float fDPI
Definition: SVGDevice.h:84
Triangle
virtual void Triangle(float x1, float y1, float x2, float y2, float x3, float y3)
fHeight
int fHeight
Definition: SVGDevice.h:77
fWidth
int fWidth
Definition: SVGDevice.h:77
GetImageData
virtual const char * GetImageData(const char *&outDataPtr, int &outLength)
Definition: AbstractDevice.h:166
fCurrFont
int fCurrFont
Definition: SVGDevice.h:108
GetBitMapPixels
virtual void * GetBitMapPixels()
Definition: AbstractDevice.h:164
fontTag
Definition: SVGDevice.h:39
print
void print(std::ostream &out, const VGColor &color) const
NotifySize
virtual void NotifySize(int inWidth, int inHeight)
Ellipse
virtual void Ellipse(float x, float y, float width, float height, const VGColor &color)
Rectangle
virtual void Rectangle(float left, float top, float right, float bottom)
VGSystem
Generic pure virtual class for manipulating platform independant drawing devices and fonts.
Definition: VGSystem.h:61
fOpMode
VRasterOpMode fOpMode
Definition: SVGDevice.h:80
getsvgfont
void getsvgfont(const char *ptr, std::string &str) const
SetScale
virtual void SetScale(float x, float y)
svgendl::operator++
svgendl & operator++(int)
increase the indentation
Definition: SVGDevice.h:58
GetFontBackgroundColor
virtual VGColor GetFontBackgroundColor() const
OffsetOrigin
virtual void OffsetOrigin(float x, float y)
GetYScale
virtual float GetYScale() const
BeginDraw
virtual bool BeginDraw()
GetDPITag
virtual float GetDPITag() const
selectfont
void selectfont(int font)
VGDevice
Generic platform independant drawing device.
Definition: VGDevice.h:68
VGColor
Generic class to manipulate device independant colors.
Definition: VGColor.h:34
TagType
TagType
Definition: SVGDevice.h:34
fGuidoFont
const char * fGuidoFont
Definition: SVGDevice.h:76
SetOrigin
virtual void SetOrigin(float x, float y)
SetFontBackgroundColor
virtual void SetFontBackgroundColor(const VGColor &inColor)
IsValid
virtual bool IsValid() const
Returns the ability of the current VGdevice to be drawn into.
Definition: AbstractDevice.h:80
GetTextFont
virtual const VGFont * GetTextFont() const
SVGSystem
class_export SVGSystem
Definition: SVGSystem.h:35
MoveTo
virtual void MoveTo(float x, float y)
fTextFont
const VGFont * fTextFont
Definition: SVGDevice.h:79
fPendingStrokeColor
VGColor * fPendingStrokeColor
Definition: SVGDevice.h:87
SetFontAlign
virtual void SetFontAlign(unsigned int inAlign)
fPendingFillColor
VGColor * fPendingFillColor
Definition: SVGDevice.h:88
scaleTag
Definition: SVGDevice.h:40
SetTextFont
virtual void SetTextFont(const VGFont *font)
CopyPixels
virtual bool CopyPixels(VGDevice *pSrcDC, float alpha=-1.0)
closegroup
void closegroup()
fStream
std::ostream & fStream
Definition: SVGDevice.h:104
EndDraw
virtual void EndDraw()
kNoFont
Definition: SVGDevice.h:91
DrawString
virtual void DrawString(float x, float y, const char *s, int inCharCount)
fMusicFont
const VGFont * fMusicFont
Definition: SVGDevice.h:78
PopPenColor
virtual void PopPenColor()
fXOrigin
float fXOrigin
Definition: SVGDevice.h:81
putbase64
void putbase64(VGDevice *pSrcDC) const
SelectPenColor
virtual void SelectPenColor(const VGColor &inColor)
fOffset
bool fOffset
Definition: SVGDevice.h:107
fillColorTag
Definition: SVGDevice.h:38
VGFont
Generic pure virtual & device-independant font class.
Definition: VGFont.h:36
PopPenWidth
virtual void PopPenWidth()
svgendl::operator--
svgendl & operator--(int)
decrease the indentation
Definition: SVGDevice.h:60
PopPen
virtual void PopPen()
kSVGSizeDivider
Definition: SVGDevice.h:117
fYPos
float fYPos
Definition: SVGDevice.h:81
align2str
const char * align2str(int align) const
fYOrigin
float fYOrigin
Definition: SVGDevice.h:81
GetRasterOpMode
virtual VRasterOpMode GetRasterOpMode() const
fPushedFill
bool fPushedFill
Definition: SVGDevice.h:107
fPushedPen
bool fPushedPen
Definition: SVGDevice.h:107
fFontBackgroundColor
VGColor fFontBackgroundColor
Definition: SVGDevice.h:82
fFontColor
VGColor fFontColor
Definition: SVGDevice.h:82
penColorTag
Definition: SVGDevice.h:37
penTag
Definition: SVGDevice.h:35
operator<<
std::ostream & operator<<(std::ostream &os, const svgendl &eol)
DeviceToLogical
virtual void DeviceToLogical(float *x, float *y) const
ReleaseBitMapPixels
virtual void ReleaseBitMapPixels()
Definition: AbstractDevice.h:165
fPushedPenColor
bool fPushedPenColor
Definition: SVGDevice.h:107
svgendl::svgendl
svgendl()
Definition: SVGDevice.h:54
originTag
Definition: SVGDevice.h:41
kMusicFont
Definition: SVGDevice.h:91
SetRasterOpMode
virtual void SetRasterOpMode(VRasterOpMode ROpMode)
SelectPenWidth
virtual void SelectPenWidth(float witdh)
GetXOrigin
virtual float GetXOrigin() const
Line
virtual void Line(float x1, float y1, float x2, float y2)
GetXScale
virtual float GetXScale() const

Guido Project Copyright © 2019 Grame-CNCM