00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00033 #ifndef fl_draw_H
00034 #define fl_draw_H
00035
00036 #include "Enumerations.H"
00037 #include "Fl_Window.H"
00038 #include "Fl_Device.H"
00039
00040
00041 class Fl_Image;
00042
00043
00044 FL_EXPORT extern char fl_draw_shortcut;
00045
00050
00060 inline void fl_color(Fl_Color c) {fl_graphics_driver->color(c); }
00062 inline void fl_color(int c) {fl_color((Fl_Color)c);}
00073 inline void fl_color(uchar r, uchar g, uchar b) {fl_graphics_driver->color(r,g,b); }
00075 extern FL_EXPORT Fl_Color fl_color_;
00080 inline Fl_Color fl_color() {return fl_color_;}
00086
00092 inline void fl_push_clip(int x, int y, int w, int h) {fl_graphics_driver->push_clip(x,y,w,h); }
00094 #define fl_clip fl_push_clip
00095
00098 inline void fl_push_no_clip() {fl_graphics_driver->push_no_clip(); }
00106 inline void fl_pop_clip() {fl_graphics_driver->pop_clip(); }
00117 inline int fl_not_clipped(int x, int y, int w, int h) {return fl_graphics_driver->not_clipped(x,y,w,h); }
00132 inline int fl_clip_box(int x , int y, int w, int h, int& X, int& Y, int& W, int& H)
00133 {return fl_graphics_driver->clip_box(x,y,w,h,X,Y,W,H); }
00135 extern void fl_restore_clip();
00142 FL_EXPORT void fl_clip_region(Fl_Region r);
00146 extern Fl_Region fl_clip_region();
00147
00148
00149
00153 inline void fl_point(int x, int y) { fl_graphics_driver->point(x,y); }
00154
00155
00183 inline void fl_line_style(int style, int width=0, char* dashes=0) {fl_graphics_driver->line_style(style,width,dashes); }
00184 enum {
00185 FL_SOLID = 0,
00186 FL_DASH = 1,
00187 FL_DOT = 2,
00188 FL_DASHDOT = 3,
00189 FL_DASHDOTDOT = 4,
00190
00191 FL_CAP_FLAT = 0x100,
00192 FL_CAP_ROUND = 0x200,
00193 FL_CAP_SQUARE = 0x300,
00194
00195 FL_JOIN_MITER = 0x1000,
00196 FL_JOIN_ROUND = 0x2000,
00197 FL_JOIN_BEVEL = 0x3000
00198 };
00199
00200
00201
00207 inline void fl_rect(int x, int y, int w, int h) { fl_graphics_driver->rect(x,y,w,h); }
00208
00210 inline void fl_rect(int x, int y, int w, int h, Fl_Color c) {fl_color(c); fl_rect(x,y,w,h);}
00212 inline void fl_rectf(int x, int y, int w, int h) { fl_graphics_driver->rectf(x,y,w,h); }
00214 inline void fl_rectf(int x, int y, int w, int h, Fl_Color c) {fl_color(c); fl_rectf(x,y,w,h);}
00215
00222
00223 FL_EXPORT void fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b);
00224
00225
00229 inline void fl_line(int x, int y, int x1, int y1) {fl_graphics_driver->line(x,y,x1,y1); }
00233 inline void fl_line(int x, int y, int x1, int y1, int x2, int y2) {fl_graphics_driver->line(x,y,x1,y1,x2,y2); }
00234
00235
00239 inline void fl_loop(int x, int y, int x1, int y1, int x2, int y2) {fl_graphics_driver->loop(x,y,x1,y1,x2,y2); }
00243 inline void fl_loop(int x, int y, int x1, int y1, int x2, int y2, int x3, int y3)
00244 {fl_graphics_driver->loop(x,y,x1,y1,x2,y2,x3,y3); }
00245
00246
00250 inline void fl_polygon(int x, int y, int x1, int y1, int x2, int y2) {fl_graphics_driver->polygon(x,y,x1,y1,x2,y2); }
00254 inline void fl_polygon(int x, int y, int x1, int y1, int x2, int y2, int x3, int y3)
00255 { fl_graphics_driver->polygon(x,y,x1,y1,x2,y2,x3,y3); }
00256
00257
00261 inline void fl_xyline(int x, int y, int x1) {fl_graphics_driver->xyline(x,y,x1);}
00265 inline void fl_xyline(int x, int y, int x1, int y2) {fl_graphics_driver->xyline(x,y,x1,y2);}
00270 inline void fl_xyline(int x, int y, int x1, int y2, int x3) {fl_graphics_driver->xyline(x,y,x1,y2,x3);}
00271
00272
00276 inline void fl_yxline(int x, int y, int y1) {fl_graphics_driver->yxline(x,y,y1);}
00280 inline void fl_yxline(int x, int y, int y1, int x2) {fl_graphics_driver->yxline(x,y,y1,x2);}
00285 inline void fl_yxline(int x, int y, int y1, int x2, int y3) {fl_graphics_driver->yxline(x,y,y1,x2,y3);}
00286
00287
00310 inline void fl_arc(int x, int y, int w, int h, double a1, double a2) {fl_graphics_driver->arc(x,y,w,h,a1,a2); }
00323 inline void fl_pie(int x, int y, int w, int h, double a1, double a2) {fl_graphics_driver->pie(x,y,w,h,a1,a2); }
00325 FL_EXPORT void fl_chord(int x, int y, int w, int h, double a1, double a2);
00326
00327
00328 FL_EXPORT void fl_push_matrix();
00329 FL_EXPORT void fl_pop_matrix();
00330 FL_EXPORT void fl_scale(double x, double y);
00331 FL_EXPORT void fl_scale(double x);
00332 FL_EXPORT void fl_translate(double x, double y);
00333 FL_EXPORT void fl_rotate(double d);
00334 FL_EXPORT void fl_mult_matrix(double a, double b, double c, double d, double x,double y);
00338 inline void fl_begin_points() {fl_graphics_driver->begin_points(); }
00342 inline void fl_begin_line() {fl_graphics_driver->begin_line(); }
00346 inline void fl_begin_loop() {fl_graphics_driver->begin_loop(); }
00350 inline void fl_begin_polygon() {fl_graphics_driver->begin_polygon(); }
00355 inline void fl_vertex(double x, double y) {fl_graphics_driver->vertex(x,y); }
00364 inline void fl_curve(double X0, double Y0, double X1, double Y1, double X2, double Y2, double X3, double Y3)
00365 {fl_graphics_driver->curve(X0,Y0,X1,Y1,X2,Y2,X3,Y3); }
00374 inline void fl_arc(double x, double y, double r, double start, double end) {fl_graphics_driver->arc(x,y,r,start,end); }
00382 inline void fl_circle(double x, double y, double r) {fl_graphics_driver->circle(x,y,r); }
00386 inline void fl_end_points() {fl_graphics_driver->end_points(); }
00390 inline void fl_end_line() {fl_graphics_driver->end_line(); }
00394 inline void fl_end_loop() {fl_graphics_driver->end_loop(); }
00398 inline void fl_end_polygon() {fl_graphics_driver->end_polygon(); }
00413 inline void fl_begin_complex_polygon() {fl_graphics_driver->begin_complex_polygon(); }
00420 inline void fl_gap() {fl_graphics_driver->gap(); }
00424 inline void fl_end_complex_polygon() {fl_graphics_driver->end_complex_polygon(); }
00425
00426 FL_EXPORT double fl_transform_x(double x, double y);
00427 FL_EXPORT double fl_transform_y(double x, double y);
00428 FL_EXPORT double fl_transform_dx(double x, double y);
00429 FL_EXPORT double fl_transform_dy(double x, double y);
00434 inline void fl_transformed_vertex(double xf, double yf) {fl_graphics_driver->transformed_vertex(xf,yf); }
00439
00440
00441
00451 inline void fl_font(Fl_Font face, Fl_Fontsize size) { fl_graphics_driver->font(face,size); }
00452 extern FL_EXPORT Fl_Font fl_font_;
00453
00458 inline Fl_Font fl_font() {return fl_font_;}
00460 extern FL_EXPORT Fl_Fontsize fl_size_;
00465 inline Fl_Fontsize fl_size() {return fl_size_;}
00466
00467
00472 FL_EXPORT int fl_height();
00473 FL_EXPORT int fl_height(int font, int size);
00478 FL_EXPORT int fl_descent();
00480 FL_EXPORT double fl_width(const char* txt);
00482 FL_EXPORT double fl_width(const char* txt, int n);
00486 FL_EXPORT double fl_width(unsigned int);
00495 FL_EXPORT void fl_text_extents(const char*, int& dx, int& dy, int& w, int& h);
00499 FL_EXPORT void fl_text_extents(const char*, int n, int& dx, int& dy, int& w, int& h);
00500
00501
00502
00509 FL_EXPORT const char *fl_latin1_to_local(const char *t, int n=-1);
00516 FL_EXPORT const char *fl_local_to_latin1(const char *t, int n=-1);
00523 FL_EXPORT const char *fl_mac_roman_to_local(const char *t, int n=-1);
00530 FL_EXPORT const char *fl_local_to_mac_roman(const char *t, int n=-1);
00545 FL_EXPORT void fl_draw(const char* str, int x, int y);
00553 FL_EXPORT void fl_draw(int angle, const char* str, int x, int y);
00557 inline void fl_draw(const char* str, int n, int x, int y) {fl_graphics_driver->draw(str,n,x,y); }
00562 inline void fl_draw(int angle,const char* str, int n, int x, int y) {fl_graphics_driver->draw(angle,str,n,x,y); }
00566 inline void fl_rtl_draw(const char* str, int n, int x, int y) {fl_graphics_driver->rtl_draw(str,n,x,y); }
00567 FL_EXPORT void fl_measure(const char* str, int& x, int& y,
00568 int draw_symbols = 1);
00569 FL_EXPORT void fl_draw(const char* str, int x, int y, int w, int h,
00570 Fl_Align align,
00571 Fl_Image* img=0, int draw_symbols = 1);
00572 FL_EXPORT void fl_draw(const char* str, int x, int y, int w, int h,
00573 Fl_Align align,
00574 void (*callthis)(const char *,int,int,int),
00575 Fl_Image* img=0, int draw_symbols = 1);
00576
00577
00578 FL_EXPORT void fl_frame(const char* s, int x, int y, int w, int h);
00579 FL_EXPORT void fl_frame2(const char* s, int x, int y, int w, int h);
00580 FL_EXPORT void fl_draw_box(Fl_Boxtype, int x, int y, int w, int h, Fl_Color);
00581
00582
00583
00617 inline void fl_draw_image(const uchar* buf, int X,int Y,int W,int H, int D=3, int L=0)
00618 { fl_graphics_driver->draw_image(buf, X, Y, W, H, D, L); }
00619
00624 inline void fl_draw_image_mono(const uchar* buf, int X,int Y,int W,int H, int D=1, int L=0)
00625 { fl_graphics_driver->draw_image_mono(buf, X, Y, W, H, D, L); }
00626
00659 inline void fl_draw_image(Fl_Draw_Image_Cb cb, void* data, int X,int Y,int W,int H, int D=3)
00660 { fl_graphics_driver->draw_image(cb, data, X, Y, W, H, D); }
00661
00666 FL_EXPORT void fl_draw_image_mono(Fl_Draw_Image_Cb cb, void* data, int X,int Y,int W,int H, int D=1);
00667
00673
00674 FL_EXPORT char fl_can_do_alpha_blending();
00675
00693
00694 FL_EXPORT uchar *fl_read_image(uchar *p,int X,int Y,int W,int H,int alpha=0);
00695
00696
00697 FL_EXPORT int fl_draw_pixmap( char* const* data, int x,int y,Fl_Color=FL_GRAY);
00698 FL_EXPORT int fl_draw_pixmap(const char* const* cdata, int x,int y,Fl_Color=FL_GRAY);
00699 FL_EXPORT int fl_measure_pixmap( char* const* data, int &w, int &h);
00700 FL_EXPORT int fl_measure_pixmap(const char* const* cdata, int &w, int &h);
00701
00702
00703 FL_EXPORT void fl_scroll(int X, int Y, int W, int H, int dx, int dy,
00704 void (*draw_area)(void*, int,int,int,int), void* data);
00705 FL_EXPORT const char* fl_shortcut_label(unsigned int shortcut);
00706 FL_EXPORT const char* fl_shortcut_label(unsigned int shortcut, const char **eom);
00707 FL_EXPORT unsigned int fl_old_shortcut(const char* s);
00708 FL_EXPORT void fl_overlay_rect(int x,int y,int w,int h);
00709 FL_EXPORT void fl_overlay_clear();
00710 FL_EXPORT void fl_cursor(Fl_Cursor, Fl_Color fg=FL_BLACK, Fl_Color bg=FL_WHITE);
00711 FL_EXPORT const char* fl_expand_text(const char* from, char* buf, int maxbuf,
00712 double maxw, int& n, double &width,
00713 int wrap, int draw_symbols = 0);
00714
00715
00717 FL_EXPORT void fl_set_status(int X, int Y, int W, int H);
00719 FL_EXPORT void fl_set_spot(int font, int size, int X, int Y, int W, int H, Fl_Window *win=0);
00721 FL_EXPORT void fl_reset_spot(void);
00722
00723
00724
00725
00726 FL_EXPORT int fl_draw_symbol(const char* label,int x,int y,int w,int h, Fl_Color);
00727 FL_EXPORT int fl_add_symbol(const char* name, void (*drawit)(Fl_Color), int scalable);
00730 #endif
00731
00732
00733
00734