diff options
| author | Manolo Gouy <Manolo> | 2011-02-04 23:32:53 +0000 |
|---|---|---|
| committer | Manolo Gouy <Manolo> | 2011-02-04 23:32:53 +0000 |
| commit | 668dfd109f183ad8c4731f7fb8af39977ea89920 (patch) | |
| tree | f0f1ef1ca07aeb68c97689537355f1300d4ce511 /FL/fl_draw.H | |
| parent | 31bbbf7ae60f07d5f87454db0be9e27eea676ded (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.H | 50 |
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 |
