summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2011-02-24 18:02:11 +0000
committerManolo Gouy <Manolo>2011-02-24 18:02:11 +0000
commit27987c6ee00273948920015c1da851f150279154 (patch)
tree44322dc981ccd297b4d52e53f46d91e27468fccf
parent278c821ff46f9232b0ab9f0e08077b5c8c773178 (diff)
Made struct matrix a subclass of Fl_Graphics_Device class to avoid collision
with application-defined names. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8471 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
-rw-r--r--FL/Fl_Device.H23
-rw-r--r--src/Fl_Device.cxx2
-rw-r--r--src/fl_rect.cxx4
-rw-r--r--src/fl_vertex.cxx2
4 files changed, 16 insertions, 15 deletions
diff --git a/FL/Fl_Device.H b/FL/Fl_Device.H
index 41428e434..953d9fb4b 100644
--- a/FL/Fl_Device.H
+++ b/FL/Fl_Device.H
@@ -55,15 +55,6 @@ FL_EXPORT extern Fl_Graphics_Driver *fl_graphics_driver;
*/
typedef void (*Fl_Draw_Image_Cb)(void* data,int x,int y,int w,uchar* buf);
-#define REGION_STACK_SIZE 10
-#define REGION_STACK_MAX (REGION_STACK_SIZE - 1)
-
-#define MATRIX_STACK_SIZE 32
-#define MATRIX_STACK_MAX (MATRIX_STACK_SIZE - 1)
-/** A 2D coordinate transformation matrix
- */
-struct matrix {double a, b, c, d, x, y;};
-
// typedef what the x,y fields in a point are:
#ifdef WIN32
typedef int COORD_T;
@@ -97,6 +88,8 @@ public:
virtual const char *class_name() {return class_id;};
};
+#define FL_REGION_STACK_SIZE 10
+#define FL_MATRIX_STACK_SIZE 32
/**
\brief A virtual class subclassed for each graphics driver FLTK uses.
*
@@ -106,19 +99,27 @@ public:
in the \ref fl_drawings and \ref fl_attributes modules.
*/
class FL_EXPORT Fl_Graphics_Driver : public Fl_Device {
+public:
+ /** A 2D coordinate transformation matrix
+ */
+ struct matrix {double a, b, c, d, x, y;};
+private:
+ static const matrix m0;
Fl_Font font_; // current font
Fl_Fontsize size_; // current font size
Fl_Color color_; // current color
enum {LINE, LOOP, POLYGON, POINT_};
int sptr;
- matrix stack[MATRIX_STACK_SIZE];
+ static const int matrix_stack_size = FL_MATRIX_STACK_SIZE;
+ matrix stack[FL_MATRIX_STACK_SIZE];
matrix m;
int n, p_size, gap_;
XPOINT *p;
int what;
int fl_clip_state_number;
int rstackptr;
- Fl_Region rstack[REGION_STACK_MAX];
+ static const int region_stack_max = FL_REGION_STACK_SIZE - 1;
+ Fl_Region rstack[FL_REGION_STACK_SIZE];
#ifdef WIN32
int numcount;
int counts[20];
diff --git a/src/Fl_Device.cxx b/src/Fl_Device.cxx
index 70d7f5fa3..54a3224a3 100644
--- a/src/Fl_Device.cxx
+++ b/src/Fl_Device.cxx
@@ -51,7 +51,7 @@ void Fl_Surface_Device::set_current(void)
_surface = this;
}
-static matrix m0 = {1, 0, 0, 1, 0, 0};
+const Fl_Graphics_Driver::matrix Fl_Graphics_Driver::m0 = {1, 0, 0, 1, 0, 0};
Fl_Graphics_Driver::Fl_Graphics_Driver() {
font_ = 0;
diff --git a/src/fl_rect.cxx b/src/fl_rect.cxx
index 703dd82bd..adba7a909 100644
--- a/src/fl_rect.cxx
+++ b/src/fl_rect.cxx
@@ -590,14 +590,14 @@ void Fl_Graphics_Driver::push_clip(int x, int y, int w, int h) {
# error unsupported platform
#endif
}
- if (rstackptr < REGION_STACK_MAX) rstack[++rstackptr] = r;
+ if (rstackptr < region_stack_max) rstack[++rstackptr] = r;
else Fl::warning("fl_push_clip: clip stack overflow!\n");
fl_restore_clip();
}
// make there be no clip (used by fl_begin_offscreen() only!)
void Fl_Graphics_Driver::push_no_clip() {
- if (rstackptr < REGION_STACK_MAX) rstack[++rstackptr] = 0;
+ if (rstackptr < region_stack_max) rstack[++rstackptr] = 0;
else Fl::warning("fl_push_no_clip: clip stack overflow!\n");
fl_restore_clip();
}
diff --git a/src/fl_vertex.cxx b/src/fl_vertex.cxx
index 478d85474..c63c8c54a 100644
--- a/src/fl_vertex.cxx
+++ b/src/fl_vertex.cxx
@@ -45,7 +45,7 @@
#include <stdlib.h>
void Fl_Graphics_Driver::push_matrix() {
- if (sptr==MATRIX_STACK_SIZE)
+ if (sptr==matrix_stack_size)
Fl::error("fl_push_matrix(): matrix stack overflow.");
else
stack[sptr++] = m;