Geometrize  1.0
An application for geometrizing images into geometric primitives
rangeslider.h
Go to the documentation of this file.
1 #pragma once
2 
3 // MIT License
4 //
5 // Copyright (c) 2019 ThisIsClark
6 // Modifications (c) 2021 Sam Twidale (https://samcodes.co.uk/)
7 //
8 // Permission is hereby granted, free of charge, to any person obtaining a copy
9 // of this software and associated documentation files (the "Software"), to deal
10 // in the Software without restriction, including without limitation the rights
11 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 // copies of the Software, and to permit persons to whom the Software is
13 // furnished to do so, subject to the following conditions:
14 //
15 // The above copyright notice and this permission notice shall be included in all
16 // copies or substantial portions of the Software.
17 //
18 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24 // SOFTWARE.
25 
26 #include <QWidget>
27 #include <QPainter>
28 #include <QMouseEvent>
29 
30 namespace geometrize
31 {
32 
33 namespace dialog
34 {
35 
36 class RangeSlider : public QWidget
37 {
38  Q_OBJECT
39  Q_ENUMS(RangeSliderTypes)
40 
41 public:
42  enum Option {
43  NoHandle = 0x0,
44  LeftHandle = 0x1,
45  RightHandle = 0x2,
47  };
48  Q_DECLARE_FLAGS(Options, Option)
49 
50  RangeSlider( QWidget* aParent = Q_NULLPTR);
51  RangeSlider( Qt::Orientation ori, Options t = DoubleHandles, QWidget* aParent = Q_NULLPTR);
52 
53  QSize minimumSizeHint() const override;
54 
55  int GetMinimum() const;
56  void SetMinimum(int aMinimum);
57 
58  int GetMaximum() const;
59  void SetMaximum(int aMaximum);
60 
61  int GetLowerValue() const;
62  void SetLowerValue(int aLowerValue);
63 
64  int GetUpperValue() const;
65  void SetUpperValue(int aUpperValue);
66 
67  void SetRange(int aMinimum, int aMaximum);
68 
69 protected:
70  void paintEvent(QPaintEvent* aEvent) override;
71  void mousePressEvent(QMouseEvent* aEvent) override;
72  void mouseMoveEvent(QMouseEvent* aEvent) override;
73  void mouseReleaseEvent(QMouseEvent* aEvent) override;
74  void changeEvent(QEvent* aEvent) override;
75 
76  QRectF firstHandleRect() const;
77  QRectF secondHandleRect() const;
78  QRectF handleRect(int aValue) const;
79 
80 signals:
81  void lowerValueChanged(int aLowerValue);
82  void upperValueChanged(int aUpperValue);
83  void rangeChanged(int aMin, int aMax);
84 
85 public slots:
86  void setLowerValue(int aLowerValue);
87  void setUpperValue(int aUpperValue);
88  void setMinimum(int aMinimum);
89  void setMaximum(int aMaximum);
90 
91 private:
92  Q_DISABLE_COPY(RangeSlider)
94  int validLength() const;
95 
96  int mMinimum;
97  int mMaximum;
103  int mDelta;
107  Qt::Orientation orientation;
108  Options type;
109 };
110 
111 }
112 
113 }
114 
115 Q_DECLARE_OPERATORS_FOR_FLAGS(geometrize::dialog::RangeSlider::Options)
geometrize::dialog::RangeSlider::setMaximum
void setMaximum(int aMaximum)
Definition: rangeslider.cpp:367
geometrize::dialog::RangeSlider::GetMinimum
int GetMinimum() const
Definition: rangeslider.cpp:270
geometrize::dialog::RangeSlider::NoHandle
@ NoHandle
Definition: rangeslider.h:43
geometrize::dialog::RangeSlider::DoubleHandles
@ DoubleHandles
Definition: rangeslider.h:46
geometrize::dialog::RangeSlider::SetMinimum
void SetMinimum(int aMinimum)
Definition: rangeslider.cpp:275
geometrize::dialog::RangeSlider::validLength
int validLength() const
Definition: rangeslider.cpp:388
geometrize::dialog::RangeSlider::setMinimum
void setMinimum(int aMinimum)
Definition: rangeslider.cpp:346
geometrize::dialog::RangeSlider::mBackgroudColorDisabled
QColor mBackgroudColorDisabled
Definition: rangeslider.h:105
geometrize::dialog::RangeSlider::mBackgroudColorEnabled
QColor mBackgroudColorEnabled
Definition: rangeslider.h:104
geometrize::dialog::RangeSlider::SetMaximum
void SetMaximum(int aMaximum)
Definition: rangeslider.cpp:285
geometrize::dialog::RangeSlider::RangeSlider
RangeSlider(QWidget *aParent=Q_NULLPTR)
Definition: rangeslider.cpp:43
geometrize::dialog::RangeSlider::setUpperValue
void setUpperValue(int aUpperValue)
Definition: rangeslider.cpp:328
geometrize::dialog::RangeSlider::mLowerValue
int mLowerValue
Definition: rangeslider.h:98
geometrize::dialog::RangeSlider::orientation
Qt::Orientation orientation
Definition: rangeslider.h:107
geometrize::dialog::RangeSlider::setLowerValue
void setLowerValue(int aLowerValue)
Definition: rangeslider.cpp:310
geometrize::dialog::RangeSlider::mInterval
int mInterval
Definition: rangeslider.h:102
geometrize::dialog::RangeSlider::Option
Option
Definition: rangeslider.h:42
geometrize::dialog::RangeSlider::mDelta
int mDelta
Definition: rangeslider.h:103
geometrize::dialog::RangeSlider::LeftHandle
@ LeftHandle
Definition: rangeslider.h:44
geometrize::dialog::RangeSlider::lowerValueChanged
void lowerValueChanged(int aLowerValue)
geometrize::dialog::RangeSlider::secondHandleRect
QRectF secondHandleRect() const
Definition: rangeslider.cpp:133
geometrize::dialog::RangeSlider::firstHandleRect
QRectF firstHandleRect() const
Definition: rangeslider.cpp:127
geometrize::dialog::RangeSlider::rangeChanged
void rangeChanged(int aMin, int aMax)
geometrize
Definition: commandlineparser.cpp:73
geometrize::dialog::RangeSlider::type
Options type
Definition: rangeslider.h:108
geometrize::dialog::RangeSlider::GetMaximum
int GetMaximum() const
Definition: rangeslider.cpp:280
geometrize::dialog::RangeSlider::changeEvent
void changeEvent(QEvent *aEvent) override
Definition: rangeslider.cpp:249
geometrize::dialog::RangeSlider::currentPercentage
float currentPercentage()
geometrize::dialog::RangeSlider::upperValueChanged
void upperValueChanged(int aUpperValue)
geometrize::dialog::RangeSlider::paintEvent
void paintEvent(QPaintEvent *aEvent) override
Definition: rangeslider.cpp:78
geometrize::dialog::RangeSlider::mMaximum
int mMaximum
Definition: rangeslider.h:97
geometrize::dialog::RangeSlider::mMinimum
int mMinimum
Definition: rangeslider.h:96
geometrize::dialog::RangeSlider
Definition: rangeslider.h:37
rangeslider.h
geometrize::dialog::RangeSlider::SetLowerValue
void SetLowerValue(int aLowerValue)
Definition: rangeslider.cpp:295
geometrize::dialog::RangeSlider::SetUpperValue
void SetUpperValue(int aUpperValue)
Definition: rangeslider.cpp:305
geometrize::dialog::RangeSlider::mFirstHandlePressed
bool mFirstHandlePressed
Definition: rangeslider.h:100
geometrize::dialog::RangeSlider::mouseMoveEvent
void mouseMoveEvent(QMouseEvent *aEvent) override
Definition: rangeslider.cpp:207
geometrize::dialog::RangeSlider::mouseReleaseEvent
void mouseReleaseEvent(QMouseEvent *aEvent) override
Definition: rangeslider.cpp:241
geometrize::dialog::RangeSlider::RightHandle
@ RightHandle
Definition: rangeslider.h:45
geometrize::dialog::RangeSlider::mUpperValue
int mUpperValue
Definition: rangeslider.h:99
geometrize::dialog::RangeSlider::handleRect
QRectF handleRect(int aValue) const
Definition: rangeslider.cpp:139
geometrize::dialog::RangeSlider::mousePressEvent
void mousePressEvent(QMouseEvent *aEvent) override
Definition: rangeslider.cpp:147
geometrize::dialog::RangeSlider::mBackgroudColor
QColor mBackgroudColor
Definition: rangeslider.h:106
geometrize::dialog::RangeSlider::GetUpperValue
int GetUpperValue() const
Definition: rangeslider.cpp:300
geometrize::dialog::RangeSlider::minimumSizeHint
QSize minimumSizeHint() const override
Definition: rangeslider.cpp:265
geometrize::dialog::RangeSlider::mSecondHandlePressed
bool mSecondHandlePressed
Definition: rangeslider.h:101
geometrize::dialog::RangeSlider::GetLowerValue
int GetLowerValue() const
Definition: rangeslider.cpp:290
geometrize::dialog::RangeSlider::SetRange
void SetRange(int aMinimum, int aMaximum)
Definition: rangeslider.cpp:394