summaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2024-07-23 10:13:27 +0200
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2024-07-23 10:13:27 +0200
commit5e6c47f446c1eb4fce2fdb9ff2ce62b6eada3a39 (patch)
treea3e47c4cb76625151e0cdab334b7f2fd3c7cf0a3 /src/drivers
parentdc95cd55c0513539c11ab1180219ab2cbcd802e1 (diff)
Fix "line_style_doc program under X11: join type wrong" (#1017)
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H1
-rw-r--r--src/drivers/Xlib/Fl_Xlib_Graphics_Driver_rect.cxx11
2 files changed, 12 insertions, 0 deletions
diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H
index 177f0b9b7..4116b79b9 100644
--- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H
+++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H
@@ -144,6 +144,7 @@ protected:
void rectf_unscaled(int x, int y, int w, int h) FL_OVERRIDE;
void colored_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b) FL_OVERRIDE;
void line_unscaled(int x, int y, int x1, int y1) FL_OVERRIDE;
+ void line_unscaled(int x, int y, int x1, int y1, int x2, int y2) FL_OVERRIDE;
void xyline_unscaled(int x, int y, int x1) FL_OVERRIDE;
void *change_pen_width(int lwidth) FL_OVERRIDE;
void reset_pen_width(void *data) FL_OVERRIDE;
diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_rect.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_rect.cxx
index ea24eba34..bdd5cbce3 100644
--- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_rect.cxx
+++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_rect.cxx
@@ -239,6 +239,17 @@ void Fl_Xlib_Graphics_Driver::line_unscaled(int x, int y, int x1, int y1) {
x1 + this->floor(offset_x_) , y1 + this->floor(offset_y_) );
}
+void Fl_Xlib_Graphics_Driver::line_unscaled(int x, int y, int x1, int y1, int x2, int y2) {
+ if (!clip_line(x1, y1, x, y) && !clip_line(x1, y1, x2, y2)) {
+ XPoint p[3];
+ int offset = floor(offset_x_);
+ p[0].x = x + offset; p[0].y = y + offset;
+ p[1].x = x1 + offset; p[1].y = y1 + offset;
+ p[2].x = x2 + offset; p[2].y = y2 + offset;
+ XDrawLines(fl_display, fl_window, gc_, p, 3, 0);
+ }
+}
+
void Fl_Xlib_Graphics_Driver::xyline_unscaled(int x, int y, int x1) {
if (line_width_ >= 2) x1++;
x += floor(offset_x_) ;