Guiliani  Version 2.5 revision 7293 (documentation build 13)
GUIBaseSlider.h
1/*
2* Copyright (C) TES Electronic Solutions GmbH,
3* All Rights Reserved.
4* Contact: info@guiliani.de
5*
6* This file is part of the Guiliani HMI framework
7* for the development of graphical user interfaces on embedded systems.
8*/
9
10#ifndef GUIBASESLIDER__H_
11#define GUIBASESLIDER__H_
12
13#include "GUIAbstractBar.h"
14#include "GUIRange.h"
15#include "GUIPoint.h"
16
17#include "GUICommonEnums.h"
18
20
69{
70public:
73 {
74 SM_NONE = 0,
77 };
78
79public:
80 friend class CGUIScrollBar;
81
97 CGUICompositeObject* const pkParent,
98 const eC_Value& vX, const eC_Value& vY,
99 const eC_Value& vWidth, const eC_Value& vHeight,
100 const eC_Int& iValue,
101 const eC_Int& iMin, const eC_Int& iMax,
102 const eC_UInt& uiStepSize,
103 const CGUIRange::Base_t& eBase = CGUIRange::BASE_AT_MINIMUM,
105 const ObjectHandle_t& eID = NO_HANDLE);
106
119 CGUICompositeObject* const pkParent,
120 const CGUIRect& kRect,
121 const eC_Int& iValue,
122 const eC_Int& iMin, const eC_Int& iMax,
123 const eC_UInt& uiStepSize,
124 const CGUIRange::Base_t& eBase = CGUIRange::BASE_AT_MINIMUM,
126 const ObjectHandle_t& eID = NO_HANDLE);
127
132
138
139#ifdef GUILIANI_STREAM_GUI
146
147
148 virtual void ReadFromStream();
149#endif
150#ifdef GUILIANI_WRITE_GUI
151 virtual void WriteToStream(const eC_Bool bWriteClassID = false);
152#endif
153
156
157 virtual eC_Bool DoDraw();
158
159 virtual eC_Bool DoClick(const eC_Value& vAbsX, const eC_Value& vAbsY);
160
161 virtual eC_Bool DoDrag(const eC_Value& vDeltaX, const eC_Value& vDeltaY, const eC_Value& vAbsX, const eC_Value& vAbsY);
162
163 virtual eC_Bool DoDragEnd(const eC_Value& vAbsX, const eC_Value& vAbsY);
164
171 virtual eC_Bool DoButtonDown(const eC_Value& vAbsX, const eC_Value& vAbsY);
172
176 virtual void SetWidth(const eC_Value& vX);
177
181 virtual void SetHeight(const eC_Value& vY);
182
193 void SetSliderTrackDistance(const eC_Value vPixel);
194
200 inline eC_Value GetSliderTrackLength() const
201 {
202 return eC_Abs(m_vSliderMaxPos - m_vSliderMinPos);
203 }
204
207 {
208 return m_eStyle;
209 }
210
211#ifndef GUILIANI_STREAM_GUI
215#endif
216
218 inline eC_Value GetKnobSizeVertical() const
219 {
220 return m_vKnobSizeVertical;
221 }
222
224 inline eC_Value GetKnobSizeHorizontal() const
225 {
227 }
228
231 {
232 return m_eSliderMode;
233 }
234
236 inline eC_UInt GetScrollDistance() const
237 {
238 return m_iScrollDistance;
239 }
240
246 inline void SetKnobSize(const eC_Value& vKnobSize)
247 {
248 SetKnobSizeHorizontal(vKnobSize);
249 SetKnobSizeVertical(vKnobSize);
250 }
251
255 void SetKnobSizeHorizontal(const eC_Value& vKnobSize);
256
260 void SetKnobSizeVertical(const eC_Value& vKnobSize);
261
265 void SetSliderMaxPos(const eC_Value vSliderMaxPos);
266
270 void SetSliderMinPos(const eC_Value vSliderMinPos);
271
275
278 void SetMinimumKnobSize(const eC_Value vMinimumKnobSize)
279 {
280 m_vMinimumKnobSize = vMinimumKnobSize;
283 }
284
288 void SetSliderMode(const SliderMode_t& eMode);
289
293 void SetScrollDistance(const eC_UInt& uiDistance);
294
295protected:
300 inline void ClipToPixelBounds(eC_Value& vPos) const
301 {
302 // clip to bounds
303 if (vPos < m_vSliderMinPos)
304 vPos = m_vSliderMinPos;
305 else if (vPos > m_vSliderMaxPos)
306 vPos = m_vSliderMaxPos;
307 }
308
317 void SetSliderPos(const eC_Value& vAbsX, const eC_Value& vAbsY);
318
322 void CopyAttributes(const CGUIBaseSlider& kSource);
323
332 inline eC_Int GetSliderValue(const eC_Value& vAbsX, const eC_Value& vAbsY) const;
333
341 void Init(
342 const eC_Int& iValue,
343 const eC_Int& iMin,
344 const eC_Int& iMax,
345 const eC_UInt& uiStepSize,
346 const CGUIRange::Base_t& eBase);
347
348protected:
353
356
359
362
366
368
375
380
385
389
393
396
399
402};
403#endif
ObjectHandle_t
List of object resource ids.
Definition: GUIObjectHandleResource.h:55
Base class for bars.
Definition: GUIAbstractBar.h:33
Slider base class.
Definition: GUIBaseSlider.h:69
eC_Bool m_bDraggingMode
Still holding the mouse button while dragging?
Definition: GUIBaseSlider.h:355
eC_Value m_vKnobSizeVertical
Definition: GUIBaseSlider.h:384
void SetSliderPos(const eC_Value &vAbsX, const eC_Value &vAbsY)
CGUIBaseSlider(CGUICompositeObject *const pkParent, const eC_Value &vX, const eC_Value &vY, const eC_Value &vWidth, const eC_Value &vHeight, const eC_Int &iValue, const eC_Int &iMin, const eC_Int &iMax, const eC_UInt &uiStepSize, const CGUIRange::Base_t &eBase=CGUIRange::BASE_AT_MINIMUM, const CGUICommonEnums::Orientation_t &eStyle=CGUICommonEnums::OR_HORIZONTAL, const ObjectHandle_t &eID=NO_HANDLE)
virtual eC_Bool DoDraw()
eC_Bool m_bStartOnKnob
Click started on knob.
Definition: GUIBaseSlider.h:358
virtual void ReadFromStream()
CGUIBaseSlider(CGUICompositeObject *const pkParent, const CGUIRect &kRect, const eC_Int &iValue, const eC_Int &iMin, const eC_Int &iMax, const eC_UInt &uiStepSize, const CGUIRange::Base_t &eBase=CGUIRange::BASE_AT_MINIMUM, const CGUICommonEnums::Orientation_t &eStyle=CGUICommonEnums::OR_HORIZONTAL, const ObjectHandle_t &eID=NO_HANDLE)
void SetSliderMode(const SliderMode_t &eMode)
virtual void SetHeight(const eC_Value &vY)
virtual ~CGUIBaseSlider()
CGUICommonEnums::Orientation_t GetOrientation() const
Definition: GUIBaseSlider.h:206
eC_Int GetSliderValue(const eC_Value &vAbsX, const eC_Value &vAbsY) const
SliderMode_t
Defines Behaviour of slider when clicking beneath knob.
Definition: GUIBaseSlider.h:73
@ SM_SCROLLTOCLICK
jump to click-position
Definition: GUIBaseSlider.h:76
@ SM_JUMPTOCLICK
undefined
Definition: GUIBaseSlider.h:75
void Init(const eC_Int &iValue, const eC_Int &iMin, const eC_Int &iMax, const eC_UInt &uiStepSize, const CGUIRange::Base_t &eBase)
eC_UInt GetScrollDistance() const
Definition: GUIBaseSlider.h:236
SliderMode_t m_eSliderMode
Define mode of slider operation.
Definition: GUIBaseSlider.h:398
eC_Value m_vSliderTrackDistance
Definition: GUIBaseSlider.h:388
virtual eC_Bool DoDrag(const eC_Value &vDeltaX, const eC_Value &vDeltaY, const eC_Value &vAbsX, const eC_Value &vAbsY)
eC_Value GetKnobSizeVertical() const
Definition: GUIBaseSlider.h:218
virtual void WriteToStream(const eC_Bool bWriteClassID=false)
CGUICommonEnums::Orientation_t m_eStyle
Definition: GUIBaseSlider.h:352
void ClipToPixelBounds(eC_Value &vPos) const
Definition: GUIBaseSlider.h:300
CGUIBaseSlider(const CGUIBaseSlider &kSource)
eC_Value m_vMinimumKnobSize
Minimum allowed knob size (in direction of slider orientation) in pixels (Defaults to 10)
Definition: GUIBaseSlider.h:395
eC_Value m_vSliderMaxPos
Definition: GUIBaseSlider.h:373
void SetSliderMaxPos(const eC_Value vSliderMaxPos)
void SetScrollDistance(const eC_UInt &uiDistance)
virtual CGUIRect CalculateKnobRect()
virtual eC_Bool DoButtonDown(const eC_Value &vAbsX, const eC_Value &vAbsY)
void SetKnobSizeHorizontal(const eC_Value &vKnobSize)
void SetSliderTrackDistance(const eC_Value vPixel)
eC_Value m_vDiffKnobMouse
Definition: GUIBaseSlider.h:392
eC_Value m_vSliderMinPos
Definition: GUIBaseSlider.h:373
CGUIPoint m_kRelDraggingPoint
Relative point that is beeing dragged.
Definition: GUIBaseSlider.h:361
void SetKnobSizeVertical(const eC_Value &vKnobSize)
eC_Value m_vKnobSizeHorizontal
Definition: GUIBaseSlider.h:379
CGUIBaseSlider & operator=(const CGUIBaseSlider &kSource)
void CopyAttributes(const CGUIBaseSlider &kSource)
virtual eC_Bool DoDragEnd(const eC_Value &vAbsX, const eC_Value &vAbsY)
CGUIRect m_kKnobAbsRect
Definition: GUIBaseSlider.h:365
eC_Value GetKnobSizeHorizontal() const
Definition: GUIBaseSlider.h:224
eC_Int m_iScrollDistance
Specifies scroll distance in scroll mode.
Definition: GUIBaseSlider.h:401
eC_Value GetSliderTrackLength() const
Definition: GUIBaseSlider.h:200
virtual eC_Bool DoClick(const eC_Value &vAbsX, const eC_Value &vAbsY)
virtual void SetWidth(const eC_Value &vX)
void SetSliderMinPos(const eC_Value vSliderMinPos)
void SetMinimumKnobSize(const eC_Value vMinimumKnobSize)
Definition: GUIBaseSlider.h:278
SliderMode_t GetSliderMode() const
Definition: GUIBaseSlider.h:230
void SetKnobSize(const eC_Value &vKnobSize)
Definition: GUIBaseSlider.h:246
Orientation_t
orientation of controls
Definition: GUICommonEnums.h:57
@ OR_HORIZONTAL
horizontal orientation
Definition: GUICommonEnums.h:58
This is the Guiliani base class for all composite objects.
Definition: GUICompositeObject.h:70
CGUIPoint class to hold two values (x, y) like a vector.
Definition: GUIPoint.h:18
Base_t
Whether base is at minimum or maximum of the range.
Definition: GUIRange.h:72
Helper class to supply a platform independent rectangle implementation.
Definition: GUIRect.h:63
The ScrollBar allows navigating controls which are larger than their actual visual representation.
Definition: GUIScrollBar.h:49