summaryrefslogtreecommitdiff
path: root/FL/fl_draw.H
blob: c4b1fb7b4ea671abb481ce3d109292915d0d3cdf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
//
// "$Id: fl_draw.H,v 1.5 1998/12/02 15:51:33 mike Exp $"
//
// Portable drawing function header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU Library General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA.
//
// Please report all bugs and problems to "fltk-bugs@easysw.com".
//

#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);
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_measure(const char*, int& x, int& y);
void fl_draw(const char*, int,int,int,int, Fl_Align);
void fl_draw(const char*, int,int,int,int, Fl_Align,
	     void (*callthis)(const char *, int n, 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

//
// End of "$Id: fl_draw.H,v 1.5 1998/12/02 15:51:33 mike Exp $".
//