Main Page   Class Hierarchy   Compound List   File List   Compound Members  

mgdev-eps.h

00001 #ifndef __GDEV_EPS_H__
00002 #define __GDEV_EPS_H__
00003 
00004 #include "magic/mgobject.h"
00005 #include "magic/mcoord.h"
00006 
00008 //                                                                           //
00009 //             ----- ----   ---- ___               o                         //
00010 //             |     |   ) (     |  \   ___           ___   ___              //
00011 //             |---  |---   ---  |   | /   ) |   | | |   \ /   )             //
00012 //             |     |         ) |   | |---   \ /  | |     |---              //
00013 //             |____ |     ___/  |__/   \__    V   |  \__/  \__              //
00014 //                                                                           //
00016 
00019 class EPSDevice {
00020   public:
00021     
00022                     EPSDevice       () {make ();}
00023                     EPSDevice       (const Coord2D& dimensions);
00024 
00025     void            make            ();
00026     
00027     // Implementations
00028 
00029     virtual EPSDevice&  setPixel        (const Coord2D&) {;}
00030     virtual EPSDevice&  line            (const Coord2D& start, const Coord2D& end);
00031     virtual EPSDevice&  circle          (const Coord2D& pos, float r, bool fill=false);
00032     virtual EPSDevice&  rect            (const Rect& rect);
00033     virtual EPSDevice&  setClipping     (const Rect& rect);
00034     virtual EPSDevice&  endClipping     ();
00035     virtual EPSDevice&  text            (const String& text, float x, float y) {;}
00036     virtual EPSDevice&  setGray         (float g) {mStr+=format("%f setgray\n", g); return *this;}
00037 
00038     virtual EPSDevice&  saveState       () {mStr+="gsave\n"; return *this;}
00039     virtual EPSDevice&  restoreState    () {mStr+="grestore\n"; return *this;}
00040     virtual EPSDevice&  lineStyle       (const String& style, float scale=1.0);
00041     virtual EPSDevice&  lineWidth       (float w) {mStr+=format ("%f setlinewidth\n", w); return *this;}
00042     virtual EPSDevice&  scaling         (float x, float y);
00043     virtual EPSDevice&  origin          (const Coord2D& pos);
00044 
00045     virtual EPSDevice&  framedStyle     (float xUserSize, float yUserSize);
00046     virtual EPSDevice&  flipCoordinates ();
00047     
00048     // Informative
00049     
00050     float           width           () const {return mDimensions.x;}
00051     float           height          () const {return mDimensions.y;}
00052     const Coord2D&  scaling         () const {return mScaling;}
00053     
00054     // Own methods
00055 
00056     EPSDevice&      directPrint     (CONSTR str);
00057     EPSDevice&      comment         (CONSTR str) {mStr+=str; return *this;}
00058     
00059     // Adds footer to buffer
00060     void            printFooter     ();
00061 
00062     String          getBuffer       () const {return mStr;}
00063 
00064   private:
00065     Coord2D         mDimensions;
00066     Rect            mBoundingBox;
00067     Coord2D         mScaling, mOffset;
00068     String          mStr;
00069     bool            mArrowLines;
00070     float           mArrowHeadSize;
00071     
00072     void            printHeader     ();
00073     void            checkRange      (const Coord2D& pos);
00074 };
00075 
00076 #endif

Generated at Tue Dec 4 19:53:25 2001 for MagiC++ by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001