• Main Page
  • Related Pages
  • Modules
  • Classes
  • Files
  • File List
  • File Members

VGDevice.h

Go to the documentation of this file.
00001 #ifndef VGDevice_H
00002 #define VGDevice_H
00003 
00004 /*
00005   GUIDO Library
00006   Copyright (C) 2003--2006  Grame
00007 
00008   This Source Code Form is subject to the terms of the Mozilla Public
00009   License, v. 2.0. If a copy of the MPL was not distributed with this
00010   file, You can obtain one at http://mozilla.org/MPL/2.0/.
00011 
00012   Grame Research Laboratory, 11, cours de Verdun Gensoul 69002 Lyon - France
00013   research@grame.fr
00014 
00015 */
00016 
00017 #include "VGColor.h"
00018 
00019 class VGFont;
00020 class VGSystem;
00021 
00027 // --------------------------------------------------------------
00028 //      VGDevice class
00029 // --------------------------------------------------------------
00068 class VGDevice
00069 {
00070 
00071     friend class VGFont;    //to use GetNativeContext()
00072     friend class DecoratorDevice;
00073 
00074     public:
00075 
00077                 enum VRasterOpMode {
00078                         kUnknown        = 0,    // unknown mode, use default
00079                         kOpCopy         = 1,    // direct copy
00080                         kOpAnd          = 2,    // AND
00081                         kOpXOr          = 4,    // XOR = src invert
00082                         kOpInvert       = 8,    // dest invert
00083                         kOpOr           = 16    // OR
00084                 };
00085 
00087                 enum VTextAlignMode {
00088                         kAlignBase      = 1,
00089                         kAlignBottom    = 2,
00090                         kAlignTop       = 4,
00091                         kAlignCenter    = 8,
00092                         kAlignLeft      = 16,
00093                         kAlignRight     = 32,
00094                         kAlignBaseLeft  = kAlignLeft | kAlignBase
00095                 };
00096 
00097         virtual                 ~VGDevice() {}
00098 
00100         virtual bool            IsValid() const = 0;
00101 
00102 
00103         // - Drawing services ------------------------------------------------
00104 
00108         virtual bool            BeginDraw() = 0;
00109 
00113         virtual void            EndDraw() = 0;
00114 
00117         virtual void            InvalidateRect( float left, float top,
00118                                        float right, float bottom ) = 0;
00119 
00120                     // - Standard graphic primitives -------------------------
00121 
00123         virtual void            MoveTo( float x, float y ) = 0;
00124 
00127         virtual void            LineTo( float x, float y ) = 0;
00128 
00131         virtual void            Line( float x1, float y1,
00132                                       float x2, float y2 ) = 0;
00133 
00136         virtual void            Frame( float left, float top,
00137                                        float right, float bottom ) = 0;
00138 
00144         virtual void            Arc( float left,   float top,
00145                                      float right,  float bottom,
00146                                      float startX, float startY,
00147                                      float endX,   float endY ) = 0;
00148 
00149                     // - Filled surfaces --------------------------------------
00150                     // The raster op mode for color filling should be specified
00151                     // with SetRasterOpMode() before using one of these.
00152 
00156         virtual void            Triangle( float x1, float y1,
00157                                           float x2, float y2,
00158                                           float x3, float y3 ) = 0;
00159 
00163         virtual void            Polygon( const float * xCoords,
00164                                          const float * yCoords, int count ) = 0;
00165 
00168         virtual void            Rectangle( float left,  float top,
00169                                            float right, float bottom ) = 0;
00170 
00171         // - Font services ---------------------------------------------------
00172 
00176         virtual void            SetMusicFont( const VGFont * font ) = 0;
00177 
00179         virtual const VGFont *  GetMusicFont() const = 0;
00180 
00184         virtual void            SetTextFont( const VGFont * font ) = 0;
00185 
00187         virtual const VGFont *  GetTextFont() const = 0;
00188 
00190         virtual void            selectfont(int) {};
00191 
00192 
00193         // - Pen & brush services --------------------------------------------
00194 
00197         virtual void            SelectPen( const VGColor & inColor,
00198                                            float witdh ) = 0;
00199 
00203         virtual void            SelectFillColor( const VGColor & c ) = 0;
00204 
00207         virtual void            PushPen( const VGColor & inColor,
00208                                          float inWidth ) = 0;
00209 
00212         virtual void            PopPen() = 0;
00213 
00217         virtual void            PushFillColor( const VGColor & inColor ) = 0;
00218 
00222         virtual void            PopFillColor() = 0;
00223 
00229         virtual void            SetRasterOpMode( VRasterOpMode ROpMode) = 0;
00230 
00234         virtual VRasterOpMode   GetRasterOpMode() const = 0;
00235 
00236 
00237         // - Bitmap services (bit-block copy methods) --------------------------
00238 
00245         virtual bool            CopyPixels( VGDevice* pSrcDC, float alpha = -1.0) = 0;
00246 
00254         virtual bool            CopyPixels( int xDest, int yDest,
00255                                             VGDevice* pSrcDC,
00256                                             int xSrc, int ySrc,
00257                                             int nSrcWidth, int nSrcHeight, float alpha = -1.0) = 0;
00258 
00259         // only for \DrHoos and \DrRenz
00267         virtual bool            CopyPixels( int xDest, int yDest,
00268                                             int dstWidth, int dstHeight,
00269                                             VGDevice* pSrcDC, float alpha = -1.0) = 0;
00270 
00278         virtual bool            CopyPixels( int xDest, int yDest,
00279                                             int dstWidth, int dstHeight,
00280                                             VGDevice* pSrcDC,
00281                                             int xSrc, int ySrc,
00282                                             int nSrcWidth, int nSrcHeight, float alpha = -1.0) = 0;
00283 
00284         // - Coordinate services ------------------------------------------------
00285 
00287         virtual void            SetScale( float x, float y ) = 0;
00288 
00290         virtual void            SetOrigin( float x, float y ) = 0;
00291 
00293         virtual void            OffsetOrigin( float x, float y ) = 0;
00294 
00297         virtual void            LogicalToDevice( float * x, float * y ) const = 0;
00298 
00301         virtual void            DeviceToLogical( float * x, float * y ) const = 0;
00302 
00305         virtual float           GetXScale() const = 0;
00306         virtual float           GetYScale() const = 0;
00307         virtual float           GetXOrigin() const = 0;
00308         virtual float           GetYOrigin() const = 0;
00309 
00313         virtual void            NotifySize( int inWidth, int inHeight ) = 0;
00314 
00316         virtual int             GetWidth() const = 0;
00317 
00319         virtual int             GetHeight() const = 0;
00320 
00321 
00322         // - Text and music symbols services -------------------------------------
00323 
00327         virtual void            DrawMusicSymbol(float x, float y,
00328                                                 unsigned int inSymbolID ) = 0;
00329 
00333         virtual void            DrawString( float x, float y,
00334                                             const char * s,
00335                                             int inCharCount ) = 0;
00336 
00338         virtual void            SetFontColor( const VGColor & inColor ) = 0;
00339 
00341         virtual VGColor         GetFontColor() const = 0;
00342 
00344         virtual void            SetFontBackgroundColor( const VGColor & inColor ) = 0;
00345 
00347         virtual VGColor         GetFontBackgroundColor() const = 0;
00348 
00351         virtual void            SetFontAlign( unsigned int inAlign ) = 0;
00352 
00355         virtual unsigned int    GetFontAlign() const = 0;
00356 
00357         // - Printer informations services ----------------------------------------
00358 
00360         virtual void            SetDPITag( float inDPI ) = 0;
00362         virtual float           GetDPITag() const = 0;
00363 
00365         virtual void*           GetBitMapPixels() = 0;
00367         virtual void            ReleaseBitMapPixels() = 0;
00368 
00370         virtual const char*     GetImageData(const char* & outDataPtr, int& outLength) = 0;
00372         virtual void            ReleaseImageData(const char *) const = 0;
00373 
00375         virtual VGSystem *      getVGSystem() const = 0;
00376 
00377         // - Data export services ----------------------------------------
00379 //      virtual void            ExportToFile( const char * inFilePath ) = 0;
00380 
00381 
00383         virtual void *          GetNativeContext() const = 0;
00384 
00385 
00386     public:
00387 
00388         // - VGDevice extension --------------------------------------------
00390         virtual void            SelectPenColor( const VGColor & inColor) = 0;
00391         
00393         virtual void            SelectPenWidth( float witdh) = 0;
00394 
00395         virtual void            PushPenColor( const VGColor & inColor) = 0;
00396         virtual void            PopPenColor() = 0;
00397         
00398         virtual void            PushPenWidth( float width) = 0;
00399         virtual void            PopPenWidth() = 0;
00400 
00401 };
00402 
00405 #endif

Generated on Mon Jan 5 2015 11:16:24 for GUIDOLib by doxygen 1.7.2 - © Grame Research Lab.