/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited JUCE is an open source library subject to commercial or open-source licensing. By using JUCE, you agree to the terms of both the JUCE 7 End-User License Agreement and JUCE Privacy Policy. End User License Agreement: www.juce.com/juce-7-licence Privacy Policy: www.juce.com/juce-privacy-policy Or: You may also use this code under the terms of the GPL v3 (see www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE DISCLAIMED. ============================================================================== */ namespace juce { DrawableRectangle::DrawableRectangle() {} DrawableRectangle::~DrawableRectangle() {} DrawableRectangle::DrawableRectangle (const DrawableRectangle& other) : DrawableShape (other), bounds (other.bounds), cornerSize (other.cornerSize) { rebuildPath(); } std::unique_ptr DrawableRectangle::createCopy() const { return std::make_unique (*this); } //============================================================================== void DrawableRectangle::setRectangle (Parallelogram newBounds) { if (bounds != newBounds) { bounds = newBounds; rebuildPath(); } } void DrawableRectangle::setCornerSize (Point newSize) { if (cornerSize != newSize) { cornerSize = newSize; rebuildPath(); } } void DrawableRectangle::rebuildPath() { auto w = bounds.getWidth(); auto h = bounds.getHeight(); Path newPath; if (cornerSize.x > 0 && cornerSize.y > 0) newPath.addRoundedRectangle (0, 0, w, h, cornerSize.x, cornerSize.y); else newPath.addRectangle (0, 0, w, h); newPath.applyTransform (AffineTransform::fromTargetPoints (Point(), bounds.topLeft, Point (w, 0), bounds.topRight, Point (0, h), bounds.bottomLeft)); if (path != newPath) { path.swapWithPath (newPath); pathChanged(); } } } // namespace juce