diff options
Diffstat (limited to 'FL/fl_draw.H')
| -rw-r--r-- | FL/fl_draw.H | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/FL/fl_draw.H b/FL/fl_draw.H new file mode 100644 index 000000000..49b7c51c4 --- /dev/null +++ b/FL/fl_draw.H @@ -0,0 +1,135 @@ +// fl_draw.H +// Portable drawing functions + +#ifndef fl_draw_H +#define fl_draw_H + +#include "Enumerations.H" // for the color names + +// Colors: +void fl_color(Fl_Color); // select indexed color +inline void fl_color(int c) {fl_color((Fl_Color)c);} // for back compatability +void fl_color(uchar, uchar, uchar); // select actual color +extern Fl_Color fl_color_; inline Fl_Color fl_color() {return fl_color_;} + +// clip: +void fl_clip(int x, int y, int w, int h); +#define fl_push_clip fl_clip +void fl_push_no_clip(); +void fl_pop_clip(); +int fl_not_clipped(int x, int y, int w, int h); +int fl_clip_box(int, int, int, int, int& x, int& y, int& w, int& h); + +// points: +void fl_point(int x, int y); + +// rectangles tweaked to exactly fill the pixel rectangle: +void fl_rect(int x, int y, int w, int h); +void fl_rectf(int x, int y, int w, int h); + +// line segments: +void fl_line(int,int, int,int); +void fl_line(int,int, int,int, int,int); + +// closed line segments: +void fl_loop(int,int, int,int, int,int); +void fl_loop(int,int, int,int, int,int, int,int); + +// filled polygons +void fl_polygon(int,int, int,int, int,int); +void fl_polygon(int,int, int,int, int,int, int,int); + +// draw rectilinear lines, horizontal segment first: +void fl_xyline(int x, int y, int x1); +void fl_xyline(int x, int y, int x1, int y2); +void fl_xyline(int x, int y, int x1, int y2, int x3); + +// draw rectilinear lines, vertical segment first: +void fl_yxline(int x, int y, int y1); +void fl_yxline(int x, int y, int y1, int x2); +void fl_yxline(int x, int y, int y1, int x2, int y3); + +// circular lines and pie slices (code in fl_arci.C): +void fl_arc(int x, int y, int w, int h, double a1, double a2); +void fl_pie(int x, int y, int w, int h, double a1, double a2); +void fl_chord(int x, int y, int w, int h, double a1, double a2); // nyi + +// scalable drawing code (code in fl_vertex.C and fl_arc.C): +void fl_push_matrix(); +void fl_pop_matrix(); +void fl_scale(double x, double y); +void fl_scale(double x); +void fl_translate(double x, double y); +void fl_rotate(double d); +void fl_mult_matrix(double a, double b, double c, double d, double x,double y); +void fl_begin_points(); +void fl_begin_line(); +void fl_begin_loop(); +void fl_begin_polygon(); +void fl_vertex(double x, double y); +void fl_curve(double, double, double, double, double, double, double, double); +void fl_arc(double x, double y, double r, double start, double a); +void fl_circle(double x, double y, double r); +void fl_end_points(); +void fl_end_line(); +void fl_end_loop(); +void fl_end_polygon(); +void fl_begin_complex_polygon(); +void fl_gap(); +void fl_end_complex_polygon(); +// get and use transformed positions: +double fl_transform_x(double x, double y); +double fl_transform_y(double x, double y); +double fl_transform_dx(double x, double y); +double fl_transform_dy(double x, double y); +void fl_transformed_vertex(double x, double y); + +// current font: +void fl_font(int face, int size); +void fl_font(int face, int size, Fl_Font default_font, int default_size); +extern int fl_font_; inline int fl_font() {return fl_font_;} +extern int fl_size_; inline int fl_size() {return fl_size_;} + +// information you can get about the current font: +int fl_height(); // using "size" should work ok +int fl_descent(); +double fl_width(const char*); +double fl_width(const char*, int n); +double fl_width(uchar); + +// draw using current font: +void fl_draw(const char*, int x, int y); +void fl_draw(const char*, int n, int x, int y); +void fl_draw(const char*, int x, int y, int w, int h, Fl_Align); +void fl_measure(const char*, int& x, int& y); + +// boxtypes: +void fl_frame(const char* s, int x, int y, int w, int h); +void fl_frame2(const char* s, int x, int y, int w, int h); +void fl_draw_box(Fl_Boxtype, int x, int y, int w, int h, Fl_Color); + +// images: +void fl_draw_image(const uchar*, int,int,int,int, int delta=3, int ldelta=0); +void fl_draw_image_mono(const uchar*, int,int,int,int, int delta=1, int ld=0); +typedef void (*Fl_Draw_Image_Cb)(void*,int,int,int,uchar*); +void fl_draw_image(Fl_Draw_Image_Cb, void*, int,int,int,int, int delta=3); +void fl_draw_image_mono(Fl_Draw_Image_Cb, void*, int,int,int,int, int delta=1); +void fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b); + +// pixmaps: +int fl_draw_pixmap(/*const*/ char* const* data, int x,int y,Fl_Color=FL_GRAY); +int fl_measure_pixmap(/*const*/ char* const* data, int &w, int &h); + +// other: +extern void fl_scroll(int X, int Y, int W, int H, int dx, int dy, + void (*draw_area)(void*, int,int,int,int), void* data); +const char* fl_shortcut_label(int); +void fl_overlay_rect(int,int,int,int); +void fl_overlay_clear(); +void fl_cursor(Fl_Cursor, Fl_Color=FL_BLACK, Fl_Color=FL_WHITE); + +// XForms symbols: +int fl_draw_symbol(const char* label,int x,int y,int w,int h, Fl_Color); +int fl_add_symbol(const char* name, void (*drawit)(Fl_Color), int scalable); + +#endif |
