00001 #ifndef _WINC_GRAPH
00002 #define _WINC_GRAPH
00003
00004 #include <WXP/Device.h>
00005 #include <WXP/GFont.h>
00006 #include <WXP/GTran.h>
00007 #include <WXP/GraphAttr.h>
00008 #include <WXP/Image.h>
00009 #include <WXP/Listener.h>
00010 #include <WXP/Point.h>
00011 #include <WXP/Points.h>
00012 #include <WXP/Rect.h>
00013 #include <WXP/RGB.h>
00014 #include <WXP/String.h>
00015 #include <WXP/Symbol.h>
00016
00017 namespace WXP {
00018 class Graph : public Listener, public GraphAttr {
00019 bool opened;
00020 Device *window;
00021 static const int max_tran = 4;
00022 GTran tran[max_tran];
00023 int ctran;
00024 int font_type;
00025 char font_name[40];
00026 char font_spec[120];
00027 GFont font;
00028 char symb_file[80];
00029 Symbol symbol;
00030 Points pts;
00031
00032 int device;
00033 bool managed;
00034
00035 int line_color;
00036 float line_width;
00037 int line_style;
00038
00039 int fill_color;
00040 int fill_style;
00041
00042
00043
00044 int hfont;
00045 int text_color;
00046 float text_width;
00047 float text_height;
00048 float text_expan;
00049 float text_char_space;
00050 float text_char_width;
00051 int text_halign;
00052 int text_valign;
00053 float text_upx, text_upy;
00054 int text_box_color;
00055 bool text_box;
00056 int drop_color;
00057 int drop_shadow;
00058 int drop_width;
00059 int mark_type;
00060 float mark_size;
00061 float mark_width;
00062 int mark_color;
00063
00064 int drawTextLine( float ox, float oy, const char *string );
00065 int initClass();
00066 public:
00067
00068 Graph();
00069 Graph( const char *device, const char *param );
00070 ~Graph();
00071 int init();
00072 int setDevice( const char *device, const char *params );
00073 int getDevice( String &str );
00074 int open();
00075 int open( const char *dev, const char *params );
00076 bool isOpen();
00077 int close();
00078 int update();
00079 int manage();
00080 int unmanage();
00081 inline bool isManaged(){ return managed; };
00082 void callback( const char *ev_str, const char *ev_data, const void *data );
00083 int doCallback( const char *ev_str, const char *ev_data );
00084 int addCallback( const char *ev, Listener *list, const void *data );
00085 int setSize( float width, float height );
00086 int setOffset( float rx, float ry );
00087 int setInverse( bool val );
00088 bool getInverse();
00089 int setBackground( const char *str );
00090 int setIcon( bool val );
00091 int setTitle( const char *str );
00092 int setTran( int num );
00093 int setViewportAspect( Rect &limit, float aspect, int halign, int valign );
00094 int setViewportAspect( Rect &limit, float aspect );
00095 int setViewport( int num, Rect &rect );
00096 int setViewport( Rect &rect );
00097 int getViewport( Rect &rect );
00098 Rect getViewport();
00099 int getDeviceViewport( Rect &rect );
00100 Rect getDeviceViewport();
00101 int getMaxViewport( Rect &rect );
00102 Rect getMaxViewport();
00103 int setWindow( int num, Rect &rect );
00104 int setWindow( Rect &rect );
00105 int getWindow( Rect &rect );
00106 Rect getWindow();
00107 int getTran();
00108 int activateTran();
00109 int activateTran( int val );
00110 int tranPlotWindow( float x1, float y1, float &x2, float &y2 );
00111 int tranPlotWindow( Point &pt1, Point &pt2 );
00112 int tranWindow( int tran1, float x1, float y1, int tran2, float &x2, float &y2 );
00113 int tranWindow( int tran1, Point &pt1, int tran2, Point &pt2 );
00114 int clear();
00115 int clearRect( Rect &rect );
00116 int allocColor( float red, float grn, float blu );
00117 int allocColor( RGB &rgb );
00118 int drawLine( float x1, float y1, float x2, float y2 );
00119 int drawLine( Point &p1, Point &p2 );
00120 int drawLine( Points &data );
00121 int drawRect( float x1, float y1, float x2, float y2 );
00122 int drawRect( Rect &rect );
00123 int drawCircle( float x1, float y1, float rad );
00124 int drawCircle( Point &pt, float rad );
00125 int setLineColor( int index );
00126 int setLineWidth( float width );
00127 int setLineStyle( int style );
00128 int drawFill( Rect &rect );
00129 int drawFill( Points &data );
00130 int drawFillarea( Points &data );
00131 int setFillColor( int index );
00132 int setFillStyle( int index );
00133 int drawMarkLine( float x, float y, float size );
00134 int drawMark( float x, float y );
00135 int drawMark( Point pt );
00136 int setMarkColor( int index );
00137 int setMarkSize( float size );
00138 int setMarkType( int type );
00139 int setMarkWidth( float width );
00140 int drawText( float ox, float oy, const char *string );
00141 int drawText( Point pt, const char *string );
00142 int drawFormText( float x, float y, const char *format, ... );
00143 int drawFormText( Point pt, const char *format, ... );
00144 int setTextColor( int color );
00145 int setFontSpec();
00146 int setFont( const char *str );
00147 int setTextBoxColor( int index );
00148 int setDropColor( int index );
00149 int setDropShadow( int val );
00150 int getDropShadow();
00151 int setDropWidth( int val );
00152 int setTextExpansion( float expansion );
00153 int setTextWidth( float width );
00154 int setTextHeight( float height );
00155 int setTextDirection( float x, float y );
00156 int setTextAlign( int hor, int vert );
00157 int setTextCharWidth( float space );
00158 int setTextSpacing( float space );
00159 int setSymbol( const char *file );
00160 int drawSymbol( float ox, float oy, const char *string, float size );
00161 int drawSymbol( Point pt, const char *string, float size );
00162 int setImageAlign( int h, int v );
00163 int drawImage( Image &image, float x, float y );
00164 int drawImage( Image &image, int color, float x, float y );
00165 int getImage( Image &image );
00166 int setCursor( int type );
00167 bool isLooping();
00168 int getFrame();
00169 int setFrame( int ind );
00170 int newFrame();
00171 int deleteFrame(int ind);
00172 int getNumFrames();
00173 int bell();
00174 int message( const char *str, ... );
00175 int printTran();
00176
00177 static const int DEVICE_NONE = 0;
00178 static const int DEVICE_WINDOW = 1;
00179 static const int DEVICE_POSTSCRIPT = 2;
00180 static const int DEVICE_HPGL = 3;
00181 static const int DEVICE_METAFILE = 4;
00182 };
00183 }
00184 #endif