summaryrefslogtreecommitdiff
path: root/FL/fl_draw.H
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2011-02-04 23:32:53 +0000
committerManolo Gouy <Manolo>2011-02-04 23:32:53 +0000
commit668dfd109f183ad8c4731f7fb8af39977ea89920 (patch)
treef0f1ef1ca07aeb68c97689537355f1300d4ce511 /FL/fl_draw.H
parent31bbbf7ae60f07d5f87454db0be9e27eea676ded (diff)
Fix STR #2535: clipping + coordinate transformations are now managed separately for each
surface device. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8368 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'FL/fl_draw.H')
-rw-r--r--FL/fl_draw.H50
1 files changed, 40 insertions, 10 deletions
diff --git a/FL/fl_draw.H b/FL/fl_draw.H
index 3413af1c0..a17737d3f 100644
--- a/FL/fl_draw.H
+++ b/FL/fl_draw.H
@@ -133,18 +133,18 @@ inline int fl_not_clipped(int x, int y, int w, int h) {return fl_graphics_driver
inline int fl_clip_box(int x , int y, int w, int h, int& X, int& Y, int& W, int& H)
{return fl_graphics_driver->clip_box(x,y,w,h,X,Y,W,H); }
/** Undoes any clobbering of clip done by your program */
-extern void fl_restore_clip();
+inline void fl_restore_clip() { fl_graphics_driver->restore_clip(); };
/**
Replaces the top of the clipping stack with a clipping region of any shape.
Fl_Region is an operating system specific type.
\param[in] r clipping region
*/
-FL_EXPORT void fl_clip_region(Fl_Region r);
+inline void fl_clip_region(Fl_Region r) { fl_graphics_driver->clip_region(r); };
/**
returns the current clipping region.
*/
-extern Fl_Region fl_clip_region();
+inline Fl_Region fl_clip_region() { return fl_graphics_driver->clip_region(); };
// points:
@@ -326,13 +326,27 @@ inline void fl_pie(int x, int y, int w, int h, double a1, double a2) {fl_graphic
FL_EXPORT 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):
-FL_EXPORT void fl_push_matrix();
-FL_EXPORT void fl_pop_matrix();
+/**
+ Saves the current transformation matrix on the stack.
+ The maximum depth of the stack is 4.
+ */
+inline void fl_push_matrix() { fl_graphics_driver->push_matrix(); };
+/**
+ Restores the current transformation matrix from the stack.
+ */
+inline void fl_pop_matrix() { fl_graphics_driver->pop_matrix(); };
FL_EXPORT void fl_scale(double x, double y);
FL_EXPORT void fl_scale(double x);
FL_EXPORT void fl_translate(double x, double y);
FL_EXPORT void fl_rotate(double d);
-FL_EXPORT void fl_mult_matrix(double a, double b, double c, double d, double x,double y);
+/**
+ Concatenates another transformation onto the current one.
+
+ \param[in] a,b,c,d,x,y transformation matrix elements such that
+ <tt> X' = aX + cY + x </tt> and <tt> Y' = bX +dY + y </tt>
+ */
+inline void fl_mult_matrix(double a, double b, double c, double d, double x,double y)
+ { fl_graphics_driver->mult_matrix(a, b, c, d, x, y); };
/**
Starts drawing a list of points. Points are added to the list with fl_vertex()
*/
@@ -424,10 +438,26 @@ inline void fl_gap() {fl_graphics_driver->gap(); }
*/
inline void fl_end_complex_polygon() {fl_graphics_driver->end_complex_polygon(); }
// get and use transformed positions:
-FL_EXPORT double fl_transform_x(double x, double y);
-FL_EXPORT double fl_transform_y(double x, double y);
-FL_EXPORT double fl_transform_dx(double x, double y);
-FL_EXPORT double fl_transform_dy(double x, double y);
+/**
+ Transforms coordinate using the current transformation matrix.
+ \param[in] x,y coordinate
+ */
+inline double fl_transform_x(double x, double y) {return fl_graphics_driver->transform_x(x, y); };
+/**
+ Transform coordinate using the current transformation matrix.
+ \param[in] x,y coordinate
+ */
+inline double fl_transform_y(double x, double y) {return fl_graphics_driver->transform_y(x, y); };
+/**
+ Transforms distance using current transformation matrix.
+ \param[in] x,y coordinate
+ */
+inline double fl_transform_dx(double x, double y) {return fl_graphics_driver->transform_dx(x, y); };
+/**
+ Transforms distance using current transformation matrix.
+ \param[in] x,y coordinate
+ */
+inline double fl_transform_dy(double x, double y) {return fl_graphics_driver->transform_dy(x, y); };
/**
Adds coordinate pair to the vertex list without further transformations.
\param[in] xf,yf transformed coordinate