FLTK logo

[master] 191aeef - Make the value box size of Fl_Value_Slider user settable (STR 3222)

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 All Forums  |  Back to fltk.commit  ]
 
Previous Message ]Next Message ]

[master] 191aeef - Make the value box size of Fl_Value_Slider user settable (STR 3222) "Albrecht Schlosser" Nov 26, 2022  
 
commit 191aeefc4a4161cb132065625a5e5eacb567688a
Author:     Albrecht Schlosser <albrechts.fltk@online.de>
AuthorDate: Sat Nov 26 19:54:48 2022 +0100
Commit:     Albrecht Schlosser <albrechts.fltk@online.de>
CommitDate: Sat Nov 26 19:56:32 2022 +0100

    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)

 FL/Fl_Value_Slider.H    | 109 ++++++++++++++++++++++++++++++++++++++----------
 src/Fl_Value_Slider.cxx |  30 +++++++------
 2 files changed, 106 insertions(+), 33 deletions(-)

diff --git FL/Fl_Value_Slider.H FL/Fl_Value_Slider.H
index 53d264d..e49b046 100644
--- FL/Fl_Value_Slider.H
+++ FL/Fl_Value_Slider.H
@@ -1,5 +1,5 @@
 //
-// Value slider header file for the Fast Light Tool Kit (FLTK).
+// Value Slider header file for the Fast Light Tool Kit (FLTK).
 //
 // Copyright 1998-2022 by Bill Spitzak and others.
 //
@@ -25,30 +25,97 @@
 /**
   The Fl_Value_Slider widget is a Fl_Slider widget
   with a box displaying the current value.
-  \image html value_slider.png
-  \image latex  value_slider.png "Fl_Value_Slider" width=4cm
+  \image html  value_slider.png
+  \image latex value_slider.png "Fl_Value_Slider" width=4cm
 */
 class FL_EXPORT Fl_Value_Slider : public Fl_Slider {
-    Fl_Font textfont_;
-    Fl_Fontsize textsize_;
-    Fl_Color textcolor_;
+  Fl_Font textfont_;
+  Fl_Fontsize textsize_;
+  Fl_Color textcolor_;
+  short value_width_;
+  short value_height_;
+
 protected:
-    void draw();
+  void draw();
+
 public:
-    int handle(int);
-    Fl_Value_Slider(int x,int y,int w,int h, const char *l = 0);
-    /**    Gets the typeface of the text in the value box.  */
-    Fl_Font textfont() const {return textfont_;}
-    /**    Sets the typeface of the text in the value box.  */
-    void textfont(Fl_Font s) {textfont_ = s;}
-    /**    Gets the size of the text in the value box.  */
-    Fl_Fontsize textsize() const {return textsize_;}
-    /**    Sets the size of the text in the value box.  */
-    void textsize(Fl_Fontsize s) {textsize_ = s;}
-    /**    Gets the color of the text in the value box.  */
-    Fl_Color textcolor() const {return textcolor_;}
-    /**    Sets the color of the text in the value box.  */
-    void textcolor(Fl_Color s) {textcolor_ = s;}
+  int handle(int);
+  Fl_Value_Slider(int x, int y, int w, int h, const char *l = 0);
+
+  /** Gets the typeface of the text in the value box. */
+  Fl_Font textfont() const { return textfont_; }
+
+  /** Sets the typeface of the text in the value box. */
+  void textfont(Fl_Font s) { textfont_ = s; }
+
+  /** Gets the size of the text in the value box. */
+  Fl_Fontsize textsize() const { return textsize_; }
+
+  /** Sets the size of the text in the value box. */
+  void textsize(Fl_Fontsize s) { textsize_ = s; }
+
+  /** Gets the color of the text in the value box. */
+  Fl_Color textcolor() const { return textcolor_; }
+
+  /** Sets the color of the text in the value box. */
+  void textcolor(Fl_Color s) { textcolor_ = s; }
+
+  /** Sets the width of the value box in pixels (horizontal mode only).
+
+    Limited range checking is applied but drawing errors may occur if
+    the size \p s is set too high or too low, particularly if the widget
+    is resized (later).
+
+    The programmer is responsible for setting sensible values and
+    widget sizes.
+
+    The default value set by the constructor is 35.
+
+    \param[in]  s  new width of the value box
+
+    \since 1.4.0
+  */
+  void value_width(int s) {
+    if (s > w() - 10)
+      s = w() - 10;
+    if (s < 10)
+      s = 10;
+    value_width_ = (short)s;
+  }
+
+  /** Gets the width of the value box in pixels (horizontal mode only).
+
+    \since 1.4.0
+  */
+  int value_width() const { return (value_width_); }
+
+  /** Sets the height of the value box in pixels (vertical mode only).
+
+    Limited range checking is applied but drawing errors may occur if
+    the size \p s is set too high or too low, particularly if the widget
+    is resized (later).
+
+    The programmer is responsible for setting sensible values and
+    widget sizes.
+
+    The default value set by the constructor is 25.
+
+    \param[in]  s  new height of the value box
+
+    \since 1.4.0
+  */
+  void value_height(int s) {
+    if (s > h() - 10)
+      s = h() - 10;
+    if (s < 10)
+      s = 10;
+    value_height_ = (short)s;
+  }
+  /** Gets the height of the value box in pixels (vertical mode only).
+
+    \since 1.4.0
+  */
+  int value_height() const { return (value_height_); }
 };
 
 #endif
diff --git src/Fl_Value_Slider.cxx src/Fl_Value_Slider.cxx
index 8406519..918d077 100644
--- src/Fl_Value_Slider.cxx
+++ 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()));
 }
 
 
Direct Link to Message ]
 
     
Previous Message ]Next Message ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2024 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to 'erco@seriss.com'.