Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

Fl_Device.h

00001 /*
00002  * $Id: Fl_Device.h,v 1.4 2003/03/15 16:09:55 laza2000 Exp $
00003  *
00004  * Extended Fast Light Toolkit (EFLTK)
00005  * Copyright (C) 2002-2003 by EDE-Team
00006  * WWW: http://www.sourceforge.net/projects/ede
00007  *
00008  * Fast Light Toolkit (FLTK)
00009  * Copyright (C) 1998-2003 by Bill Spitzak and others.
00010  * WWW: http://www.fltk.org
00011  *
00012  * This library is distributed under the GNU LIBRARY GENERAL PUBLIC LICENSE
00013  * version 2. See COPYING for details.
00014  *
00015  * Author : Mikko Lahteenmaki
00016  * Email  : mikko@fltk.net
00017  *
00018  * Please report all bugs and problems to "efltk-bugs@fltk.net"
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     // Capabilities enum
00042     enum {
00043         CAN_CLIPOUT = 1
00044         // More to come..
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     // Clipping:
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     //  line style:
00067     virtual void line_style(int style, int width=0, char* dashes=0);
00068 
00069     //fl_vertex.cpp current transformation:
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     // get and use transformed positions:
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     //Build the path:
00086     //fl_vertex.cpp
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     //fl_curve.cpp
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     //fl_arc.cpp
00102     virtual void arc(float x, float y, float w, float h, float start, float end);
00103 
00104     //fl_vertex.cpp
00105     virtual void circle(float x, float y, float r);
00106     virtual void ellipse(float x, float y, float w, float h);
00107 
00108     // fl_vertex.cpp, draw the path:
00109     virtual void points();
00110     virtual void stroke();
00111     virtual void fill();
00112     virtual void fill_stroke(Fl_Color color);
00113 
00114     //fl_rect.cpp drawing that bypasses the path mechanism:
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     // current font+size:
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     // measure things in the current font:
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     // draw using current font:
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     // images:
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

Generated on Thu Jul 31 15:33:43 2003 for eFLTK by doxygen1.2.15