Browse Source

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
pull/49/head
Manolo Gouy 14 years ago
parent
commit
27987c6ee0
  1. 23
      FL/Fl_Device.H
  2. 2
      src/Fl_Device.cxx
  3. 4
      src/fl_rect.cxx
  4. 2
      src/fl_vertex.cxx

23
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); 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: // typedef what the x,y fields in a point are:
#ifdef WIN32 #ifdef WIN32
typedef int COORD_T; typedef int COORD_T;
@ -97,6 +88,8 @@ public:
virtual const char *class_name() {return class_id;}; 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. \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. in the \ref fl_drawings and \ref fl_attributes modules.
*/ */
class FL_EXPORT Fl_Graphics_Driver : public Fl_Device { 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_Font font_; // current font
Fl_Fontsize size_; // current font size Fl_Fontsize size_; // current font size
Fl_Color color_; // current color Fl_Color color_; // current color
enum {LINE, LOOP, POLYGON, POINT_}; enum {LINE, LOOP, POLYGON, POINT_};
int sptr; 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; matrix m;
int n, p_size, gap_; int n, p_size, gap_;
XPOINT *p; XPOINT *p;
int what; int what;
int fl_clip_state_number; int fl_clip_state_number;
int rstackptr; 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 #ifdef WIN32
int numcount; int numcount;
int counts[20]; int counts[20];

2
src/Fl_Device.cxx

@ -51,7 +51,7 @@ void Fl_Surface_Device::set_current(void)
_surface = this; _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() { Fl_Graphics_Driver::Fl_Graphics_Driver() {
font_ = 0; font_ = 0;

4
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 # error unsupported platform
#endif #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"); else Fl::warning("fl_push_clip: clip stack overflow!\n");
fl_restore_clip(); fl_restore_clip();
} }
// make there be no clip (used by fl_begin_offscreen() only!) // make there be no clip (used by fl_begin_offscreen() only!)
void Fl_Graphics_Driver::push_no_clip() { 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"); else Fl::warning("fl_push_no_clip: clip stack overflow!\n");
fl_restore_clip(); fl_restore_clip();
} }

2
src/fl_vertex.cxx

@ -45,7 +45,7 @@
#include <stdlib.h> #include <stdlib.h>
void Fl_Graphics_Driver::push_matrix() { void Fl_Graphics_Driver::push_matrix() {
if (sptr==MATRIX_STACK_SIZE) if (sptr==matrix_stack_size)
Fl::error("fl_push_matrix(): matrix stack overflow."); Fl::error("fl_push_matrix(): matrix stack overflow.");
else else
stack[sptr++] = m; stack[sptr++] = m;

Loading…
Cancel
Save