mirror of
https://github.com/fltk/fltk.git
synced 2026-06-02 23:56:55 +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_points();
|
||||||
virtual void end_line();
|
virtual void end_line();
|
||||||
virtual void end_loop();
|
virtual void end_loop();
|
||||||
|
virtual void fixloop();
|
||||||
virtual void end_polygon();
|
virtual void end_polygon();
|
||||||
virtual void end_complex_polygon();
|
virtual void end_complex_polygon();
|
||||||
virtual void gap();
|
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;}
|
int Fl_Graphics_Driver::not_clipped(int x, int y, int w, int h) {return 1;}
|
||||||
|
|
||||||
/** see fl_begin_complex_polygon() */
|
/** 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() */
|
/** see fl_transformed_vertex() */
|
||||||
void Fl_Graphics_Driver::transformed_vertex(double xf, double yf) {
|
void Fl_Graphics_Driver::transformed_vertex(double xf, double yf) {
|
||||||
@@ -514,8 +517,16 @@ void Fl_Graphics_Driver::end_points() {}
|
|||||||
/** see fl_end_line() */
|
/** see fl_end_line() */
|
||||||
void Fl_Graphics_Driver::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() */
|
/** 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() */
|
/** see fl_end_polygon() */
|
||||||
void Fl_Graphics_Driver::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() {}
|
void Fl_Graphics_Driver::end_complex_polygon() {}
|
||||||
|
|
||||||
/** see fl_gap() */
|
/** 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() */
|
/** see fl_circle() */
|
||||||
void Fl_Graphics_Driver::circle(double x, double y, double r) {}
|
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() {
|
void Fl_GDI_Graphics_Driver::begin_complex_polygon() {
|
||||||
begin_polygon();
|
Fl_Graphics_Driver::begin_complex_polygon();
|
||||||
gap_ = 0;
|
|
||||||
numcount = 0;
|
numcount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -87,7 +87,6 @@ public:
|
|||||||
void XDestroyRegion(Fl_Region r);
|
void XDestroyRegion(Fl_Region r);
|
||||||
void high_resolution(bool b) { high_resolution_ = b; }
|
void high_resolution(bool b) { high_resolution_ = b; }
|
||||||
protected:
|
protected:
|
||||||
void fixloop();
|
|
||||||
void point(int x, int y);
|
void point(int x, int y);
|
||||||
void rect(int x, int y, int w, int h);
|
void rect(int x, int y, int w, int h);
|
||||||
void focus_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 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);
|
int not_clipped(int x, int y, int w, int h);
|
||||||
void restore_clip();
|
void restore_clip();
|
||||||
void begin_complex_polygon();
|
|
||||||
void end_points();
|
void end_points();
|
||||||
void end_line();
|
void end_line();
|
||||||
void end_loop();
|
|
||||||
void end_polygon();
|
void end_polygon();
|
||||||
void end_complex_polygon();
|
void end_complex_polygon();
|
||||||
void gap();
|
|
||||||
void circle(double x, double y, double r);
|
void circle(double x, double y, double r);
|
||||||
void arc(int x, int y, int w, int h, double a1, double a2);
|
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);
|
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);
|
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() {
|
void Fl_Quartz_Graphics_Driver::end_polygon() {
|
||||||
fixloop();
|
fixloop();
|
||||||
if (n < 3) {
|
if (n < 3) {
|
||||||
@@ -73,21 +67,6 @@ void Fl_Quartz_Graphics_Driver::end_polygon() {
|
|||||||
CGContextSetShouldAntialias(gc_, false);
|
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() {
|
void Fl_Quartz_Graphics_Driver::end_complex_polygon() {
|
||||||
gap();
|
gap();
|
||||||
if (n < 3) {
|
if (n < 3) {
|
||||||
@@ -121,7 +100,3 @@ void Fl_Quartz_Graphics_Driver::circle(double x, double y,double r) {
|
|||||||
(what == POLYGON ? CGContextFillPath : CGContextStrokePath)(gc_);
|
(what == POLYGON ? CGContextFillPath : CGContextStrokePath)(gc_);
|
||||||
CGContextSetShouldAntialias(gc_, false);
|
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 point(int x, int y);
|
||||||
void end_points();
|
void end_points();
|
||||||
void end_line();
|
void end_line();
|
||||||
void fixloop();
|
|
||||||
void end_loop();
|
|
||||||
void end_polygon();
|
void end_polygon();
|
||||||
void begin_complex_polygon();
|
|
||||||
void gap();
|
|
||||||
void end_complex_polygon();
|
void end_complex_polygon();
|
||||||
void circle(double x, double y,double r);
|
void circle(double x, double y,double r);
|
||||||
void arc(int x,int y,int w,int h,double a1,double a2);
|
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_);
|
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() {
|
void Fl_SVG_Graphics_Driver::end_polygon() {
|
||||||
fixloop();
|
fixloop();
|
||||||
if (n < 3) {
|
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_);
|
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() {
|
void Fl_SVG_Graphics_Driver::end_complex_polygon() {
|
||||||
gap();
|
gap();
|
||||||
if (n < 3) {
|
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 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);
|
int not_clipped(int x, int y, int w, int h);
|
||||||
void restore_clip();
|
void restore_clip();
|
||||||
void begin_complex_polygon();
|
|
||||||
void end_points();
|
void end_points();
|
||||||
void end_line();
|
void end_line();
|
||||||
void end_loop();
|
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);
|
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() {
|
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--;
|
while (n>gap_+2 && p[n-1].x == p[gap_].x && p[n-1].y == p[gap_].y) n--;
|
||||||
if (n > gap_+2) {
|
if (n > gap_+2) {
|
||||||
|
|||||||
Reference in New Issue
Block a user