diff options
| -rw-r--r-- | src/fl_rect.cxx | 14 | ||||
| -rw-r--r-- | src/fl_round_box.cxx | 4 |
2 files changed, 13 insertions, 5 deletions
diff --git a/src/fl_rect.cxx b/src/fl_rect.cxx index da2ef4154..f893d8b22 100644 --- a/src/fl_rect.cxx +++ b/src/fl_rect.cxx @@ -82,6 +82,10 @@ extern float fl_quartz_line_width_; In this example case, no clipping would be done, because X can handle it and clip unneeded pixels. + + Note that we must also take care of the case where fl_line_width_ + is zero (maybe unitialized). If this is the case, we assume a line + width of 1. Todo: Arbitrary line drawings (e.g. polygons) and clip regions are not yet done. @@ -120,8 +124,9 @@ extern float fl_quartz_line_width_; static int clip_to_short(int &x, int &y, int &w, int &h) { - int kmin = -fl_line_width_; - int kmax = SHRT_MAX - fl_line_width_; + int lw = (fl_line_width_ > 0) ? fl_line_width_ : 1; + int kmin = -lw; + int kmax = SHRT_MAX - lw; if (w <= 0 || h <= 0) return 1; // (a) if (x+w < kmin || y+h < kmin) return 1; // (b) @@ -145,8 +150,9 @@ static int clip_to_short(int &x, int &y, int &w, int &h) { */ static int clip_x (int x) { - int kmin = -fl_line_width_; - int kmax = SHRT_MAX - fl_line_width_; + int lw = (fl_line_width_ > 0) ? fl_line_width_ : 1; + int kmin = -lw; + int kmax = SHRT_MAX - lw; if (x < kmin) x = kmin; diff --git a/src/fl_round_box.cxx b/src/fl_round_box.cxx index b98e47b7d..bb734dbcd 100644 --- a/src/fl_round_box.cxx +++ b/src/fl_round_box.cxx @@ -35,7 +35,7 @@ // A compiler from a certain very large software company will not compile // the function pointer assignment due to the name conflict with fl_arc. // This function is to fix that: -void fl_arc_i(int x,int y,int w,int h,double a1,double a2) { +static void fl_arc_i(int x,int y,int w,int h,double a1,double a2) { fl_arc(x,y,w,h,a1,a2); } @@ -52,6 +52,7 @@ static void draw(int which, int x,int y,int w,int h, int inset, Fl_Color color) int d = w <= h ? w : h; if (d <= 1) return; fl_color(color); + fl_line_style(0,1); void (*f)(int,int,int,int,double,double); f = (which==FILL) ? fl_pie : fl_arc_i; if (which >= CLOSED) { @@ -78,6 +79,7 @@ static void draw(int which, int x,int y,int w,int h, int inset, Fl_Color color) if (which != LOWER_RIGHT) fl_xyline(x+d/2-1, y, x+w-d/2+1); } } + fl_line_style(0); } extern uchar* fl_gray_ramp(); |
