LMMS
Loading...
Searching...
No Matches
juce::ComponentBoundsConstrainer Class Reference

#include <juce_ComponentBoundsConstrainer.h>

Public Member Functions

 ComponentBoundsConstrainer () noexcept
virtual ~ComponentBoundsConstrainer ()
void setMinimumWidth (int minimumWidth) noexcept
int getMinimumWidth () const noexcept
void setMaximumWidth (int maximumWidth) noexcept
int getMaximumWidth () const noexcept
void setMinimumHeight (int minimumHeight) noexcept
int getMinimumHeight () const noexcept
void setMaximumHeight (int maximumHeight) noexcept
int getMaximumHeight () const noexcept
void setMinimumSize (int minimumWidth, int minimumHeight) noexcept
void setMaximumSize (int maximumWidth, int maximumHeight) noexcept
void setSizeLimits (int minimumWidth, int minimumHeight, int maximumWidth, int maximumHeight) noexcept
void setMinimumOnscreenAmounts (int minimumWhenOffTheTop, int minimumWhenOffTheLeft, int minimumWhenOffTheBottom, int minimumWhenOffTheRight) noexcept
int getMinimumWhenOffTheTop () const noexcept
int getMinimumWhenOffTheLeft () const noexcept
int getMinimumWhenOffTheBottom () const noexcept
int getMinimumWhenOffTheRight () const noexcept
void setFixedAspectRatio (double widthOverHeight) noexcept
double getFixedAspectRatio () const noexcept
virtual void checkBounds (Rectangle< int > &bounds, const Rectangle< int > &previousBounds, const Rectangle< int > &limits, bool isStretchingTop, bool isStretchingLeft, bool isStretchingBottom, bool isStretchingRight)
virtual void resizeStart ()
virtual void resizeEnd ()
void setBoundsForComponent (Component *component, Rectangle< int > bounds, bool isStretchingTop, bool isStretchingLeft, bool isStretchingBottom, bool isStretchingRight)
void checkComponentBounds (Component *component)
virtual void applyBoundsToComponent (Component &, Rectangle< int > bounds)

Private Attributes

int minW = 0
int maxW = 0x3fffffff
int minH = 0
int maxH = 0x3fffffff
int minOffTop = 0
int minOffLeft = 0
int minOffBottom = 0
int minOffRight = 0
double aspectRatio = 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

@tags{GUI}

Constructor & Destructor Documentation

◆ ComponentBoundsConstrainer()

juce::ComponentBoundsConstrainer::ComponentBoundsConstrainer ( )
noexcept

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

◆ ~ComponentBoundsConstrainer()

juce::ComponentBoundsConstrainer::~ComponentBoundsConstrainer ( )
virtual

Destructor.

Member Function Documentation

◆ applyBoundsToComponent()

void juce::ComponentBoundsConstrainer::applyBoundsToComponent ( Component & 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()

void juce::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 juce::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 juce::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 juce::ComponentBoundsConstrainer::getMaximumHeight ( ) const
inlinenoexcept

Returns the current maximum height.

◆ getMaximumWidth()

int juce::ComponentBoundsConstrainer::getMaximumWidth ( ) const
inlinenoexcept

Returns the current maximum width.

◆ getMinimumHeight()

int juce::ComponentBoundsConstrainer::getMinimumHeight ( ) const
inlinenoexcept

Returns the current minimum height.

◆ getMinimumWhenOffTheBottom()

int juce::ComponentBoundsConstrainer::getMinimumWhenOffTheBottom ( ) const
inlinenoexcept

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

See also
setMinimumOnscreenAmounts

◆ getMinimumWhenOffTheLeft()

int juce::ComponentBoundsConstrainer::getMinimumWhenOffTheLeft ( ) const
inlinenoexcept

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

See also
setMinimumOnscreenAmounts

◆ getMinimumWhenOffTheRight()

int juce::ComponentBoundsConstrainer::getMinimumWhenOffTheRight ( ) const
inlinenoexcept

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

See also
setMinimumOnscreenAmounts

◆ getMinimumWhenOffTheTop()

int juce::ComponentBoundsConstrainer::getMinimumWhenOffTheTop ( ) const
inlinenoexcept

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

See also
setMinimumOnscreenAmounts

◆ getMinimumWidth()

int juce::ComponentBoundsConstrainer::getMinimumWidth ( ) const
inlinenoexcept

Returns the current minimum width.

◆ resizeEnd()

void juce::ComponentBoundsConstrainer::resizeEnd ( )
virtual

This callback happens when the resizer has finished dragging.

◆ resizeStart()

void juce::ComponentBoundsConstrainer::resizeStart ( )
virtual

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

◆ setBoundsForComponent()

void juce::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 juce::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 juce::ComponentBoundsConstrainer::setMaximumHeight ( int maximumHeight)
noexcept

Imposes a maximum height limit.

◆ setMaximumSize()

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

Imposes a maximum width and height limit.

◆ setMaximumWidth()

void juce::ComponentBoundsConstrainer::setMaximumWidth ( int maximumWidth)
noexcept

Imposes a maximum width limit.

◆ setMinimumHeight()

void juce::ComponentBoundsConstrainer::setMinimumHeight ( int minimumHeight)
noexcept

Imposes a minimum height limit.

◆ setMinimumOnscreenAmounts()

void juce::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 juce::ComponentBoundsConstrainer::setMinimumSize ( int minimumWidth,
int minimumHeight )
noexcept

Imposes a minimum width and height limit.

◆ setMinimumWidth()

void juce::ComponentBoundsConstrainer::setMinimumWidth ( int minimumWidth)
noexcept

Imposes a minimum width limit.

◆ setSizeLimits()

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

Set all the maximum and minimum dimensions.

Member Data Documentation

◆ aspectRatio

double juce::ComponentBoundsConstrainer::aspectRatio = 0
private

◆ maxH

int juce::ComponentBoundsConstrainer::maxH = 0x3fffffff
private

◆ maxW

int juce::ComponentBoundsConstrainer::maxW = 0x3fffffff
private

◆ minH

int juce::ComponentBoundsConstrainer::minH = 0
private

◆ minOffBottom

int juce::ComponentBoundsConstrainer::minOffBottom = 0
private

◆ minOffLeft

int juce::ComponentBoundsConstrainer::minOffLeft = 0
private

◆ minOffRight

int juce::ComponentBoundsConstrainer::minOffRight = 0
private

◆ minOffTop

int juce::ComponentBoundsConstrainer::minOffTop = 0
private

◆ minW

int juce::ComponentBoundsConstrainer::minW = 0
private

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