diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Fl_Graphics_Driver.cxx | 25 | ||||
| -rw-r--r-- | src/drivers/GDI/Fl_GDI_Graphics_Driver_vertex.cxx | 3 | ||||
| -rw-r--r-- | src/drivers/Quartz/Fl_Quartz_Graphics_Driver.H | 4 | ||||
| -rw-r--r-- | src/drivers/Quartz/Fl_Quartz_Graphics_Driver_vertex.cxx | 25 | ||||
| -rw-r--r-- | src/drivers/SVG/Fl_SVG_File_Surface.cxx | 29 | ||||
| -rw-r--r-- | src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H | 1 | ||||
| -rw-r--r-- | src/drivers/Xlib/Fl_Xlib_Graphics_Driver_vertex.cxx | 5 |
7 files changed, 23 insertions, 69 deletions
diff --git a/src/Fl_Graphics_Driver.cxx b/src/Fl_Graphics_Driver.cxx index be8849dd4..f1164c19e 100644 --- a/src/Fl_Graphics_Driver.cxx +++ b/src/Fl_Graphics_Driver.cxx @@ -496,7 +496,10 @@ int Fl_Graphics_Driver::clip_box(int x, int y, int w, int h, int &X, int &Y, int int Fl_Graphics_Driver::not_clipped(int x, int y, int w, int h) {return 1;} /** see fl_begin_complex_polygon() */ -void Fl_Graphics_Driver::begin_complex_polygon() {} +void Fl_Graphics_Driver::begin_complex_polygon() { + begin_polygon(); + gap_ = 0; +} /** see fl_transformed_vertex() */ void Fl_Graphics_Driver::transformed_vertex(double xf, double yf) { @@ -514,8 +517,16 @@ void Fl_Graphics_Driver::end_points() {} /** see fl_end_line() */ void Fl_Graphics_Driver::end_line() {} +void Fl_Graphics_Driver::fixloop() { // remove equal points from closed path + while (n>2 && p[n-1].x == p[0].x && p[n-1].y == p[0].y) n--; +} + /** see fl_end_loop() */ -void Fl_Graphics_Driver::end_loop() {} +void Fl_Graphics_Driver::end_loop() { + fixloop(); + if (n>2) transformed_vertex((float)p[0].x, (float)p[0].y); + end_line(); +} /** see fl_end_polygon() */ void Fl_Graphics_Driver::end_polygon() {} @@ -524,7 +535,15 @@ void Fl_Graphics_Driver::end_polygon() {} void Fl_Graphics_Driver::end_complex_polygon() {} /** see fl_gap() */ -void Fl_Graphics_Driver::gap() {} +void Fl_Graphics_Driver::gap() { + while (n>gap_+2 && p[n-1].x == p[gap_].x && p[n-1].y == p[gap_].y) n--; + if (n > gap_+2) { + transformed_vertex((float)p[gap_].x, (float)p[gap_].y); + gap_ = n; + } else { + n = gap_; + } +} /** see fl_circle() */ void Fl_Graphics_Driver::circle(double x, double y, double r) {} diff --git a/src/drivers/GDI/Fl_GDI_Graphics_Driver_vertex.cxx b/src/drivers/GDI/Fl_GDI_Graphics_Driver_vertex.cxx index 87e694f18..2f8e80232 100644 --- a/src/drivers/GDI/Fl_GDI_Graphics_Driver_vertex.cxx +++ b/src/drivers/GDI/Fl_GDI_Graphics_Driver_vertex.cxx @@ -59,8 +59,7 @@ void Fl_GDI_Graphics_Driver::end_polygon() { } void Fl_GDI_Graphics_Driver::begin_complex_polygon() { - begin_polygon(); - gap_ = 0; + Fl_Graphics_Driver::begin_complex_polygon(); numcount = 0; } diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.H b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.H index 388fefd0f..4f868238c 100644 --- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.H +++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.H @@ -87,7 +87,6 @@ public: void XDestroyRegion(Fl_Region r); void high_resolution(bool b) { high_resolution_ = b; } protected: - void fixloop(); void point(int x, int y); void rect(int x, int y, int w, int h); void focus_rect(int x, int y, int w, int h); @@ -109,13 +108,10 @@ protected: int clip_box(int x, int y, int w, int h, int &X, int &Y, int &W, int &H); int not_clipped(int x, int y, int w, int h); void restore_clip(); - void begin_complex_polygon(); void end_points(); void end_line(); - void end_loop(); void end_polygon(); void end_complex_polygon(); - void gap(); void circle(double x, double y, double r); void arc(int x, int y, int w, int h, double a1, double a2); void pie(int x, int y, int w, int h, double a1, double a2); diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_vertex.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_vertex.cxx index 952c65b3d..56f7e7afe 100644 --- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_vertex.cxx +++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_vertex.cxx @@ -51,12 +51,6 @@ void Fl_Quartz_Graphics_Driver::end_line() { CGContextSetShouldAntialias(gc_, false); } -void Fl_Quartz_Graphics_Driver::end_loop() { - fixloop(); - if (n>2) transformed_vertex((float)p[0].x, (float)p[0].y); - end_line(); -} - void Fl_Quartz_Graphics_Driver::end_polygon() { fixloop(); if (n < 3) { @@ -73,21 +67,6 @@ void Fl_Quartz_Graphics_Driver::end_polygon() { CGContextSetShouldAntialias(gc_, false); } -void Fl_Quartz_Graphics_Driver::begin_complex_polygon() { - begin_polygon(); - gap_ = 0; -} - -void Fl_Quartz_Graphics_Driver::gap() { - while (n>gap_+2 && p[n-1].x == p[gap_].x && p[n-1].y == p[gap_].y) n--; - if (n > gap_+2) { - transformed_vertex((float)p[gap_].x, (float)p[gap_].y); - gap_ = n; - } else { - n = gap_; - } -} - void Fl_Quartz_Graphics_Driver::end_complex_polygon() { gap(); if (n < 3) { @@ -121,7 +100,3 @@ void Fl_Quartz_Graphics_Driver::circle(double x, double y,double r) { (what == POLYGON ? CGContextFillPath : CGContextStrokePath)(gc_); CGContextSetShouldAntialias(gc_, false); } - -void Fl_Quartz_Graphics_Driver::fixloop() { // remove equal points from closed path - while (n>2 && p[n-1].x == p[0].x && p[n-1].y == p[0].y) n--; -} diff --git a/src/drivers/SVG/Fl_SVG_File_Surface.cxx b/src/drivers/SVG/Fl_SVG_File_Surface.cxx index 2ca543745..08727c842 100644 --- a/src/drivers/SVG/Fl_SVG_File_Surface.cxx +++ b/src/drivers/SVG/Fl_SVG_File_Surface.cxx @@ -112,11 +112,7 @@ protected: void point(int x, int y); void end_points(); void end_line(); - void fixloop(); - void end_loop(); void end_polygon(); - void begin_complex_polygon(); - void gap(); void end_complex_polygon(); void circle(double x, double y,double r); void arc(int x,int y,int w,int h,double a1,double a2); @@ -876,16 +872,6 @@ void Fl_SVG_Graphics_Driver::end_line() { red_, green_, blue_, width_, dasharray_, linecap_, linejoin_); } -void Fl_SVG_Graphics_Driver::fixloop() { // remove equal points from closed path - while (n>2 && p[n-1].x == p[0].x && p[n-1].y == p[0].y) n--; -} - -void Fl_SVG_Graphics_Driver::end_loop() { - fixloop(); - if (n>2) transformed_vertex((float)p[0].x, (float)p[0].y); - end_line(); -} - void Fl_SVG_Graphics_Driver::end_polygon() { fixloop(); if (n < 3) { @@ -916,21 +902,6 @@ void Fl_SVG_Graphics_Driver::circle(double x, double y, double r) { fprintf(out_, "=\"rgb(%u,%u,%u)\" />\n", red_, green_, blue_); } -void Fl_SVG_Graphics_Driver::begin_complex_polygon() { - begin_polygon(); - gap_ = 0; -} - -void Fl_SVG_Graphics_Driver::gap() { - while (n>gap_+2 && p[n-1].x == p[gap_].x && p[n-1].y == p[gap_].y) n--; - if (n > gap_+2) { - transformed_vertex((float)p[gap_].x, (float)p[gap_].y); - gap_ = n; - } else { - n = gap_; - } -} - void Fl_SVG_Graphics_Driver::end_complex_polygon() { gap(); if (n < 3) { diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H index d3222b2f4..7f866803a 100644 --- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H +++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H @@ -187,7 +187,6 @@ protected: int clip_box(int x, int y, int w, int h, int &X, int &Y, int &W, int &H); int not_clipped(int x, int y, int w, int h); void restore_clip(); - void begin_complex_polygon(); void end_points(); void end_line(); void end_loop(); diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_vertex.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_vertex.cxx index f94b685c0..2f1608d13 100644 --- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_vertex.cxx +++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_vertex.cxx @@ -57,11 +57,6 @@ void Fl_Xlib_Graphics_Driver::end_polygon() { if (n>2) XFillPolygon(fl_display, fl_window, gc_, (XPoint*)p, n, Convex, 0); } -void Fl_Xlib_Graphics_Driver::begin_complex_polygon() { - begin_polygon(); - gap_ = 0; -} - void Fl_Xlib_Graphics_Driver::gap() { while (n>gap_+2 && p[n-1].x == p[gap_].x && p[n-1].y == p[gap_].y) n--; if (n > gap_+2) { |
