Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

mgdev-eps.h

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

Generated on Thu Feb 10 20:06:41 2005 for LibMagiC by doxygen1.2.18