From 191aeefc4a4161cb132065625a5e5eacb567688a Mon Sep 17 00:00:00 2001 From: Albrecht Schlosser Date: Sat, 26 Nov 2022 19:54:48 +0100 Subject: Make the value box size of Fl_Value_Slider user settable (STR 3222) For a very simple test program see STR 3222, File 2: https://www.fltk.org/strfiles/3222/value_slider.cxx Known issues: - range checking of the value box size is very limited - resizing the widget does not change the value box size - drawing issues are possible if the value box size and the widget size are not compatible (e.g. value box too large) --- src/Fl_Value_Slider.cxx | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/Fl_Value_Slider.cxx b/src/Fl_Value_Slider.cxx index 8406519dc..918d07742 100644 --- a/src/Fl_Value_Slider.cxx +++ b/src/Fl_Value_Slider.cxx @@ -1,7 +1,7 @@ // -// Value slider widget for the Fast Light Tool Kit (FLTK). +// Value Slider widget for the Fast Light Tool Kit (FLTK). // -// Copyright 1998-2010 by Bill Spitzak and others. +// Copyright 1998-2022 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 @@ -30,17 +30,24 @@ Fl_Value_Slider::Fl_Value_Slider(int X, int Y, int W, int H, const char*l) textfont_ = FL_HELVETICA; textsize_ = 10; textcolor_ = FL_FOREGROUND_COLOR; + value_width_ = 35; + value_height_ = 25; } void Fl_Value_Slider::draw() { int sxx = x(), syy = y(), sww = w(), shh = h(); int bxx = x(), byy = y(), bww = w(), bhh = h(); if (horizontal()) { - bww = 35; sxx += 35; sww -= 35; + bww = value_width(); + sxx += value_width(); + sww -= value_width(); } else { - syy += 25; bhh = 25; shh -= 25; + syy += value_height(); + bhh = value_height(); + shh -= value_height(); } - if (damage()&FL_DAMAGE_ALL) draw_box(box(),sxx,syy,sww,shh,color()); + if (damage() & FL_DAMAGE_ALL) + draw_box(box(), sxx, syy, sww, shh, color()); Fl_Slider::draw(sxx+Fl::box_dx(box()), syy+Fl::box_dy(box()), sww-Fl::box_dw(box()), @@ -60,15 +67,14 @@ int Fl_Value_Slider::handle(int event) { } int sxx = x(), syy = y(), sww = w(), shh = h(); if (horizontal()) { - sxx += 35; sww -= 35; + sxx += value_width(); + sww -= value_width(); } else { - syy += 25; shh -= 25; + syy += value_height(); + shh -= value_height(); } - return Fl_Slider::handle(event, - sxx+Fl::box_dx(box()), - syy+Fl::box_dy(box()), - sww-Fl::box_dw(box()), - shh-Fl::box_dh(box())); + return Fl_Slider::handle(event, sxx + Fl::box_dx(box()), syy + Fl::box_dy(box()), + sww - Fl::box_dw(box()), shh - Fl::box_dh(box())); } -- cgit v1.2.3