void ComponentOverlayComponent::checkBounds (Rectangle<int>& b, const Rectangle<int>& previousBounds, const Rectangle<int>& limits, const bool isStretchingTop, const bool isStretchingLeft, const bool isStretchingBottom, const bool isStretchingRight) { if (ModifierKeys::getCurrentModifiers().isShiftDown()) setFixedAspectRatio (originalAspectRatio); else setFixedAspectRatio (0.0); ComponentBoundsConstrainer::checkBounds (b, previousBounds, limits, isStretchingTop, isStretchingLeft, isStretchingBottom, isStretchingRight); if (layout.getDocument()->isSnapActive (true)) { if (Component* const parent = target->getParentComponent()) { const int dx = parent->getX(); const int dy = parent->getY(); int x = b.getX(); int y = b.getY(); int w = b.getWidth(); int h = b.getHeight(); x += borderThickness - dx; y += borderThickness - dy; w -= borderThickness * 2; h -= borderThickness * 2; int right = x + w; int bottom = y + h; if (isStretchingRight) right = layout.getDocument()->snapPosition (right); if (isStretchingBottom) bottom = layout.getDocument()->snapPosition (bottom); if (isStretchingLeft) x = layout.getDocument()->snapPosition (x); if (isStretchingTop) y = layout.getDocument()->snapPosition (y); w = (right - x) + borderThickness * 2; h = (bottom - y) + borderThickness * 2; x -= borderThickness - dx; y -= borderThickness - dy; b = Rectangle<int> (x, y, w, h); } } }
void PaintElement::checkBounds (Rectangle<int>& b, const Rectangle<int>& previousBounds, const Rectangle<int>& limits, const bool isStretchingTop, const bool isStretchingLeft, const bool isStretchingBottom, const bool isStretchingRight) { if (ModifierKeys::getCurrentModifiers().isShiftDown()) setFixedAspectRatio (originalAspectRatio); else setFixedAspectRatio (0.0); ComponentBoundsConstrainer::checkBounds (b, previousBounds, limits, isStretchingTop, isStretchingLeft, isStretchingBottom, isStretchingRight); JucerDocument* document = getDocument(); if (document != nullptr && document->isSnapActive (true)) { jassert (getParentComponent() != nullptr); const Rectangle<int> area (((PaintRoutineEditor*) getParentComponent())->getComponentArea()); int x = b.getX(); int y = b.getY(); int w = b.getWidth(); int h = b.getHeight(); x += borderThickness - area.getX(); y += borderThickness - area.getY(); w -= borderThickness * 2; h -= borderThickness * 2; int right = x + w; int bottom = y + h; if (isStretchingRight) right = document->snapPosition (right); if (isStretchingBottom) bottom = document->snapPosition (bottom); if (isStretchingLeft) x = document->snapPosition (x); if (isStretchingTop) y = document->snapPosition (y); w = (right - x) + borderThickness * 2; h = (bottom - y) + borderThickness * 2; x -= borderThickness - area.getX(); y -= borderThickness - area.getY(); b = Rectangle<int> (x, y, w, h); } }
/** * Set the aspect ratio mode. * Some state types have a fixed aspect ratio */ void StateWidget::setAspectRatioMode() { switch (m_stateType) { case StateWidget::Initial: case StateWidget::End: case StateWidget::Choice: case StateWidget::DeepHistory: case StateWidget::ShallowHistory: case StateWidget::Fork: case StateWidget::Join: case StateWidget::Junction: setFixedAspectRatio(true); break; default: setFixedAspectRatio(false); break; } }