JUCE  v5.1.1-3-g1a0b28c73
JUCE API
ComponentBoundsConstrainer Class Reference

A class that imposes restrictions on a Component's size or position. More...

#include <juce_ComponentBoundsConstrainer.h>

Collaboration diagram for ComponentBoundsConstrainer:

Public Member Functions

 ComponentBoundsConstrainer () noexcept
 When first created, the object will not impose any restrictions on the components. More...
 
virtual ~ComponentBoundsConstrainer ()
 Destructor. More...
 
virtual void applyBoundsToComponent (Component &, Rectangle< int > bounds)
 Called by setBoundsForComponent() to apply a new constrained size to a component. More...
 
virtual void checkBounds (Rectangle< int > &bounds, const Rectangle< int > &previousBounds, const Rectangle< int > &limits, bool isStretchingTop, bool isStretchingLeft, bool isStretchingBottom, bool isStretchingRight)
 This callback changes the given coordinates to impose whatever the current constraints are set to be. More...
 
void checkComponentBounds (Component *component)
 Performs a check on the current size of a component, and moves or resizes it if it fails the constraints. More...
 
double getFixedAspectRatio () const noexcept
 Returns the aspect ratio that was set with setFixedAspectRatio(). More...
 
int getMaximumHeight () const noexcept
 Returns the current maximum height. More...
 
int getMaximumWidth () const noexcept
 Returns the current maximum width. More...
 
int getMinimumHeight () const noexcept
 Returns the current minimum height. More...
 
int getMinimumWhenOffTheBottom () const noexcept
 Returns the minimum distance the bounds can be off-screen. More...
 
int getMinimumWhenOffTheLeft () const noexcept
 Returns the minimum distance the bounds can be off-screen. More...
 
int getMinimumWhenOffTheRight () const noexcept
 Returns the minimum distance the bounds can be off-screen. More...
 
int getMinimumWhenOffTheTop () const noexcept
 Returns the minimum distance the bounds can be off-screen. More...
 
int getMinimumWidth () const noexcept
 Returns the current minimum width. More...
 
virtual void resizeEnd ()
 This callback happens when the resizer has finished dragging. More...
 
virtual void resizeStart ()
 This callback happens when the resizer is about to start dragging. More...
 
void setBoundsForComponent (Component *component, Rectangle< int > bounds, bool isStretchingTop, bool isStretchingLeft, bool isStretchingBottom, bool isStretchingRight)
 Checks the given bounds, and then sets the component to the corrected size. More...
 
void setFixedAspectRatio (double widthOverHeight) noexcept
 Specifies a width-to-height ratio that the resizer should always maintain. More...
 
void setMaximumHeight (int maximumHeight) noexcept
 Imposes a maximum height limit. More...
 
void setMaximumSize (int maximumWidth, int maximumHeight) noexcept
 Imposes a maximum width and height limit. More...
 
void setMaximumWidth (int maximumWidth) noexcept
 Imposes a maximum width limit. More...
 
void setMinimumHeight (int minimumHeight) noexcept
 Imposes a minimum height limit. More...
 
void setMinimumOnscreenAmounts (int minimumWhenOffTheTop, int minimumWhenOffTheLeft, int minimumWhenOffTheBottom, int minimumWhenOffTheRight) noexcept
 Sets the amount by which the component is allowed to go off-screen. More...
 
void setMinimumSize (int minimumWidth, int minimumHeight) noexcept
 Imposes a minimum width and height limit. More...
 
void setMinimumWidth (int minimumWidth) noexcept
 Imposes a minimum width limit. More...
 
void setSizeLimits (int minimumWidth, int minimumHeight, int maximumWidth, int maximumHeight) noexcept
 Set all the maximum and minimum dimensions. More...
 

Private Attributes

double aspectRatio = 0
 
int maxH = 0x3fffffff
 
int maxW = 0x3fffffff
 
int minH = 0
 
int minOffBottom = 0
 
int minOffLeft = 0
 
int minOffRight = 0
 
int minOffTop = 0
 
int minW = 0
 

Detailed Description

A class that imposes restrictions on a Component's size or position.

This is used by classes such as ResizableCornerComponent, ResizableBorderComponent and ResizableWindow.

The base class can impose some basic size and position limits, but you can also subclass this for custom uses.

See also
ResizableCornerComponent, ResizableBorderComponent, ResizableWindow

Constructor & Destructor Documentation

◆ ComponentBoundsConstrainer()

ComponentBoundsConstrainer::ComponentBoundsConstrainer ( )
noexcept

When first created, the object will not impose any restrictions on the components.

◆ ~ComponentBoundsConstrainer()

virtual ComponentBoundsConstrainer::~ComponentBoundsConstrainer ( )
virtual

Destructor.

Member Function Documentation

◆ applyBoundsToComponent()

virtual void ComponentBoundsConstrainer::applyBoundsToComponent ( Component ,
Rectangle< int bounds 
)
virtual

Called by setBoundsForComponent() to apply a new constrained size to a component.

By default this just calls setBounds(), but is virtual in case it's needed for extremely cunning purposes.

◆ checkBounds()

virtual void ComponentBoundsConstrainer::checkBounds ( Rectangle< int > &  bounds,
const Rectangle< int > &  previousBounds,
const Rectangle< int > &  limits,
bool  isStretchingTop,
bool  isStretchingLeft,
bool  isStretchingBottom,
bool  isStretchingRight 
)
virtual

This callback changes the given coordinates to impose whatever the current constraints are set to be.

Parameters
boundsthe target position that should be examined and adjusted
previousBoundsthe component's current size
limitsthe region in which the component can be positioned
isStretchingTopwhether the top edge of the component is being resized
isStretchingLeftwhether the left edge of the component is being resized
isStretchingBottomwhether the bottom edge of the component is being resized
isStretchingRightwhether the right edge of the component is being resized

◆ checkComponentBounds()

void ComponentBoundsConstrainer::checkComponentBounds ( Component component)

Performs a check on the current size of a component, and moves or resizes it if it fails the constraints.

◆ getFixedAspectRatio()

double ComponentBoundsConstrainer::getFixedAspectRatio ( ) const
noexcept

Returns the aspect ratio that was set with setFixedAspectRatio().

If no aspect ratio is being enforced, this will return 0.

◆ getMaximumHeight()

int ComponentBoundsConstrainer::getMaximumHeight ( ) const
inlinenoexcept

Returns the current maximum height.

◆ getMaximumWidth()

int ComponentBoundsConstrainer::getMaximumWidth ( ) const
inlinenoexcept

Returns the current maximum width.

◆ getMinimumHeight()

int ComponentBoundsConstrainer::getMinimumHeight ( ) const
inlinenoexcept

Returns the current minimum height.

◆ getMinimumWhenOffTheBottom()

int ComponentBoundsConstrainer::getMinimumWhenOffTheBottom ( ) const
inlinenoexcept

Returns the minimum distance the bounds can be off-screen.

See also
setMinimumOnscreenAmounts

◆ getMinimumWhenOffTheLeft()

int ComponentBoundsConstrainer::getMinimumWhenOffTheLeft ( ) const
inlinenoexcept

Returns the minimum distance the bounds can be off-screen.

See also
setMinimumOnscreenAmounts

◆ getMinimumWhenOffTheRight()

int ComponentBoundsConstrainer::getMinimumWhenOffTheRight ( ) const
inlinenoexcept

Returns the minimum distance the bounds can be off-screen.

See also
setMinimumOnscreenAmounts

◆ getMinimumWhenOffTheTop()

int ComponentBoundsConstrainer::getMinimumWhenOffTheTop ( ) const
inlinenoexcept

Returns the minimum distance the bounds can be off-screen.

See also
setMinimumOnscreenAmounts

◆ getMinimumWidth()

int ComponentBoundsConstrainer::getMinimumWidth ( ) const
inlinenoexcept

Returns the current minimum width.

◆ resizeEnd()

virtual void ComponentBoundsConstrainer::resizeEnd ( )
virtual

This callback happens when the resizer has finished dragging.

◆ resizeStart()

virtual void ComponentBoundsConstrainer::resizeStart ( )
virtual

This callback happens when the resizer is about to start dragging.

◆ setBoundsForComponent()

void ComponentBoundsConstrainer::setBoundsForComponent ( Component component,
Rectangle< int bounds,
bool  isStretchingTop,
bool  isStretchingLeft,
bool  isStretchingBottom,
bool  isStretchingRight 
)

Checks the given bounds, and then sets the component to the corrected size.

◆ setFixedAspectRatio()

void ComponentBoundsConstrainer::setFixedAspectRatio ( double  widthOverHeight)
noexcept

Specifies a width-to-height ratio that the resizer should always maintain.

If the value is 0, no aspect ratio is enforced. If it's non-zero, the width will always be maintained as this multiple of the height.

See also
setResizeLimits

◆ setMaximumHeight()

void ComponentBoundsConstrainer::setMaximumHeight ( int  maximumHeight)
noexcept

Imposes a maximum height limit.

◆ setMaximumSize()

void ComponentBoundsConstrainer::setMaximumSize ( int  maximumWidth,
int  maximumHeight 
)
noexcept

Imposes a maximum width and height limit.

◆ setMaximumWidth()

void ComponentBoundsConstrainer::setMaximumWidth ( int  maximumWidth)
noexcept

Imposes a maximum width limit.

◆ setMinimumHeight()

void ComponentBoundsConstrainer::setMinimumHeight ( int  minimumHeight)
noexcept

Imposes a minimum height limit.

◆ setMinimumOnscreenAmounts()

void ComponentBoundsConstrainer::setMinimumOnscreenAmounts ( int  minimumWhenOffTheTop,
int  minimumWhenOffTheLeft,
int  minimumWhenOffTheBottom,
int  minimumWhenOffTheRight 
)
noexcept

Sets the amount by which the component is allowed to go off-screen.

The values indicate how many pixels must remain on-screen when dragged off one of its parent's edges, so e.g. if minimumWhenOffTheTop is set to 10, then when the component goes off the top of the screen, its y-position will be clipped so that there are always at least 10 pixels on-screen. In other words, the lowest y-position it can take would be (10 - the component's height).

If you pass 0 or less for one of these amounts, the component is allowed to move beyond that edge completely, with no restrictions at all.

If you pass a very large number (i.e. larger that the dimensions of the component itself), then the component won't be allowed to overlap that edge at all. So e.g. setting minimumWhenOffTheLeft to 0xffffff will mean that the component will bump into the left side of the screen and go no further.

◆ setMinimumSize()

void ComponentBoundsConstrainer::setMinimumSize ( int  minimumWidth,
int  minimumHeight 
)
noexcept

Imposes a minimum width and height limit.

◆ setMinimumWidth()

void ComponentBoundsConstrainer::setMinimumWidth ( int  minimumWidth)
noexcept

Imposes a minimum width limit.

◆ setSizeLimits()

void ComponentBoundsConstrainer::setSizeLimits ( int  minimumWidth,
int  minimumHeight,
int  maximumWidth,
int  maximumHeight 
)
noexcept

Set all the maximum and minimum dimensions.

Member Data Documentation

◆ aspectRatio

double ComponentBoundsConstrainer::aspectRatio = 0
private

◆ maxH

int ComponentBoundsConstrainer::maxH = 0x3fffffff
private

◆ maxW

int ComponentBoundsConstrainer::maxW = 0x3fffffff
private

◆ minH

int ComponentBoundsConstrainer::minH = 0
private

◆ minOffBottom

int ComponentBoundsConstrainer::minOffBottom = 0
private

◆ minOffLeft

int ComponentBoundsConstrainer::minOffLeft = 0
private

◆ minOffRight

int ComponentBoundsConstrainer::minOffRight = 0
private

◆ minOffTop

int ComponentBoundsConstrainer::minOffTop = 0
private

◆ minW

int ComponentBoundsConstrainer::minW = 0
private

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