VSTGUI  4.10
Graphical User Interface Framework not only for VST plugins
CScrollView Class Reference

a scrollable container view with scrollbars More...

+ Inheritance diagram for CScrollView:

Public Types

enum  CScrollViewStyle {
  kHorizontalScrollbar = 1 << kHorizontalScrollbarFlag, kVerticalScrollbar = 1 << kVerticalScrollbarFlag, kDontDrawFrame = 1 << kDontDrawFrameFlag, kAutoDragScrolling = 1 << kAutoDragScollingFlag,
  kOverlayScrollbars = 1 << kOverlayScrollbarsFlag, kFollowFocusView = 1 << kFollowFocusViewFlag, kAutoHideScrollbars = 1 << kAutoHideScrollbarsFlag
}
 Scroll View Style Flags. More...
 
- Public Types inherited from CViewContainer
using ViewList = std::list< SharedPointer< CView > >
 
using ChildViewConstIterator = ViewList::const_iterator
 
using ChildViewConstReverseIterator = ViewList::const_reverse_iterator
 
- Public Types inherited from CView
enum  MouseListenerCall { MouseDown, MouseMoved, MouseUp, MouseCancel }
 

Public Member Functions

 CScrollView (const CRect &size, const CRect &containerSize, int32_t style, CCoord scrollbarWidth=16, CBitmap *pBackground=nullptr)
 
 CScrollView (const CScrollView &scrollView)
 
bool addView (CView *pView, CView *pBefore=nullptr) override
 add a child view before another view More...
 
bool removeView (CView *pView, bool withForget=true) override
 remove a child view More...
 
bool removeAll (bool withForget=true) override
 remove all child views More...
 
uint32_t getNbViews () const override
 get the number of child views More...
 
CViewgetView (uint32_t index) const override
 get the child view at index More...
 
bool changeViewZOrder (CView *view, uint32_t newIndex) override
 change view z order position More...
 
void drawBackgroundRect (CDrawContext *pContext, const CRect &_updateRect) override
 draw the background More...
 
bool onWheel (const CPoint &where, const CMouseWheelAxis &axis, const float &distance, const CButtonState &buttons) override
 called if a mouse wheel event is happening over this view More...
 
void valueChanged (CControl *pControl) override
 
void setTransparency (bool val) override
 set views transparent state More...
 
void setBackgroundColor (const CColor &color) override
 set the background color (will only be drawn if this container is not set to transparent and does not have a background bitmap) More...
 
void setViewSize (const CRect &rect, bool invalid=true) override
 set views size More...
 
void setAutosizeFlags (int32_t flags) override
 set autosize flags More...
 
CMessageResult notify (CBaseObject *sender, IdStringPtr message) override
 
CBaseObjectnewCopy () const override
 
CScrollView Methods
int32_t getStyle () const
 
void setStyle (int32_t newStyle)
 
int32_t getActiveScrollbars () const
 
CCoord getScrollbarWidth () const
 
void setScrollbarWidth (CCoord width)
 
virtual void setContainerSize (const CRect &cs, bool keepVisibleArea=false)
 set the virtual size of this container More...
 
const CRectgetContainerSize () const
 
const CPointgetScrollOffset () const
 get scroll offset More...
 
void resetScrollOffset ()
 
CScrollbargetVerticalScrollbar () const
 get the vertical scrollbar More...
 
CScrollbargetHorizontalScrollbar () const
 get the horizontal scrollbar More...
 
virtual void makeRectVisible (const CRect &rect)
 set scrollview to show rect More...
 
- Public Member Functions inherited from CViewContainer
 CViewContainer (const CRect &size)
 CViewContainer constructor. More...
 
 CViewContainer (const CViewContainer &viewContainer)
 
virtual bool advanceNextFocusView (CView *oldFocus, bool reverse=false)
 
virtual bool invalidateDirtyViews ()
 
virtual CRect getVisibleSize (const CRect &rect) const
 
void setTransform (const CGraphicsTransform &t)
 
const CGraphicsTransformgetTransform () const
 
void registerViewContainerListener (IViewContainerListener *listener)
 
void unregisterViewContainerListener (IViewContainerListener *listener)
 
void draw (CDrawContext *pContext) override
 
void drawRect (CDrawContext *pContext, const CRect &updateRect) override
 
CMouseEventResult onMouseDown (CPoint &where, const CButtonState &buttons) override
 called when a mouse down event occurs More...
 
CMouseEventResult onMouseUp (CPoint &where, const CButtonState &buttons) override
 called when a mouse up event occurs More...
 
CMouseEventResult onMouseMoved (CPoint &where, const CButtonState &buttons) override
 called when a mouse move event occurs More...
 
CMouseEventResult onMouseCancel () override
 called when mouse tracking should be canceled More...
 
bool onWheel (const CPoint &where, const CMouseWheelAxis &axis, const float &distance, const CButtonState &buttons) override
 called if a mouse wheel event is happening over this view More...
 
bool hitTest (const CPoint &where, const CButtonState &buttons=-1) override
 
CMessageResult notify (CBaseObject *sender, IdStringPtr message) override
 
SharedPointer< IDropTargetgetDropTarget () override
 get the drag target for drag and drop handling More...
 
void looseFocus () override
 called if view should loose focus More...
 
void takeFocus () override
 called if view should take focus More...
 
bool isDirty () const override
 check if view is dirty More...
 
void invalid () override
 mark whole view as invalid More...
 
void invalidRect (const CRect &rect) override
 mark rect as invalid More...
 
void setViewSize (const CRect &rect, bool invalid=true) override
 
void parentSizeChanged () override
 notification that one of the views parent has changed its size More...
 
bool sizeToFit () override
 resize view to optimal size More...
 
bool removed (CView *parent) override
 view is removed from parent view More...
 
bool attached (CView *parent) override
 view is attached to a parent view More...
 
CPointframeToLocal (CPoint &point) const override
 conversion from frame coordinates to local view coordinates More...
 
CPointlocalToFrame (CPoint &point) const override
 conversion from local view coordinates to frame coordinates More...
 
CBaseObjectnewCopy () const override
 
CViewContainerasViewContainer () final
 
const CViewContainerasViewContainer () const final
 
bool addView (CView *pView, const CRect &mouseableArea, bool mouseEnabled=true)
 add a child view More...
 
bool isChild (CView *pView) const
 check if pView is a child view of this container More...
 
virtual bool isChild (CView *pView, bool deep) const
 check if pView is a child view of this container More...
 
virtual bool hasChildren () const
 check if container has child views More...
 
virtual CViewgetViewAt (const CPoint &where, const GetViewOptions &options=GetViewOptions()) const
 get the view at point where More...
 
virtual CViewContainergetContainerAt (const CPoint &where, const GetViewOptions &options=GetViewOptions().deep()) const
 get the container at point where More...
 
virtual bool getViewsAt (const CPoint &where, ViewList &views, const GetViewOptions &options=GetViewOptions().deep()) const
 get all views at point where, top->down More...
 
virtual bool hitTestSubViews (const CPoint &where, const CButtonState &buttons=-1)
 
virtual void setAutosizingEnabled (bool state)
 enable or disable autosizing subviews. More...
 
bool getAutosizingEnabled () const
 
template<class ViewClass , class ContainerClass >
uint32_t getChildViewsOfType (ContainerClass &result, bool deep=false) const
 get child views of type ViewClass. More...
 
template<typename Proc >
void forEachChild (Proc proc) const
 execute proc for each child view More...
 
virtual CColor getBackgroundColor () const
 get the background color More...
 
virtual void setBackgroundOffset (const CPoint &p)
 set the offset of the background bitmap More...
 
virtual CPoint getBackgroundOffset () const
 get the offset of the background bitmap More...
 
virtual void setBackgroundColorDrawStyle (CDrawStyle style)
 
CDrawStyle getBackgroundColorDrawStyle () const
 
- Public Member Functions inherited from CView
 CView (const CRect &size)
 
 CView (const CView &view)
 
void setSubviewState (bool state)
 
bool isSubview () const
 
virtual bool wantsWindowActiveStateChangeNotification () const
 whether this view wants to be informed if the window's active state changes More...
 
virtual void onWindowActivate (bool state)
 called when the active state of the window changes More...
 
void setTooltipText (UTF8StringPtr text)
 
CMouseEventResult callMouseListener (MouseListenerCall type, CPoint pos, CButtonState buttons)
 
void callMouseListenerEnteredExited (bool mouseEntered)
 
CBaseObjectnewCopy () const override
 
virtual CMouseEventResult onMouseEntered (CPoint &where, const CButtonState &buttons)
 called when the mouse enters this view More...
 
virtual CMouseEventResult onMouseExited (CPoint &where, const CButtonState &buttons)
 called when the mouse leaves this view More...
 
void setHitTestPath (CGraphicsPath *path)
 
virtual bool onWheel (const CPoint &where, const float &distance, const CButtonState &buttons) final
 
virtual void setMouseEnabled (bool bEnable=true)
 turn on/off mouse usage for this view More...
 
bool getMouseEnabled () const
 get the state of wheather this view uses the mouse or not More...
 
void setMouseableArea (const CRect &rect)
 set the area in which the view reacts to the mouse More...
 
CRectgetMouseableArea (CRect &rect) const
 get the area in which the view reacts to the mouse More...
 
CRect getMouseableArea () const
 get the area in which the view reacts to the mouse More...
 
bool doDrag (const DragDescription &dragDescription, const SharedPointer< IDragCallback > &callback={})
 start a drag operation More...
 
void setDropTarget (const SharedPointer< IDropTarget > &dt)
 set a custom drop target More...
 
DragResult doDrag (IDataPackage *source, const CPoint &offset=CPoint(0, 0), CBitmap *dragBitmap=nullptr)
 a drag can only be started from within onMouseDown More...
 
virtual int32_t onKeyDown (VstKeyCode &keyCode)
 called if a key down event occurs and this view has focus More...
 
virtual int32_t onKeyUp (VstKeyCode &keyCode)
 called if a key up event occurs and this view has focus More...
 
CCoord getHeight () const
 get the height of the view More...
 
CCoord getWidth () const
 get the width of the view More...
 
const CRectgetViewSize () const
 read only access to view size More...
 
virtual CRect getVisibleViewSize () const
 returns the visible size of the view More...
 
int32_t getAutosizeFlags () const
 get autosize flags More...
 
virtual bool wantsFocus () const
 check if view supports focus More...
 
virtual void setWantsFocus (bool state)
 set focus support on/off More...
 
bool getAttributeSize (const CViewAttributeID id, uint32_t &outSize) const
 get the size of an attribute More...
 
bool getAttribute (const CViewAttributeID id, const uint32_t inSize, void *outData, uint32_t &outSize) const
 get an attribute More...
 
bool setAttribute (const CViewAttributeID id, const uint32_t inSize, const void *inData)
 set an attribute More...
 
bool removeAttribute (const CViewAttributeID id)
 remove an attribute More...
 
template<typename T >
bool setAttribute (const CViewAttributeID id, const T &data)
 set an attribute More...
 
template<typename T >
bool getAttribute (const CViewAttributeID id, T &data) const
 get an attribute More...
 
virtual void setBackground (CBitmap *background)
 set the background image of this view More...
 
CBitmapgetBackground () const
 get the background image of this view More...
 
virtual void setDisabledBackground (CBitmap *background)
 set background image used when the mouse is not enabled More...
 
CBitmapgetDisabledBackground () const
 get background image used when the mouse is not enabled More...
 
CBitmapgetDrawBackground () const
 get the bitmap which is drawn depending on the enabled state. More...
 
bool getTransparency () const
 get views transparent state More...
 
virtual void setAlphaValue (float alpha)
 set alpha value which will be applied when drawing this view More...
 
float getAlphaValue () const
 get alpha value More...
 
bool isAttached () const
 is view attached to a parentView More...
 
CViewgetParentView () const
 get parent view More...
 
CFramegetFrame () const
 get frame More...
 
virtual VSTGUIEditorInterfacegetEditor () const
 get editor More...
 
void addAnimation (IdStringPtr name, Animation::IAnimationTarget *target, Animation::ITimingFunction *timingFunction, CBaseObject *notificationObject)
 
void addAnimation (IdStringPtr name, Animation::IAnimationTarget *target, Animation::ITimingFunction *timingFunction, const Animation::DoneFunction &doneFunc=nullptr)
 
void removeAnimation (IdStringPtr name)
 
void removeAllAnimations ()
 
void registerViewListener (IViewListener *listener)
 
void unregisterViewListener (IViewListener *listener)
 
void registerViewMouseListener (IViewMouseListener *listener)
 
void unregisterViewMouseListener (IViewMouseListener *listener)
 
CGraphicsTransform getGlobalTransform (bool ignoreFrame=false) const
 get the active global transform for this view More...
 
template<typename T >
T & translateToGlobal (T &t, bool ignoreFrame=false) const
 translates a local coordinate to a global one using parent transforms More...
 
template<typename T >
translateToGlobal (const T &t, bool ignoreFrame=false) const
 translates a local coordinate to a global one using parent transforms More...
 
template<typename T >
T & translateToLocal (T &t, bool ignoreFrame=false) const
 translates a global coordinate to a local one using parent transforms More...
 
template<typename T >
translateToLocal (const T &t, bool ignoreFrame=false) const
 translates a local coordinate to a global one using parent transforms More...
 
virtual bool checkUpdate (const CRect &updateRect) const
 
virtual void setDirty (bool val=true)
 set the view to dirty so that it is redrawn in the next idle. More...
 
virtual void setVisible (bool state)
 set visibility state More...
 
bool isVisible () const
 get visibility state More...
 
virtual void onIdle ()
 called on idle when view wants idle More...
 
void setWantsIdle (bool state)
 enable/disable onIdle() callback More...
 
bool wantsIdle () const
 returns if the view wants idle callback or not More...
 
- Public Member Functions inherited from CBaseObject
 CBaseObject ()=default
 
 ~CBaseObject () noexcept override=default
 
 CBaseObject (const CBaseObject &o)
 
CBaseObjectoperator= (const CBaseObject &obj)
 
- Public Member Functions inherited from ReferenceCounted< T >
 ReferenceCounted ()=default
 
virtual ~ReferenceCounted () noexcept=default
 
 ReferenceCounted (const ReferenceCounted &)
 
ReferenceCountedoperator= (const ReferenceCounted &)
 
void forget () override
 decrease refcount and delete object if refcount == 0 More...
 
void remember () override
 increase refcount More...
 
virtual int32_t getNbReference () const
 get refcount More...
 
- Public Member Functions inherited from IControlListener
virtual ~IControlListener () noexcept=default
 
virtual int32_t controlModifierClicked (CControl *pControl, CButtonState button)
 return 1 if you want the control to not handle it, otherwise 0 More...
 
virtual void controlBeginEdit (CControl *pControl)
 
virtual void controlEndEdit (CControl *pControl)
 
virtual void controlTagWillChange (CControl *pControl)
 
virtual void controlTagDidChange (CControl *pControl)
 
- Public Member Functions inherited from ViewListenerAdapter
void viewSizeChanged (CView *view, const CRect &oldSize) override
 
void viewAttached (CView *view) override
 
void viewRemoved (CView *view) override
 
void viewLostFocus (CView *view) override
 
void viewTookFocus (CView *view) override
 
void viewWillDelete (CView *view) override
 
- Public Member Functions inherited from IViewListener
virtual ~IViewListener () noexcept=default
 

Protected Types

enum  {
  kHorizontalScrollbarFlag, kVerticalScrollbarFlag, kDontDrawFrameFlag, kAutoDragScollingFlag,
  kOverlayScrollbarsFlag, kFollowFocusViewFlag, kAutoHideScrollbarsFlag, kLastScrollViewStyleFlag
}
 
enum  { kHSBTag, kVSBTag }
 
- Protected Types inherited from CViewContainer
enum  { kAutosizeSubviews = 1 << (CView::kLastCViewFlag + 1) }
 
- Protected Types inherited from CView
enum  {
  kMouseEnabled = 1 << 0, kTransparencyEnabled = 1 << 1, kWantsFocus = 1 << 2, kIsAttached = 1 << 3,
  kVisible = 1 << 4, kDirty = 1 << 5, kWantsIdle = 1 << 6, kIsSubview = 1 << 7,
  kHasAlpha = 1 << 8, kHasBackground = 1 << 9, kHasDisabledBackground = 1 << 10, kHasMouseableArea = 1 << 11,
  kLastCViewFlag = 11
}
 

Protected Member Functions

 ~CScrollView () noexcept override=default
 
virtual void recalculateSubViews ()
 
void viewSizeChanged (CView *view, const CRect &oldSize) override
 
void viewWillDelete (CView *view) override
 
- Protected Member Functions inherited from CViewContainer
 ~CViewContainer () noexcept override
 
void beforeDelete () override
 
virtual bool checkUpdateRect (CView *view, const CRect &rect)
 check if view needs to be updated for rect More...
 
void setMouseDownView (CView *view)
 
CViewgetMouseDownView () const
 
const ViewListgetChildren () const
 
- Protected Member Functions inherited from CView
 ~CView () noexcept override
 
CGraphicsPathgetHitTestPath () const
 
bool hasViewFlag (int32_t bit) const
 
void setViewFlag (int32_t bit, bool state)
 
void setAlphaValueNoInvalidate (float value)
 
void setParentFrame (CFrame *frame)
 
void setParentView (CView *parent)
 

Protected Attributes

CScrollContainer * sc
 
CScrollbarvsb
 
CScrollbarhsb
 
CRect containerSize
 
CCoord scrollbarWidth
 
int32_t style
 
int32_t activeScrollbarStyle
 
bool recalculateSubViewsRecursionGard {false}
 

Additional Inherited Members

- Static Public Attributes inherited from CView
static bool kDirtyCallAlwaysOnMainThread = false
 if this is true, setting a view dirty will call invalid() instead of checking it in idle. More...
 
static uint32_t idleRate
 global idle rate in Hz, defaults to 30 Hz More...
 

Detailed Description

a scrollable container view with scrollbars

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
protected
Enumerator
kHorizontalScrollbarFlag 
kVerticalScrollbarFlag 
kDontDrawFrameFlag 
kAutoDragScollingFlag 
kOverlayScrollbarsFlag 
kFollowFocusViewFlag 
kAutoHideScrollbarsFlag 
kLastScrollViewStyleFlag 

◆ anonymous enum

anonymous enum
protected
Enumerator
kHSBTag 
kVSBTag 

◆ CScrollViewStyle

Scroll View Style Flags.

Enumerator
kHorizontalScrollbar 

add a horizontal scrollbar

kVerticalScrollbar 

add a vertical scrollbar

kDontDrawFrame 

don't draw frame

kAutoDragScrolling 

automatic scrolling for drag moves

kOverlayScrollbars 

scrollbars are overlayed of the content

kFollowFocusView 

scroll to focus view when focus view changes

kAutoHideScrollbars 

automatically hides the scrollbar if the container size is smaller than the size of the scrollview

Constructor & Destructor Documentation

◆ CScrollView() [1/2]

CScrollView ( const CRect size,
const CRect containerSize,
int32_t  style,
CCoord  scrollbarWidth = 16,
CBitmap pBackground = nullptr 
)

◆ CScrollView() [2/2]

CScrollView ( const CScrollView scrollView)

◆ ~CScrollView()

~CScrollView ( )
overrideprotecteddefaultnoexcept

Member Function Documentation

◆ addView()

bool addView ( CView pView,
CView pBefore = nullptr 
)
overridevirtual

add a child view before another view

Parameters
pViewthe view object to add to this container
pBeforethe view object
Returns
true on success. false if view was already attached

Reimplemented from CViewContainer.

◆ changeViewZOrder()

bool changeViewZOrder ( CView view,
uint32_t  newIndex 
)
overridevirtual

change view z order position

Parameters
viewview which z order position should be changed
newIndexindex of new z position
Returns
true if z order of view changed

Reimplemented from CViewContainer.

◆ drawBackgroundRect()

void drawBackgroundRect ( CDrawContext pContext,
const CRect _updateRect 
)
overridevirtual

draw the background

Parameters
pContextthe context which to use to draw the background
_updateRectthe area which to draw

Reimplemented from CViewContainer.

◆ getActiveScrollbars()

int32_t getActiveScrollbars ( ) const
inline

◆ getContainerSize()

const CRect& getContainerSize ( ) const
inline

◆ getHorizontalScrollbar()

CScrollbar* getHorizontalScrollbar ( ) const
inline

get the horizontal scrollbar

◆ getNbViews()

uint32_t getNbViews ( ) const
overridevirtual

get the number of child views

Returns
number of subviews

Reimplemented from CViewContainer.

◆ getScrollbarWidth()

CCoord getScrollbarWidth ( ) const
inline

◆ getScrollOffset()

const CPoint & getScrollOffset ( ) const

get scroll offset

◆ getStyle()

int32_t getStyle ( ) const
inline

◆ getVerticalScrollbar()

CScrollbar* getVerticalScrollbar ( ) const
inline

get the vertical scrollbar

◆ getView()

CView * getView ( uint32_t  index) const
overridevirtual

get the child view at index

Parameters
indexthe index of the view to return
Returns
view at index. NULL if view at index does not exist.

Reimplemented from CViewContainer.

◆ makeRectVisible()

void makeRectVisible ( const CRect rect)
virtual

set scrollview to show rect

◆ newCopy()

CBaseObject* newCopy ( ) const
inlineoverride

◆ notify()

CMessageResult notify ( CBaseObject sender,
IdStringPtr  message 
)
overridevirtual

Reimplemented from CBaseObject.

◆ onWheel()

bool onWheel ( const CPoint where,
const CMouseWheelAxis axis,
const float &  distance,
const CButtonState buttons 
)
overridevirtual

called if a mouse wheel event is happening over this view

Parameters
wherelocation
axismouse wheel axis
distancewheel distance
buttonsbutton and modifier state
Returns
true if handled

Reimplemented from CView.

◆ recalculateSubViews()

void recalculateSubViews ( )
protectedvirtual

Reimplemented in CDataBrowser.

◆ removeAll()

bool removeAll ( bool  withForget = true)
overridevirtual

remove all child views

Parameters
withForgetbool to indicate if the view's reference counter should be decreased after removed from the container
Returns
true on success

Reimplemented from CViewContainer.

◆ removeView()

bool removeView ( CView pView,
bool  withForget = true 
)
overridevirtual

remove a child view

Parameters
pViewthe view which should be removed from the container
withForgetbool to indicate if the view's reference counter should be decreased after removed from the container
Returns
true on success

Reimplemented from CViewContainer.

◆ resetScrollOffset()

void resetScrollOffset ( )

◆ setAutosizeFlags()

void setAutosizeFlags ( int32_t  flags)
overridevirtual

set autosize flags

Reimplemented from CView.

◆ setBackgroundColor()

void setBackgroundColor ( const CColor color)
overridevirtual

set the background color (will only be drawn if this container is not set to transparent and does not have a background bitmap)

Parameters
colorthe new background color of the container

Reimplemented from CViewContainer.

◆ setContainerSize()

void setContainerSize ( const CRect cs,
bool  keepVisibleArea = false 
)
virtual

set the virtual size of this container

◆ setScrollbarWidth()

void setScrollbarWidth ( CCoord  width)

◆ setStyle()

void setStyle ( int32_t  newStyle)

◆ setTransparency()

void setTransparency ( bool  val)
overridevirtual

set views transparent state

Reimplemented from CView.

◆ setViewSize()

void setViewSize ( const CRect newSize,
bool  doInvalid = true 
)
overridevirtual

set views size

Parameters
newSizerect of new size of view
doInvalidif true set view dirty

Reimplemented from CView.

◆ valueChanged()

void valueChanged ( CControl pControl)
overridevirtual

Implements IControlListener.

◆ viewSizeChanged()

void viewSizeChanged ( CView view,
const CRect oldSize 
)
overrideprotectedvirtual

Implements IViewListener.

◆ viewWillDelete()

void viewWillDelete ( CView view)
overrideprotectedvirtual

Implements IViewListener.

Member Data Documentation

◆ activeScrollbarStyle

int32_t activeScrollbarStyle
protected

◆ containerSize

CRect containerSize
protected

◆ hsb

CScrollbar* hsb
protected

◆ recalculateSubViewsRecursionGard

bool recalculateSubViewsRecursionGard {false}
protected

◆ sc

CScrollContainer* sc
protected

◆ scrollbarWidth

CCoord scrollbarWidth
protected

◆ style

int32_t style
protected

◆ vsb

CScrollbar* vsb
protected

The documentation for this class was generated from the following files: