diff options
Diffstat (limited to 'src/drivers/GDI/Fl_GDI_Graphics_Driver_line_style.cxx')
| -rw-r--r-- | src/drivers/GDI/Fl_GDI_Graphics_Driver_line_style.cxx | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/src/drivers/GDI/Fl_GDI_Graphics_Driver_line_style.cxx b/src/drivers/GDI/Fl_GDI_Graphics_Driver_line_style.cxx deleted file mode 100644 index 9d086f353..000000000 --- a/src/drivers/GDI/Fl_GDI_Graphics_Driver_line_style.cxx +++ /dev/null @@ -1,111 +0,0 @@ -// -// Line style code for the Fast Light Tool Kit (FLTK). -// -// Copyright 1998-2018 by Bill Spitzak and others. -// -// This library is free software. Distribution and use rights are outlined in -// the file "COPYING" which should have been included with this file. If this -// file is missing or damaged, see the license at: -// -// https://www.fltk.org/COPYING.php -// -// Please see the following page on how to report bugs and issues: -// -// https://www.fltk.org/bugs.php -// - -/** - \file Fl_GDI_Graphics_Driver_line_style.cxx - - \brief Line style drawing utility for Windows (GDI) platform. -*/ - -#include <FL/Fl.H> -#include <FL/platform.H> -#include <FL/fl_draw.H> - -#include "Fl_GDI_Graphics_Driver.H" - - -void Fl_GDI_Graphics_Driver::line_style_unscaled(int style, int width, char* dashes) { - - // According to Bill, the "default" cap and join should be the - // "fastest" mode supported for the platform. I don't know why - // they should be different (same graphics cards, etc., right?) MRS - - static const DWORD Cap[4] = {PS_ENDCAP_FLAT, PS_ENDCAP_FLAT, PS_ENDCAP_ROUND, PS_ENDCAP_SQUARE}; - static const DWORD Join[4] = {PS_JOIN_ROUND, PS_JOIN_MITER, PS_JOIN_ROUND, PS_JOIN_BEVEL}; - - int s1 = PS_GEOMETRIC | Cap[(style>>8)&3] | Join[(style>>12)&3]; - DWORD a[16]; - int n = 0; - if (dashes && dashes[0]) { - s1 |= PS_USERSTYLE; - for (n = 0; n < 16 && *dashes; n++) a[n] = *dashes++; - } else { - s1 |= style & 0xff; // allow them to pass any low 8 bits for style - } - if ((style || n) && !width) width = int(scale()); // fix cards that do nothing for 0? - if (!width) width = 1; - if (!fl_current_xmap) color(FL_BLACK); - LOGBRUSH penbrush = {BS_SOLID,fl_RGB(),0}; // can this be fl_brush()? - HPEN newpen = ExtCreatePen(s1, width, &penbrush, n, n ? a : 0); - if (!newpen) { - Fl::error("fl_line_style(): Could not create GDI pen object."); - return; - } - HPEN oldpen = (HPEN)SelectObject(gc_, newpen); - DeleteObject(oldpen); - DeleteObject(fl_current_xmap->pen); - fl_current_xmap->pen = newpen; - style_ = style; -} - -#if USE_GDIPLUS - -void Fl_GDIplus_Graphics_Driver::line_style(int style, int width, char* dashes) { - if (!active) return Fl_Scalable_Graphics_Driver::line_style(style, width, dashes); - int gdi_width = (width ? width : 1); - pen_->SetWidth(Gdiplus::REAL(gdi_width)); - int standard_dash = style & 0x7; - if (standard_dash == FL_DASH ) - pen_->SetDashStyle(Gdiplus::DashStyleDash); - else if (standard_dash == FL_DOT ) - pen_->SetDashStyle(Gdiplus::DashStyleDot); - else if (standard_dash == FL_DASHDOT ) - pen_->SetDashStyle(Gdiplus::DashStyleDashDot); - else if (standard_dash == FL_DASHDOTDOT ) - pen_->SetDashStyle(Gdiplus::DashStyleDashDotDot); - else if(!dashes || !*dashes) - pen_->SetDashStyle(Gdiplus::DashStyleSolid); - - if (style & FL_CAP_ROUND ) { - pen_->SetStartCap(Gdiplus::LineCapRound); - pen_->SetEndCap(Gdiplus::LineCapRound); - } else if (style & FL_CAP_SQUARE ) { - pen_->SetStartCap(Gdiplus::LineCapSquare); - pen_->SetEndCap(Gdiplus::LineCapSquare); - } else { - pen_->SetStartCap(Gdiplus::LineCapFlat); - pen_->SetEndCap(Gdiplus::LineCapFlat); - } - - if (style & FL_JOIN_MITER ) { - pen_->SetLineJoin(Gdiplus::LineJoinMiter); - } else if (style & FL_JOIN_BEVEL ) { - pen_->SetLineJoin(Gdiplus::LineJoinBevel); - } else { - pen_->SetLineJoin(Gdiplus::LineJoinRound); - } - - if (dashes && *dashes) { - int n = 0; while (dashes[n]) n++; - Gdiplus::REAL *gdi_dashes = new Gdiplus::REAL[n]; - for (int i = 0; i < n; i++) gdi_dashes[i] = dashes[i]/float(gdi_width); - pen_->SetDashPattern(gdi_dashes, n); - delete[] gdi_dashes; - } - Fl_Scalable_Graphics_Driver::line_style(style, width, dashes); -} - -#endif |
