00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _FL_DEVICE_H_
00023 #define _FL_DEVICE_H_
00024
00025 #include "Enumerations.h"
00026 #include "Fl_Group.h"
00027
00028 extern FL_API Fl_Color fl_color_;
00029 extern FL_API Fl_Font fl_font_;
00030 extern FL_API float fl_size_;
00031 extern FL_API const char* fl_encoding_;
00032
00033 typedef void (*Fl_Draw_Image_Cb)(void*,int,int,int,uchar*);
00034
00036 class FL_API Fl_Device
00037 {
00038 public:
00039 virtual ~Fl_Device() { }
00040
00041
00042 enum {
00043 CAN_CLIPOUT = 1
00044
00045 };
00046 virtual int capabilities() { return CAN_CLIPOUT; }
00047
00048 virtual void color(Fl_Color color);
00049 virtual void color(uchar r, uchar g, uchar b) { color(fl_rgb(r,g,b)); }
00050 virtual Fl_Color color() const { return fl_color_; }
00051
00052
00053 virtual void push_clip(int x, int y, int w, int h);
00054
00055 virtual void clip_out(int x, int y, int w, int h);
00056
00057 virtual void push_no_clip();
00058
00059 virtual void pop_clip();
00060
00061 virtual int not_clipped(int x, int y, int w, int h);
00062
00063 virtual int clip_box(int _x, int _y, int _w, int _h, int& x, int& y, int& w, int& h);
00064
00065
00066
00067 virtual void line_style(int style, int width=0, char* dashes=0);
00068
00069
00070 virtual void push_matrix();
00071 virtual void pop_matrix();
00072 virtual void scale(float x, float y);
00073 virtual void scale(float x);
00074 virtual void translate(float x, float y);
00075 virtual void translate(int x, int y);
00076 virtual void rotate(float d);
00077 virtual void mult_matrix(float a, float b, float c, float d, float e, float f);
00078 virtual void load_identity();
00079
00080
00081 virtual void transform(float& x, float& y);
00082 virtual void transform(int& x, int& y);
00083 virtual void transform_distance(float& x, float& y);
00084
00085
00086
00087 virtual void newpath();
00088 virtual void vertex(float x, float y);
00089 virtual void vertex(int x, int y);
00090 virtual void vertices(int n, const float v[][2]);
00091 virtual void vertices(int n, const int v[][2]);
00092 virtual void transformed_vertices(int n, const float v[][2]);
00093 virtual void closepath();
00094
00095
00096 virtual void curve(float x0, float y0,
00097 float x1, float y1,
00098 float x2, float y2,
00099 float x3, float x4);
00100
00101
00102 virtual void arc(float x, float y, float w, float h, float start, float end);
00103
00104
00105 virtual void circle(float x, float y, float r);
00106 virtual void ellipse(float x, float y, float w, float h);
00107
00108
00109 virtual void points();
00110 virtual void stroke();
00111 virtual void fill();
00112 virtual void fill_stroke(Fl_Color color);
00113
00114
00115 virtual void rect(int x, int y, int w, int h);
00116 virtual void rectf(int x, int y, int w, int h, Fl_Color c);
00117 virtual void rectf(int x, int y, int w, int h);
00118 virtual void rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b) { rectf(x,y,w,h, fl_rgb(r,g,b)); }
00119 virtual void point(int x, int y);
00120 virtual void line(int x1, int y1, int x2, int y2);
00121
00122 virtual void pie(int x,int y,int w,int h,float a,float a2,int what);
00123
00124
00125 virtual void font(Fl_Font face, float size);
00126
00127 virtual void font(const char* s, float size);
00128 virtual void font(const char* s, int attributes, float size);
00129 virtual const char* fontname(Fl_Font, int * = 0);
00130
00131 virtual void encoding(const char*);
00132 virtual const char* encoding() const { return fl_encoding_; }
00133
00134 virtual Fl_Font font() const { return fl_font_; }
00135 virtual float size() const { return fl_size_; }
00136
00137
00138 virtual float width(unsigned int ucs) const;
00139 virtual float width(const char* s) const;
00140 virtual float width(const Fl_String& s) const;
00141 virtual float width(const char* s, int n) const;
00142
00143 virtual float height() const;
00144 virtual float descent() const;
00145
00146
00147 virtual void transformed_draw(const char* s, int n, float x, float y);
00148 virtual void rtl_draw(const char *s, int n, float x, float y);
00149
00150 virtual void draw(const char* s, float x, float y);
00151 virtual void draw(const Fl_String & s, float x, float y);
00152 virtual void draw(const char* s, int n, float x, float y);
00153
00154
00155 virtual void draw_image(const uchar* im, int x,int y,int w,int h, int delta=3, int ldelta=0);
00156 virtual void draw_image_mono(const uchar* im, int x,int y,int w,int h, int delta=1, int ld=0);
00157 virtual void draw_image(Fl_Draw_Image_Cb cb, void* im, int x,int y,int w,int h, int delta=3);
00158 virtual void draw_image_mono(Fl_Draw_Image_Cb cb, void* im, int x,int y,int w,int h, int delta=1);
00159 };
00160
00161 extern FL_API Fl_Device fl_fltk_dev;
00162 extern FL_API Fl_Device *fl_current_dev;
00163
00164 #endif