mirror of
https://github.com/fltk/fltk.git
synced 2026-06-01 23:06:54 +08:00
Remove duplicated code between derived classes of Fl_Graphics_Driver - cont'd.
This commit is contained in:
@@ -311,6 +311,7 @@ public:
|
||||
virtual void end_points();
|
||||
virtual void end_line();
|
||||
virtual void end_loop();
|
||||
virtual void fixloop();
|
||||
virtual void end_polygon();
|
||||
virtual void end_complex_polygon();
|
||||
virtual void gap();
|
||||
|
||||
@@ -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) {}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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--;
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user