summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/fl_rect.cxx14
-rw-r--r--src/fl_round_box.cxx4
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();