GUIDOLib  1.7.7
Guido Engine Internal Documentation
AbstractDevice.h
1 #ifndef __AbstractDevice__
2 #define __AbstractDevice__
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 
34 // --------------------------------------------------------------
35 // AbstractDevice class
36 // --------------------------------------------------------------
42 class_export AbstractDevice : public VGDevice
43 {
44  AbstractSystem* fSystem;
45  std::ostream& fStream;
46  std::string fSpace;
47  int fWidth;
48  int fHeight;
49  const VGFont * fMusicFont;
50  const VGFont * fTextFont;
51  VRasterOpMode fOpMode;
52  float fXScale;
53  float fYScale;
54  float fXOrigin;
55  float fYOrigin;
56  unsigned int fFontAlign;
57  float fDPI;
60 
61  // color is written in the abstract device as four values
62  // from 0 to 255 that represent ARGB
63  void writeColor (const VGColor& color) const;
64  // formatted images (bitmaps) are written in the form:
65  // Width Height Mimetype Length(inBytes) bytes
66  // for example
67  // 20 30 image/png 40 #@#%!@!@%%
68  void writeFormattedImage (VGDevice* pSrcDC) const;
69  // translates RasterOpMode enum to a human readable string
70  void writeRasterOpModeToString(VRasterOpMode mode) const;
71  // writes the font's name, size and properties
72  // properties are an integer corresponding to Guido's internal
73  // properties representation
74  void writeFont(const VGFont *font) const;
75  public:
76  AbstractDevice(std::ostream& outstream, AbstractSystem* system);
77  virtual ~AbstractDevice();
78 
80  virtual bool IsValid() const { return true; }
81 
82 
83  // - Drawing services ------------------------------------------------
84  virtual bool BeginDraw();
85  virtual void EndDraw();
86 
87  virtual void InvalidateRect( float left, float top, float right, float bottom );
88 
89  // - Standard graphic primitives -------------------------
90  virtual void MoveTo( float x, float y );
91  virtual void LineTo( float x, float y );
92  virtual void Line( float x1, float y1, float x2, float y2 );
93  virtual void Frame( float left, float top, float right, float bottom );
94  virtual void Arc( float left, float top, float right, float bottom,
95  float startX, float startY, float endX, float endY );
96  virtual void FrameEllipse( float x, float y, float width, float height);
97 
98  // - Filled surfaces --------------------------------------
99  virtual void Ellipse( float x, float y, float width, float height, const VGColor& color);
100  virtual void Triangle( float x1, float y1, float x2, float y2, float x3, float y3 );
101  virtual void Polygon( const float * xCoords, const float * yCoords, int count );
102  virtual void Rectangle( float left, float top, float right, float bottom );
103 
104  // - Font services ---------------------------------------------------
105  virtual void SetMusicFont( const VGFont * font );
106  virtual const VGFont * GetMusicFont() const;
107  virtual void SetTextFont( const VGFont * font );
108  virtual const VGFont * GetTextFont() const;
109 
110  // - Pen & brush services --------------------------------------------
111  virtual void SelectPen( const VGColor & inColor, float witdh );
112  virtual void SelectFillColor( const VGColor & c );
113  virtual void PushPen( const VGColor & inColor, float inWidth );
114  virtual void PopPen();
115  virtual void PushFillColor( const VGColor & inColor );
116  virtual void PopFillColor();
117 
118  virtual void SetRasterOpMode( VRasterOpMode ROpMode);
119  virtual VRasterOpMode GetRasterOpMode() const;
120 
121 
122  // - Bitmap services (bit-block copy methods) --------------------------
123  virtual bool CopyPixels( VGDevice* pSrcDC, float alpha = -1.0);
124  virtual bool CopyPixels( int xDest, int yDest, VGDevice* pSrcDC, int xSrc, int ySrc,
125  int nSrcWidth, int nSrcHeight, float alpha = -1.0);
126  virtual bool CopyPixels( int xDest, int yDest, int dstWidth, int dstHeight,
127  VGDevice* pSrcDC, float alpha = -1.0);
128  virtual bool CopyPixels( int xDest, int yDest, int dstWidth, int dstHeight,
129  VGDevice* pSrcDC, int xSrc, int ySrc,
130  int nSrcWidth, int nSrcHeight, float alpha = -1.0);
131 
132  // - Coordinate services ------------------------------------------------
133  virtual void SetScale( float x, float y );
134  virtual void SetOrigin( float x, float y );
135  virtual void OffsetOrigin( float x, float y );
136  virtual void LogicalToDevice( float * x, float * y ) const;
137  virtual void DeviceToLogical( float * x, float * y ) const;
138 
139  virtual float GetXScale() const;
140  virtual float GetYScale() const;
141  virtual float GetXOrigin() const;
142  virtual float GetYOrigin() const;
143 
144  virtual void NotifySize( int inWidth, int inHeight );
145  virtual int GetWidth() const;
146  virtual int GetHeight() const;
147 
148 
149  // - Text and music symbols services -------------------------------------
150  virtual void DrawMusicSymbol(float x, float y, unsigned int inSymbolID );
151  virtual void DrawString( float x, float y, const char * s, int inCharCount );
152 
153  virtual void SetFontColor( const VGColor & inColor );
154  virtual VGColor GetFontColor() const;
155  virtual void SetFontBackgroundColor( const VGColor & inColor );
156  virtual VGColor GetFontBackgroundColor() const;
157  virtual void SetFontAlign( unsigned int inAlign );
158  virtual unsigned int GetFontAlign() const;
159 
160  // - Printer informations services ----------------------------------------
161  virtual void SetDPITag( float inDPI );
162  virtual float GetDPITag() const;
163 
164  virtual void* GetBitMapPixels() { return 0; }
165  virtual void ReleaseBitMapPixels() {}
166  virtual const char* GetImageData(const char* & outDataPtr, int& outLength) { return 0; };
167  virtual void ReleaseImageData(const char *) const {}
168 
170  virtual VGSystem * getVGSystem() const { return (VGSystem *)fSystem; }
171 
172  // - Data export services ----------------------------------------
173  virtual void * GetNativeContext() const { return 0; }
174 
175 
176  // - VGDevice extension --------------------------------------------
177  virtual void SelectPenColor( const VGColor & inColor);
178  virtual void SelectPenWidth( float witdh);
179  virtual void PushPenColor( const VGColor & inColor);
180  virtual void PopPenColor();
181  virtual void PushPenWidth( float width);
182  virtual void PopPenWidth();
183 };
184 
187 #endif
PushPenWidth
virtual void PushPenWidth(float width)
fXScale
float fXScale
Definition: AbstractDevice.h:52
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
SelectFillColor
virtual void SelectFillColor(const VGColor &c)
GetNativeContext
virtual void * GetNativeContext() const
Definition: AbstractDevice.h:173
PushFillColor
virtual void PushFillColor(const VGColor &inColor)
ReleaseImageData
virtual void ReleaseImageData(const char *) const
Definition: AbstractDevice.h:167
LineTo
virtual void LineTo(float x, float y)
SetDPITag
virtual void SetDPITag(float inDPI)
GetFontColor
virtual VGColor GetFontColor() const
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)
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: AbstractDevice.h:53
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)
GetYOrigin
virtual float GetYOrigin() const
PushPenColor
virtual void PushPenColor(const VGColor &inColor)
writeFont
void writeFont(const VGFont *font) const
fSpace
std::string fSpace
Definition: AbstractDevice.h:46
GetMusicFont
virtual const VGFont * GetMusicFont() const
fFontAlign
unsigned int fFontAlign
Definition: AbstractDevice.h:56
SetFontColor
virtual void SetFontColor(const VGColor &inColor)
PopFillColor
virtual void PopFillColor()
Polygon
virtual void Polygon(const float *xCoords, const float *yCoords, int count)
~AbstractDevice
virtual ~AbstractDevice()
SetMusicFont
virtual void SetMusicFont(const VGFont *font)
fDPI
float fDPI
Definition: AbstractDevice.h:57
Triangle
virtual void Triangle(float x1, float y1, float x2, float y2, float x3, float y3)
fHeight
int fHeight
Definition: AbstractDevice.h:48
fWidth
int fWidth
Definition: AbstractDevice.h:47
AbstractSystem
class_export AbstractSystem
Definition: AbstractSystem.h:38
writeRasterOpModeToString
void writeRasterOpModeToString(VRasterOpMode mode) const
GetImageData
virtual const char * GetImageData(const char *&outDataPtr, int &outLength)
Definition: AbstractDevice.h:166
AbstractDevice
class_export AbstractDevice
An abstract drawing device, for use with higher level devices. outputs commands and their passed para...
Definition: AbstractDevice.h:33
GetBitMapPixels
virtual void * GetBitMapPixels()
Definition: AbstractDevice.h:164
writeFormattedImage
void writeFormattedImage(VGDevice *pSrcDC) 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: AbstractDevice.h:51
SetScale
virtual void SetScale(float x, float y)
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
VGDevice
Generic platform independant drawing device.
Definition: VGDevice.h:68
VGColor
Generic class to manipulate device independant colors.
Definition: VGColor.h:34
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
MoveTo
virtual void MoveTo(float x, float y)
fTextFont
const VGFont * fTextFont
Definition: AbstractDevice.h:50
SetFontAlign
virtual void SetFontAlign(unsigned int inAlign)
SetTextFont
virtual void SetTextFont(const VGFont *font)
CopyPixels
virtual bool CopyPixels(VGDevice *pSrcDC, float alpha=-1.0)
fStream
std::ostream & fStream
Definition: AbstractDevice.h:45
EndDraw
virtual void EndDraw()
DrawString
virtual void DrawString(float x, float y, const char *s, int inCharCount)
fMusicFont
const VGFont * fMusicFont
Definition: AbstractDevice.h:49
PopPenColor
virtual void PopPenColor()
fXOrigin
float fXOrigin
Definition: AbstractDevice.h:54
SelectPenColor
virtual void SelectPenColor(const VGColor &inColor)
VGFont
Generic pure virtual & device-independant font class.
Definition: VGFont.h:36
PopPenWidth
virtual void PopPenWidth()
PopPen
virtual void PopPen()
fYOrigin
float fYOrigin
Definition: AbstractDevice.h:55
GetRasterOpMode
virtual VRasterOpMode GetRasterOpMode() const
fFontBackgroundColor
VGColor fFontBackgroundColor
Definition: AbstractDevice.h:59
fFontColor
VGColor fFontColor
Definition: AbstractDevice.h:58
DeviceToLogical
virtual void DeviceToLogical(float *x, float *y) const
writeColor
void writeColor(const VGColor &color) const
ReleaseBitMapPixels
virtual void ReleaseBitMapPixels()
Definition: AbstractDevice.h:165
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