diff --git a/extras/Jucer (experimental)/Source/model/jucer_ComponentDocument.cpp b/extras/Jucer (experimental)/Source/model/jucer_ComponentDocument.cpp index c990a265bf..626071e1ad 100644 --- a/extras/Jucer (experimental)/Source/model/jucer_ComponentDocument.cpp +++ b/extras/Jucer (experimental)/Source/model/jucer_ComponentDocument.cpp @@ -364,6 +364,21 @@ public: void resize (ValueTree& v, const Point& distance, const Rectangle& originalPos) { + Rectangle r (originalPos); + + if ((zones & zoneL) != 0) + r.setLeft (r.getX() + distance.getX()); + + if ((zones & zoneT) != 0) + r.setTop (r.getY() + distance.getY()); + + if ((zones & zoneR) != 0) + r.setWidth (r.getWidth() + distance.getX()); + + if ((zones & zoneB) != 0) + r.setHeight (r.getHeight() + distance.getY()); + + v.setProperty (compBoundsProperty, componentBoundsToString (r), document.getUndoManager()); } private: diff --git a/extras/Jucer (experimental)/Source/ui/Component Editor/jucer_ComponentEditor.cpp b/extras/Jucer (experimental)/Source/ui/Component Editor/jucer_ComponentEditor.cpp index 7a79b73192..0f4d81496b 100644 --- a/extras/Jucer (experimental)/Source/ui/Component Editor/jucer_ComponentEditor.cpp +++ b/extras/Jucer (experimental)/Source/ui/Component Editor/jucer_ComponentEditor.cpp @@ -153,12 +153,12 @@ private: ComponentEditor& editor; //============================================================================== - class ComponentSelectorFrame : public Component, - public ComponentListener + class ComponentResizeFrame : public Component, + public ComponentListener { public: - ComponentSelectorFrame (ComponentCanvas& canvas_, - Component* componentToAttachTo) + ComponentResizeFrame (ComponentCanvas& canvas_, + Component* componentToAttachTo) : canvas (canvas_), component (componentToAttachTo), borderThickness (4) @@ -167,7 +167,7 @@ private: componentToAttachTo->addComponentListener (this); } - ~ComponentSelectorFrame() + ~ComponentResizeFrame() { if (component != 0) component->removeComponentListener (this); @@ -181,13 +181,13 @@ private: void mouseEnter (const MouseEvent& e) { - repaint(); + //repaint(); updateDragZone (e.getPosition()); } void mouseExit (const MouseEvent& e) { - repaint(); + //repaint(); updateDragZone (e.getPosition()); } @@ -227,8 +227,9 @@ private: setBounds (component->getBounds().expanded (borderThickness, borderThickness)); } - void resized() + bool hitTest (int x, int y) { + return ! getCentreArea().contains (x, y); } uint32 getTargetComponentUID() const { return component == 0 ? 0 : component->getComponentUID(); } @@ -239,14 +240,16 @@ private: int dragZone; const int borderThickness; + const Rectangle getCentreArea() const + { + return Rectangle (0, 0, getWidth(), getHeight()).reduced (borderThickness, borderThickness); + } + void updateDragZone (const Point& p) { int newZone = 0; - Rectangle r (0, 0, getWidth(), getHeight()); - r = r.reduced (borderThickness, borderThickness); - - if (! r.contains (p)) + if (! getCentreArea().contains (p)) { const int bw = jmax (borderThickness, proportionOfWidth (0.1f), jmin (10, proportionOfWidth (0.33f))); const int bh = jmax (borderThickness, proportionOfHeight (0.1f), jmin (10, proportionOfHeight (0.33f))); @@ -311,6 +314,8 @@ private: void mouseDown (const MouseEvent& e) { lasso = 0; + mouseDownCompUID = 0; + isDraggingClickedComp = false; if (e.mods.isPopupMenu()) { @@ -343,7 +348,20 @@ private: void mouseDrag (const MouseEvent& e) { if (lasso != 0) + { lasso->dragLasso (e); + } + else if (mouseDownCompUID != 0 && (! e.mouseWasClicked()) && (! e.mods.isPopupMenu())) + { + if (! isDraggingClickedComp) + { + isDraggingClickedComp = true; + canvas.getSelection().addToSelectionOnMouseUp (mouseDownCompUID, e.mods, true, mouseDownResult); + canvas.getDocument().beginDrag (canvas.getSelectedComps(), e, 0); + } + + canvas.getDocument().continueDrag (e); + } } void mouseUp (const MouseEvent& e) @@ -356,9 +374,10 @@ private: if (e.mouseWasClicked()) canvas.getSelection().deselectAll(); } - else + else if (! e.mods.isPopupMenu()) { - canvas.getSelection().addToSelectionOnMouseUp (mouseDownCompUID, e.mods, ! e.mouseWasClicked(), mouseDownResult); + if (! isDraggingClickedComp) + canvas.getSelection().addToSelectionOnMouseUp (mouseDownCompUID, e.mods, ! e.mouseWasClicked(), mouseDownResult); } } @@ -369,7 +388,7 @@ private: for (int i = canvas.getComponentHolder()->getNumChildComponents(); --i >= 0;) { Component* c = canvas.getComponentHolder()->getChildComponent(i); - if (c != this && c->getBounds().intersects (lassoArea)) + if (c->getBounds().intersects (lassoArea)) itemsFound.add (c->getComponentUID()); } } @@ -378,38 +397,43 @@ private: void changeListenerCallback (void*) { - updateSelectedComponentOverlays(); + updateSelectedComponentResizeFrames(); + } + + void modifierKeysChanged (const ModifierKeys&) + { + Desktop::getInstance().getMainMouseSource().triggerFakeMove(); } private: ComponentCanvas& canvas; ScopedPointer > lasso; - bool mouseDownResult; + bool mouseDownResult, isDraggingClickedComp; uint32 mouseDownCompUID; - ComponentSelectorFrame* getSelectorFrameFor (Component* c) const + ComponentResizeFrame* getSelectorFrameFor (Component* c) const { for (int i = getNumChildComponents(); --i >= 0;) { - ComponentSelectorFrame* overlay = dynamic_cast (getChildComponent(i)); - if (overlay != 0 && overlay->getTargetComponentUID() == c->getComponentUID()) - return overlay; + ComponentResizeFrame* resizer = dynamic_cast (getChildComponent(i)); + if (resizer != 0 && resizer->getTargetComponentUID() == c->getComponentUID()) + return resizer; } return 0; } - void updateSelectedComponentOverlays() + void updateSelectedComponentResizeFrames() { ComponentDocument::SelectedItems& selection = canvas.getSelection(); int i; for (i = getNumChildComponents(); --i >= 0;) { - ComponentSelectorFrame* overlay = dynamic_cast (getChildComponent(i)); + ComponentResizeFrame* resizer = dynamic_cast (getChildComponent(i)); - if (overlay != 0 && ! selection.isSelected (overlay->getTargetComponentUID())) - delete overlay; + if (resizer != 0 && ! selection.isSelected (resizer->getTargetComponentUID())) + delete resizer; } for (i = canvas.getComponentHolder()->getNumChildComponents(); --i >= 0;) @@ -417,7 +441,7 @@ private: Component* c = canvas.getComponentHolder()->getChildComponent(i); if (c != this && selection.isSelected (c->getComponentUID()) && getSelectorFrameFor (c) == 0) - addAndMakeVisible (new ComponentSelectorFrame (canvas, c)); + addAndMakeVisible (new ComponentResizeFrame (canvas, c)); } } }; @@ -428,7 +452,7 @@ private: Component* getComponentForUID (const uint32 uid) const { - for (int i = getNumChildComponents(); --i >= 0;) + for (int i = componentHolder->getNumChildComponents(); --i >= 0;) if (componentHolder->getChildComponent (i)->getComponentUID() == uid) return componentHolder->getChildComponent (i); diff --git a/juce_amalgamated.cpp b/juce_amalgamated.cpp index 9c36125b88..7da0e2b63e 100644 --- a/juce_amalgamated.cpp +++ b/juce_amalgamated.cpp @@ -79614,7 +79614,7 @@ LowLevelGraphicsContext::~LowLevelGraphicsContext() { } -Graphics::Graphics (Image& imageToDrawOnto) throw() +Graphics::Graphics (Image& imageToDrawOnto) : context (imageToDrawOnto.createLowLevelContext()), contextToDelete (context), saveStatePending (false) @@ -79627,11 +79627,11 @@ Graphics::Graphics (LowLevelGraphicsContext* const internalContext) throw() { } -Graphics::~Graphics() throw() +Graphics::~Graphics() { } -void Graphics::resetToDefaultState() throw() +void Graphics::resetToDefaultState() { saveStateIfPending(); context->setFill (FillType()); @@ -79639,61 +79639,60 @@ void Graphics::resetToDefaultState() throw() context->setInterpolationQuality (defaultQuality); } -bool Graphics::isVectorDevice() const throw() +bool Graphics::isVectorDevice() const { return context->isVectorDevice(); } -bool Graphics::reduceClipRegion (const int x, const int y, - const int w, const int h) throw() +bool Graphics::reduceClipRegion (const int x, const int y, const int w, const int h) { saveStateIfPending(); return context->clipToRectangle (Rectangle (x, y, w, h)); } -bool Graphics::reduceClipRegion (const RectangleList& clipRegion) throw() +bool Graphics::reduceClipRegion (const RectangleList& clipRegion) { saveStateIfPending(); return context->clipToRectangleList (clipRegion); } -bool Graphics::reduceClipRegion (const Path& path, const AffineTransform& transform) throw() +bool Graphics::reduceClipRegion (const Path& path, const AffineTransform& transform) { saveStateIfPending(); context->clipToPath (path, transform); return ! context->isClipEmpty(); } -bool Graphics::reduceClipRegion (const Image& image, const Rectangle& sourceClipRegion, const AffineTransform& transform) throw() +bool Graphics::reduceClipRegion (const Image& image, const Rectangle& sourceClipRegion, const AffineTransform& transform) { saveStateIfPending(); context->clipToImageAlpha (image, sourceClipRegion, transform); return ! context->isClipEmpty(); } -void Graphics::excludeClipRegion (const Rectangle& rectangleToExclude) throw() +void Graphics::excludeClipRegion (const Rectangle& rectangleToExclude) { saveStateIfPending(); context->excludeClipRectangle (rectangleToExclude); } -bool Graphics::isClipEmpty() const throw() +bool Graphics::isClipEmpty() const { return context->isClipEmpty(); } -const Rectangle Graphics::getClipBounds() const throw() +const Rectangle Graphics::getClipBounds() const { return context->getClipBounds(); } -void Graphics::saveState() throw() +void Graphics::saveState() { saveStateIfPending(); saveStatePending = true; } -void Graphics::restoreState() throw() +void Graphics::restoreState() { if (saveStatePending) saveStatePending = false; @@ -79701,7 +79700,7 @@ void Graphics::restoreState() throw() context->restoreState(); } -void Graphics::saveStateIfPending() throw() +void Graphics::saveStateIfPending() { if (saveStatePending) { @@ -79710,61 +79709,54 @@ void Graphics::saveStateIfPending() throw() } } -void Graphics::setOrigin (const int newOriginX, - const int newOriginY) throw() +void Graphics::setOrigin (const int newOriginX, const int newOriginY) { saveStateIfPending(); context->setOrigin (newOriginX, newOriginY); } -bool Graphics::clipRegionIntersects (const int x, const int y, - const int w, const int h) const throw() +bool Graphics::clipRegionIntersects (const int x, const int y, const int w, const int h) const { return context->clipRegionIntersects (Rectangle (x, y, w, h)); } -void Graphics::setColour (const Colour& newColour) throw() +void Graphics::setColour (const Colour& newColour) { saveStateIfPending(); - context->setFill (FillType (newColour)); + context->setFill (newColour); } -void Graphics::setOpacity (const float newOpacity) throw() +void Graphics::setOpacity (const float newOpacity) { saveStateIfPending(); context->setOpacity (newOpacity); } -void Graphics::setGradientFill (const ColourGradient& gradient) throw() +void Graphics::setGradientFill (const ColourGradient& gradient) { - saveStateIfPending(); - context->setFill (FillType (gradient)); + setFillType (gradient); } -void Graphics::setTiledImageFill (const Image& imageToUse, - const int anchorX, - const int anchorY, - const float opacity) throw() +void Graphics::setTiledImageFill (const Image& imageToUse, const int anchorX, const int anchorY, const float opacity) { saveStateIfPending(); context->setFill (FillType (imageToUse, AffineTransform::translation ((float) anchorX, (float) anchorY))); context->setOpacity (opacity); } -void Graphics::setFillType (const FillType& newFill) throw() +void Graphics::setFillType (const FillType& newFill) { saveStateIfPending(); context->setFill (newFill); } -void Graphics::setFont (const Font& newFont) throw() +void Graphics::setFont (const Font& newFont) { saveStateIfPending(); context->setFont (newFont); } -void Graphics::setFont (const float newFontHeight, - const int newFontStyleFlags) throw() +void Graphics::setFont (const float newFontHeight, const int newFontStyleFlags) { saveStateIfPending(); Font f (context->getFont()); @@ -79772,9 +79764,7 @@ void Graphics::setFont (const float newFontHeight, context->setFont (f); } -void Graphics::drawSingleLineText (const String& text, - const int startX, - const int baselineY) const throw() +void Graphics::drawSingleLineText (const String& text, const int startX, const int baselineY) const { if (text.isNotEmpty() && startX < context->getClipBounds().getRight()) @@ -79785,8 +79775,7 @@ void Graphics::drawSingleLineText (const String& text, } } -void Graphics::drawTextAsPath (const String& text, - const AffineTransform& transform) const throw() +void Graphics::drawTextAsPath (const String& text, const AffineTransform& transform) const { if (text.isNotEmpty()) { @@ -79796,10 +79785,7 @@ void Graphics::drawTextAsPath (const String& text, } } -void Graphics::drawMultiLineText (const String& text, - const int startX, - const int baselineY, - const int maximumLineWidth) const throw() +void Graphics::drawMultiLineText (const String& text, const int startX, const int baselineY, const int maximumLineWidth) const { if (text.isNotEmpty() && startX < context->getClipBounds().getRight()) @@ -79813,37 +79799,30 @@ void Graphics::drawMultiLineText (const String& text, } void Graphics::drawText (const String& text, - const int x, - const int y, - const int width, - const int height, + const int x, const int y, const int width, const int height, const Justification& justificationType, - const bool useEllipsesIfTooBig) const throw() + const bool useEllipsesIfTooBig) const { if (text.isNotEmpty() && context->clipRegionIntersects (Rectangle (x, y, width, height))) { GlyphArrangement arr; arr.addCurtailedLineOfText (context->getFont(), text, - 0.0f, 0.0f, (float)width, + 0.0f, 0.0f, (float) width, useEllipsesIfTooBig); arr.justifyGlyphs (0, arr.getNumGlyphs(), - (float) x, (float) y, - (float) width, (float) height, + (float) x, (float) y, (float) width, (float) height, justificationType); arr.draw (*this); } } void Graphics::drawFittedText (const String& text, - const int x, - const int y, - const int width, - const int height, + const int x, const int y, const int width, const int height, const Justification& justification, const int maximumNumberOfLines, - const float minimumHorizontalScale) const throw() + const float minimumHorizontalScale) const { if (text.isNotEmpty() && width > 0 && height > 0 @@ -79852,8 +79831,7 @@ void Graphics::drawFittedText (const String& text, GlyphArrangement arr; arr.addFittedText (context->getFont(), text, - (float) x, (float) y, - (float) width, (float) height, + (float) x, (float) y, (float) width, (float) height, justification, maximumNumberOfLines, minimumHorizontalScale); @@ -79862,10 +79840,7 @@ void Graphics::drawFittedText (const String& text, } } -void Graphics::fillRect (int x, - int y, - int width, - int height) const throw() +void Graphics::fillRect (int x, int y, int width, int height) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (x, y, width, height)); @@ -79873,15 +79848,12 @@ void Graphics::fillRect (int x, context->fillRect (Rectangle (x, y, width, height), false); } -void Graphics::fillRect (const Rectangle& r) const throw() +void Graphics::fillRect (const Rectangle& r) const { context->fillRect (r, false); } -void Graphics::fillRect (const float x, - const float y, - const float width, - const float height) const throw() +void Graphics::fillRect (const float x, const float y, const float width, const float height) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (x, y, width, height)); @@ -79891,31 +79863,30 @@ void Graphics::fillRect (const float x, fillPath (p); } -void Graphics::setPixel (int x, int y) const throw() +void Graphics::setPixel (int x, int y) const { context->fillRect (Rectangle (x, y, 1, 1), false); } -void Graphics::fillAll() const throw() +void Graphics::fillAll() const { fillRect (context->getClipBounds()); } -void Graphics::fillAll (const Colour& colourToUse) const throw() +void Graphics::fillAll (const Colour& colourToUse) const { if (! colourToUse.isTransparent()) { const Rectangle clip (context->getClipBounds()); context->saveState(); - context->setFill (FillType (colourToUse)); + context->setFill (colourToUse); context->fillRect (clip, false); context->restoreState(); } } -void Graphics::fillPath (const Path& path, - const AffineTransform& transform) const throw() +void Graphics::fillPath (const Path& path, const AffineTransform& transform) const { if ((! context->isClipEmpty()) && ! path.isEmpty()) context->fillPath (path, transform); @@ -79923,18 +79894,15 @@ void Graphics::fillPath (const Path& path, void Graphics::strokePath (const Path& path, const PathStrokeType& strokeType, - const AffineTransform& transform) const throw() + const AffineTransform& transform) const { Path stroke; strokeType.createStrokedPath (stroke, path, transform); fillPath (stroke); } -void Graphics::drawRect (const int x, - const int y, - const int width, - const int height, - const int lineThickness) const throw() +void Graphics::drawRect (const int x, const int y, const int width, const int height, + const int lineThickness) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (x, y, width, height)); @@ -79945,11 +79913,7 @@ void Graphics::drawRect (const int x, context->fillRect (Rectangle (x, y + height - lineThickness, width, lineThickness), false); } -void Graphics::drawRect (const float x, - const float y, - const float width, - const float height, - const float lineThickness) const throw() +void Graphics::drawRect (const float x, const float y, const float width, const float height, const float lineThickness) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (x, y, width, height)); @@ -79962,23 +79926,14 @@ void Graphics::drawRect (const float x, fillPath (p); } -void Graphics::drawRect (const Rectangle& r, - const int lineThickness) const throw() +void Graphics::drawRect (const Rectangle& r, const int lineThickness) const { - drawRect (r.getX(), r.getY(), - r.getWidth(), r.getHeight(), - lineThickness); + drawRect (r.getX(), r.getY(), r.getWidth(), r.getHeight(), lineThickness); } -void Graphics::drawBevel (const int x, - const int y, - const int width, - const int height, - const int bevelThickness, - const Colour& topLeftColour, - const Colour& bottomRightColour, - const bool useGradient, - const bool sharpEdgeOnOutside) const throw() +void Graphics::drawBevel (const int x, const int y, const int width, const int height, + const int bevelThickness, const Colour& topLeftColour, const Colour& bottomRightColour, + const bool useGradient, const bool sharpEdgeOnOutside) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (x, y, width, height)); @@ -79995,13 +79950,13 @@ void Graphics::drawBevel (const int x, const float op = useGradient ? ramp * (sharpEdgeOnOutside ? bevelThickness - i : i) : oldOpacity; - context->setFill (FillType (topLeftColour.withMultipliedAlpha (op))); + context->setFill (topLeftColour.withMultipliedAlpha (op)); context->fillRect (Rectangle (x + i, y + i, width - i * 2, 1), false); - context->setFill (FillType (topLeftColour.withMultipliedAlpha (op * 0.75f))); + context->setFill (topLeftColour.withMultipliedAlpha (op * 0.75f)); context->fillRect (Rectangle (x + i, y + i + 1, 1, height - i * 2 - 2), false); - context->setFill (FillType (bottomRightColour.withMultipliedAlpha (op))); + context->setFill (bottomRightColour.withMultipliedAlpha (op)); context->fillRect (Rectangle (x + i, y + height - i - 1, width - i * 2, 1), false); - context->setFill (FillType (bottomRightColour.withMultipliedAlpha (op * 0.75f))); + context->setFill (bottomRightColour.withMultipliedAlpha (op * 0.75f)); context->fillRect (Rectangle (x + width - i - 1, y + i + 1, 1, height - i * 2 - 2), false); } @@ -80009,10 +79964,7 @@ void Graphics::drawBevel (const int x, } } -void Graphics::fillEllipse (const float x, - const float y, - const float width, - const float height) const throw() +void Graphics::fillEllipse (const float x, const float y, const float width, const float height) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (x, y, width, height)); @@ -80022,11 +79974,8 @@ void Graphics::fillEllipse (const float x, fillPath (p); } -void Graphics::drawEllipse (const float x, - const float y, - const float width, - const float height, - const float lineThickness) const throw() +void Graphics::drawEllipse (const float x, const float y, const float width, const float height, + const float lineThickness) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (x, y, width, height)); @@ -80036,11 +79985,7 @@ void Graphics::drawEllipse (const float x, strokePath (p, PathStrokeType (lineThickness)); } -void Graphics::fillRoundedRectangle (const float x, - const float y, - const float width, - const float height, - const float cornerSize) const throw() +void Graphics::fillRoundedRectangle (const float x, const float y, const float width, const float height, const float cornerSize) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (x, y, width, height)); @@ -80050,22 +79995,13 @@ void Graphics::fillRoundedRectangle (const float x, fillPath (p); } -void Graphics::fillRoundedRectangle (const Rectangle& r, - const float cornerSize) const throw() +void Graphics::fillRoundedRectangle (const Rectangle& r, const float cornerSize) const { - fillRoundedRectangle ((float) r.getX(), - (float) r.getY(), - (float) r.getWidth(), - (float) r.getHeight(), - cornerSize); + fillRoundedRectangle (r.getX(), r.getY(), r.getWidth(), r.getHeight(), cornerSize); } -void Graphics::drawRoundedRectangle (const float x, - const float y, - const float width, - const float height, - const float cornerSize, - const float lineThickness) const throw() +void Graphics::drawRoundedRectangle (const float x, const float y, const float width, const float height, + const float cornerSize, const float lineThickness) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (x, y, width, height)); @@ -80075,24 +80011,13 @@ void Graphics::drawRoundedRectangle (const float x, strokePath (p, PathStrokeType (lineThickness)); } -void Graphics::drawRoundedRectangle (const Rectangle& r, - const float cornerSize, - const float lineThickness) const throw() +void Graphics::drawRoundedRectangle (const Rectangle& r, const float cornerSize, const float lineThickness) const { - drawRoundedRectangle ((float) r.getX(), - (float) r.getY(), - (float) r.getWidth(), - (float) r.getHeight(), - cornerSize, lineThickness); + drawRoundedRectangle (r.getX(), r.getY(), r.getWidth(), r.getHeight(), cornerSize, lineThickness); } -void Graphics::drawArrow (const float startX, - const float startY, - const float endX, - const float endY, - const float lineThickness, - const float arrowheadWidth, - const float arrowheadLength) const throw() +void Graphics::drawArrow (const float startX, const float startY, const float endX, const float endY, + const float lineThickness, const float arrowheadWidth, const float arrowheadLength) const { Path p; p.addArrow (startX, startY, endX, endY, @@ -80100,12 +80025,9 @@ void Graphics::drawArrow (const float startX, fillPath (p); } -void Graphics::fillCheckerBoard (int x, int y, - int width, int height, - const int checkWidth, - const int checkHeight, - const Colour& colour1, - const Colour& colour2) const throw() +void Graphics::fillCheckerBoard (int x, int y, int width, int height, + const int checkWidth, const int checkHeight, + const Colour& colour1, const Colour& colour2) const { jassert (checkWidth > 0 && checkHeight > 0); // can't be zero or less! @@ -80115,7 +80037,7 @@ void Graphics::fillCheckerBoard (int x, int y, if (colour1 == colour2) { - context->setFill (FillType (colour1)); + context->setFill (colour1); context->fillRect (Rectangle (x, y, width, height), false); } else @@ -80132,7 +80054,7 @@ void Graphics::fillCheckerBoard (int x, int y, for (int xx = x; xx < right; xx += checkWidth) { - context->setFill (FillType (((cx++ & 1) == 0) ? colour1 : colour2)); + context->setFill (((cx++ & 1) == 0) ? colour1 : colour2); context->fillRect (Rectangle (xx, y, jmin (checkWidth, right - xx), jmin (checkHeight, bottom - y)), false); } @@ -80146,50 +80068,45 @@ void Graphics::fillCheckerBoard (int x, int y, } } -void Graphics::drawVerticalLine (const int x, float top, float bottom) const throw() +void Graphics::drawVerticalLine (const int x, float top, float bottom) const { context->drawVerticalLine (x, top, bottom); } -void Graphics::drawHorizontalLine (const int y, float left, float right) const throw() +void Graphics::drawHorizontalLine (const int y, float left, float right) const { context->drawHorizontalLine (y, left, right); } -void Graphics::drawLine (float x1, float y1, float x2, float y2) const throw() +void Graphics::drawLine (float x1, float y1, float x2, float y2) const { context->drawLine (x1, y1, x2, y2); } -void Graphics::drawLine (const float startX, - const float startY, - const float endX, - const float endY, - const float lineThickness) const throw() +void Graphics::drawLine (const float startX, const float startY, + const float endX, const float endY, + const float lineThickness) const { Path p; p.addLineSegment (startX, startY, endX, endY, lineThickness); fillPath (p); } -void Graphics::drawLine (const Line& line) const throw() +void Graphics::drawLine (const Line& line) const { drawLine (line.getStartX(), line.getStartY(), line.getEndX(), line.getEndY()); } -void Graphics::drawLine (const Line& line, - const float lineThickness) const throw() +void Graphics::drawLine (const Line& line, const float lineThickness) const { drawLine (line.getStartX(), line.getStartY(), line.getEndX(), line.getEndY(), lineThickness); } -void Graphics::drawDashedLine (const float startX, - const float startY, - const float endX, - const float endY, +void Graphics::drawDashedLine (const float startX, const float startY, + const float endX, const float endY, const float* const dashLengths, const int numDashLengths, - const float lineThickness) const throw() + const float lineThickness) const { const double dx = endX - startX; const double dy = endY - startY; @@ -80226,16 +80143,15 @@ void Graphics::drawDashedLine (const float startX, } } -void Graphics::setImageResamplingQuality (const Graphics::ResamplingQuality newQuality) throw() +void Graphics::setImageResamplingQuality (const Graphics::ResamplingQuality newQuality) { saveStateIfPending(); context->setInterpolationQuality (newQuality); } void Graphics::drawImageAt (const Image* const imageToDraw, - const int topLeftX, - const int topLeftY, - const bool fillAlphaChannelWithCurrentBrush) const throw() + const int topLeftX, const int topLeftY, + const bool fillAlphaChannelWithCurrentBrush) const { if (imageToDraw != 0) { @@ -80250,12 +80166,10 @@ void Graphics::drawImageAt (const Image* const imageToDraw, } void Graphics::drawImageWithin (const Image* const imageToDraw, - const int destX, - const int destY, - const int destW, - const int destH, + const int destX, const int destY, + const int destW, const int destH, const RectanglePlacement& placementWithinTarget, - const bool fillAlphaChannelWithCurrentBrush) const throw() + const bool fillAlphaChannelWithCurrentBrush) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (destX, destY, destW, destH)); @@ -80289,7 +80203,7 @@ void Graphics::drawImageWithin (const Image* const imageToDraw, void Graphics::drawImage (const Image* const imageToDraw, int dx, int dy, int dw, int dh, int sx, int sy, int sw, int sh, - const bool fillAlphaChannelWithCurrentBrush) const throw() + const bool fillAlphaChannelWithCurrentBrush) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (dx, dy, dw, dh)); @@ -80307,7 +80221,7 @@ void Graphics::drawImage (const Image* const imageToDraw, void Graphics::drawImageTransformed (const Image* const imageToDraw, const Rectangle& imageSubRegion, const AffineTransform& transform, - const bool fillAlphaChannelWithCurrentBrush) const throw() + const bool fillAlphaChannelWithCurrentBrush) const { if (imageToDraw != 0 && ! context->isClipEmpty()) { @@ -83105,8 +83019,8 @@ END_JUCE_NAMESPACE BEGIN_JUCE_NAMESPACE DrawablePath::DrawablePath() - : mainFill (FillType (Colours::black)), - strokeFill (FillType (Colours::transparentBlack)), + : mainFill (Colours::black), + strokeFill (Colours::transparentBlack), strokeType (0.0f) { } @@ -83205,8 +83119,8 @@ static const FillType readFillTypeFromTree (const ValueTree& v) if (type.equalsIgnoreCase ("solid")) { const String colour (v ["colour"].toString()); - return FillType (Colour (colour.isEmpty() ? (uint32) 0xff000000 - : (uint32) colour.getHexValue32())); + return Colour (colour.isEmpty() ? (uint32) 0xff000000 + : (uint32) colour.getHexValue32()); } else if (type.equalsIgnoreCase ("gradient")) { @@ -83224,7 +83138,7 @@ static const FillType readFillTypeFromTree (const ValueTree& v) g.addColour (colours[i * 2].getDoubleValue(), Colour ((uint32) colours[i * 2 + 1].getHexValue32())); - return FillType (g); + return g; } jassertfalse @@ -83977,7 +83891,7 @@ private: DrawablePath* dp = new DrawablePath(); dp->setName (xml.getStringAttribute ("id")); - dp->setFill (FillType (Colours::transparentBlack)); + dp->setFill (Colours::transparentBlack); path.applyTransform (transform); dp->setPath (path); diff --git a/juce_amalgamated.h b/juce_amalgamated.h index 5abc1dfcfa..52426c5982 100644 --- a/juce_amalgamated.h +++ b/juce_amalgamated.h @@ -9945,6 +9945,16 @@ public: { } + Rectangle (const Point& corner1, const Point& corner2) throw() + : x (jmin (corner1.getX(), corner2.getX())), + y (jmin (corner1.getY(), corner2.getY())), + w (corner1.getX() - corner2.getX()), + h (corner1.getY() - corner2.getY()) + { + if (w < 0) w = -w; + if (h < 0) h = -h; + } + Rectangle& operator= (const Rectangle& other) throw() { x = other.x; y = other.y; @@ -11911,140 +11921,126 @@ class JUCE_API Graphics { public: - explicit Graphics (Image& imageToDrawOnto) throw(); + explicit Graphics (Image& imageToDrawOnto); - ~Graphics() throw(); + ~Graphics(); - void setColour (const Colour& newColour) throw(); + void setColour (const Colour& newColour); - void setOpacity (const float newOpacity) throw(); + void setOpacity (const float newOpacity); - void setGradientFill (const ColourGradient& gradient) throw(); + void setGradientFill (const ColourGradient& gradient); void setTiledImageFill (const Image& imageToUse, - int anchorX, - int anchorY, - float opacity) throw(); + int anchorX, int anchorY, + float opacity); - void setFillType (const FillType& newFill) throw(); + void setFillType (const FillType& newFill); - void setFont (const Font& newFont) throw(); + void setFont (const Font& newFont); - void setFont (float newFontHeight, - int fontStyleFlags = Font::plain) throw(); + void setFont (float newFontHeight, int fontStyleFlags = Font::plain); void drawSingleLineText (const String& text, - int startX, int baselineY) const throw(); + int startX, int baselineY) const; void drawMultiLineText (const String& text, int startX, int baselineY, - int maximumLineWidth) const throw(); + int maximumLineWidth) const; void drawTextAsPath (const String& text, - const AffineTransform& transform) const throw(); + const AffineTransform& transform) const; void drawText (const String& text, int x, int y, int width, int height, const Justification& justificationType, - bool useEllipsesIfTooBig) const throw(); + bool useEllipsesIfTooBig) const; void drawFittedText (const String& text, int x, int y, int width, int height, const Justification& justificationFlags, int maximumNumberOfLines, - float minimumHorizontalScale = 0.7f) const throw(); + float minimumHorizontalScale = 0.7f) const; - void fillAll() const throw(); + void fillAll() const; - void fillAll (const Colour& colourToUse) const throw(); + void fillAll (const Colour& colourToUse) const; - void fillRect (int x, int y, int width, int height) const throw(); + void fillRect (int x, int y, int width, int height) const; - void fillRect (const Rectangle& rectangle) const throw(); + void fillRect (const Rectangle& rectangle) const; - void fillRect (float x, float y, float width, float height) const throw(); + void fillRect (float x, float y, float width, float height) const; void fillRoundedRectangle (float x, float y, float width, float height, - float cornerSize) const throw(); + float cornerSize) const; - void fillRoundedRectangle (const Rectangle& rectangle, - float cornerSize) const throw(); + void fillRoundedRectangle (const Rectangle& rectangle, + float cornerSize) const; void fillCheckerBoard (int x, int y, int width, int height, int checkWidth, int checkHeight, - const Colour& colour1, const Colour& colour2) const throw(); + const Colour& colour1, const Colour& colour2) const; void drawRect (int x, int y, int width, int height, - int lineThickness = 1) const throw(); + int lineThickness = 1) const; void drawRect (float x, float y, float width, float height, - float lineThickness = 1.0f) const throw(); + float lineThickness = 1.0f) const; void drawRect (const Rectangle& rectangle, - int lineThickness = 1) const throw(); + int lineThickness = 1) const; void drawRoundedRectangle (float x, float y, float width, float height, - float cornerSize, float lineThickness) const throw(); + float cornerSize, float lineThickness) const; - void drawRoundedRectangle (const Rectangle& rectangle, - float cornerSize, float lineThickness) const throw(); + void drawRoundedRectangle (const Rectangle& rectangle, + float cornerSize, float lineThickness) const; void drawBevel (int x, int y, int width, int height, int bevelThickness, const Colour& topLeftColour = Colours::white, const Colour& bottomRightColour = Colours::black, bool useGradient = true, - bool sharpEdgeOnOutside = true) const throw(); + bool sharpEdgeOnOutside = true) const; - void setPixel (int x, int y) const throw(); + void setPixel (int x, int y) const; - void fillEllipse (float x, float y, float width, float height) const throw(); + void fillEllipse (float x, float y, float width, float height) const; void drawEllipse (float x, float y, float width, float height, - float lineThickness) const throw(); + float lineThickness) const; - void drawLine (float startX, - float startY, - float endX, - float endY) const throw(); + void drawLine (float startX, float startY, float endX, float endY) const; - void drawLine (float startX, - float startY, - float endX, - float endY, - float lineThickness) const throw(); + void drawLine (float startX, float startY, float endX, float endY, + float lineThickness) const; - void drawLine (const Line& line) const throw(); + void drawLine (const Line& line) const; - void drawLine (const Line& line, - float lineThickness) const throw(); + void drawLine (const Line& line, float lineThickness) const; - void drawDashedLine (float startX, - float startY, - float endX, - float endY, - const float* dashLengths, - int numDashLengths, - float lineThickness = 1.0f) const throw(); + void drawDashedLine (float startX, float startY, + float endX, float endY, + const float* dashLengths, int numDashLengths, + float lineThickness = 1.0f) const; - void drawVerticalLine (int x, float top, float bottom) const throw(); + void drawVerticalLine (int x, float top, float bottom) const; - void drawHorizontalLine (int y, float left, float right) const throw(); + void drawHorizontalLine (int y, float left, float right) const; void fillPath (const Path& path, - const AffineTransform& transform = AffineTransform::identity) const throw(); + const AffineTransform& transform = AffineTransform::identity) const; void strokePath (const Path& path, const PathStrokeType& strokeType, - const AffineTransform& transform = AffineTransform::identity) const throw(); + const AffineTransform& transform = AffineTransform::identity) const; - void drawArrow (float startX, - float startY, - float endX, - float endY, + void drawArrow (float startX, float startY, + float endX, float endY, float lineThickness, float arrowheadWidth, - float arrowheadLength) const throw(); + float arrowheadLength) const; enum ResamplingQuality { @@ -12053,59 +12049,52 @@ public: highResamplingQuality = 2 /**< Uses bicubic interpolation for upsampling and area-averaging for downsampling. */ }; - void setImageResamplingQuality (const ResamplingQuality newQuality) throw(); + void setImageResamplingQuality (const ResamplingQuality newQuality); - void drawImageAt (const Image* const imageToDraw, - int topLeftX, int topLeftY, - bool fillAlphaChannelWithCurrentBrush = false) const throw(); + void drawImageAt (const Image* const imageToDraw, int topLeftX, int topLeftY, + bool fillAlphaChannelWithCurrentBrush = false) const; void drawImage (const Image* const imageToDraw, - int destX, - int destY, - int destWidth, - int destHeight, - int sourceX, - int sourceY, - int sourceWidth, - int sourceHeight, - bool fillAlphaChannelWithCurrentBrush = false) const throw(); + int destX, int destY, int destWidth, int destHeight, + int sourceX, int sourceY, int sourceWidth, int sourceHeight, + bool fillAlphaChannelWithCurrentBrush = false) const; void drawImageTransformed (const Image* imageToDraw, const Rectangle& imageSubRegion, const AffineTransform& transform, - bool fillAlphaChannelWithCurrentBrush = false) const throw(); + bool fillAlphaChannelWithCurrentBrush = false) const; void drawImageWithin (const Image* imageToDraw, int destX, int destY, int destWidth, int destHeight, const RectanglePlacement& placementWithinTarget, - bool fillAlphaChannelWithCurrentBrush = false) const throw(); + bool fillAlphaChannelWithCurrentBrush = false) const; - const Rectangle getClipBounds() const throw(); + const Rectangle getClipBounds() const; - bool clipRegionIntersects (int x, int y, int width, int height) const throw(); + bool clipRegionIntersects (int x, int y, int width, int height) const; - bool reduceClipRegion (int x, int y, int width, int height) throw(); + bool reduceClipRegion (int x, int y, int width, int height); - bool reduceClipRegion (const RectangleList& clipRegion) throw(); + bool reduceClipRegion (const RectangleList& clipRegion); - bool reduceClipRegion (const Path& path, const AffineTransform& transform = AffineTransform::identity) throw(); + bool reduceClipRegion (const Path& path, const AffineTransform& transform = AffineTransform::identity); bool reduceClipRegion (const Image& image, const Rectangle& sourceClipRegion, - const AffineTransform& transform) throw(); + const AffineTransform& transform); - void excludeClipRegion (const Rectangle& rectangleToExclude) throw(); + void excludeClipRegion (const Rectangle& rectangleToExclude); - bool isClipEmpty() const throw(); + bool isClipEmpty() const; - void saveState() throw(); + void saveState(); - void restoreState() throw(); + void restoreState(); - void setOrigin (int newOriginX, int newOriginY) throw(); + void setOrigin (int newOriginX, int newOriginY); - void resetToDefaultState() throw(); + void resetToDefaultState(); - bool isVectorDevice() const throw(); + bool isVectorDevice() const; juce_UseDebuggingNewOperator @@ -12119,7 +12108,7 @@ private: ScopedPointer contextToDelete; bool saveStatePending; - void saveStateIfPending() throw(); + void saveStateIfPending(); Graphics (const Graphics&); Graphics& operator= (const Graphics& other); @@ -25630,10 +25619,7 @@ public: { if (source != 0) { - const int x1 = e.getMouseDownX(); - const int y1 = e.getMouseDownY(); - - setBounds (jmin (x1, e.x), jmin (y1, e.y), abs (e.x - x1), abs (e.y - y1)); + setBounds (Rectangle (e.getMouseDownPosition(), e.getPosition())); setVisible (true); Array itemsInLasso; diff --git a/src/gui/components/mouse/juce_LassoComponent.h b/src/gui/components/mouse/juce_LassoComponent.h index 05b59277fe..6b32fdf8e2 100644 --- a/src/gui/components/mouse/juce_LassoComponent.h +++ b/src/gui/components/mouse/juce_LassoComponent.h @@ -159,10 +159,7 @@ public: { if (source != 0) { - const int x1 = e.getMouseDownX(); - const int y1 = e.getMouseDownY(); - - setBounds (jmin (x1, e.x), jmin (y1, e.y), abs (e.x - x1), abs (e.y - y1)); + setBounds (Rectangle (e.getMouseDownPosition(), e.getPosition())); setVisible (true); Array itemsInLasso; diff --git a/src/gui/graphics/contexts/juce_Graphics.cpp b/src/gui/graphics/contexts/juce_Graphics.cpp index 883f7f47a3..24193558b6 100644 --- a/src/gui/graphics/contexts/juce_Graphics.cpp +++ b/src/gui/graphics/contexts/juce_Graphics.cpp @@ -56,7 +56,7 @@ LowLevelGraphicsContext::~LowLevelGraphicsContext() } //============================================================================== -Graphics::Graphics (Image& imageToDrawOnto) throw() +Graphics::Graphics (Image& imageToDrawOnto) : context (imageToDrawOnto.createLowLevelContext()), contextToDelete (context), saveStatePending (false) @@ -69,12 +69,12 @@ Graphics::Graphics (LowLevelGraphicsContext* const internalContext) throw() { } -Graphics::~Graphics() throw() +Graphics::~Graphics() { } //============================================================================== -void Graphics::resetToDefaultState() throw() +void Graphics::resetToDefaultState() { saveStateIfPending(); context->setFill (FillType()); @@ -82,61 +82,60 @@ void Graphics::resetToDefaultState() throw() context->setInterpolationQuality (defaultQuality); } -bool Graphics::isVectorDevice() const throw() +bool Graphics::isVectorDevice() const { return context->isVectorDevice(); } -bool Graphics::reduceClipRegion (const int x, const int y, - const int w, const int h) throw() +bool Graphics::reduceClipRegion (const int x, const int y, const int w, const int h) { saveStateIfPending(); return context->clipToRectangle (Rectangle (x, y, w, h)); } -bool Graphics::reduceClipRegion (const RectangleList& clipRegion) throw() +bool Graphics::reduceClipRegion (const RectangleList& clipRegion) { saveStateIfPending(); return context->clipToRectangleList (clipRegion); } -bool Graphics::reduceClipRegion (const Path& path, const AffineTransform& transform) throw() +bool Graphics::reduceClipRegion (const Path& path, const AffineTransform& transform) { saveStateIfPending(); context->clipToPath (path, transform); return ! context->isClipEmpty(); } -bool Graphics::reduceClipRegion (const Image& image, const Rectangle& sourceClipRegion, const AffineTransform& transform) throw() +bool Graphics::reduceClipRegion (const Image& image, const Rectangle& sourceClipRegion, const AffineTransform& transform) { saveStateIfPending(); context->clipToImageAlpha (image, sourceClipRegion, transform); return ! context->isClipEmpty(); } -void Graphics::excludeClipRegion (const Rectangle& rectangleToExclude) throw() +void Graphics::excludeClipRegion (const Rectangle& rectangleToExclude) { saveStateIfPending(); context->excludeClipRectangle (rectangleToExclude); } -bool Graphics::isClipEmpty() const throw() +bool Graphics::isClipEmpty() const { return context->isClipEmpty(); } -const Rectangle Graphics::getClipBounds() const throw() +const Rectangle Graphics::getClipBounds() const { return context->getClipBounds(); } -void Graphics::saveState() throw() +void Graphics::saveState() { saveStateIfPending(); saveStatePending = true; } -void Graphics::restoreState() throw() +void Graphics::restoreState() { if (saveStatePending) saveStatePending = false; @@ -144,7 +143,7 @@ void Graphics::restoreState() throw() context->restoreState(); } -void Graphics::saveStateIfPending() throw() +void Graphics::saveStateIfPending() { if (saveStatePending) { @@ -153,63 +152,56 @@ void Graphics::saveStateIfPending() throw() } } -void Graphics::setOrigin (const int newOriginX, - const int newOriginY) throw() +void Graphics::setOrigin (const int newOriginX, const int newOriginY) { saveStateIfPending(); context->setOrigin (newOriginX, newOriginY); } -bool Graphics::clipRegionIntersects (const int x, const int y, - const int w, const int h) const throw() +bool Graphics::clipRegionIntersects (const int x, const int y, const int w, const int h) const { return context->clipRegionIntersects (Rectangle (x, y, w, h)); } //============================================================================== -void Graphics::setColour (const Colour& newColour) throw() +void Graphics::setColour (const Colour& newColour) { saveStateIfPending(); - context->setFill (FillType (newColour)); + context->setFill (newColour); } -void Graphics::setOpacity (const float newOpacity) throw() +void Graphics::setOpacity (const float newOpacity) { saveStateIfPending(); context->setOpacity (newOpacity); } -void Graphics::setGradientFill (const ColourGradient& gradient) throw() +void Graphics::setGradientFill (const ColourGradient& gradient) { - saveStateIfPending(); - context->setFill (FillType (gradient)); + setFillType (gradient); } -void Graphics::setTiledImageFill (const Image& imageToUse, - const int anchorX, - const int anchorY, - const float opacity) throw() +void Graphics::setTiledImageFill (const Image& imageToUse, const int anchorX, const int anchorY, const float opacity) { saveStateIfPending(); context->setFill (FillType (imageToUse, AffineTransform::translation ((float) anchorX, (float) anchorY))); context->setOpacity (opacity); } -void Graphics::setFillType (const FillType& newFill) throw() +void Graphics::setFillType (const FillType& newFill) { saveStateIfPending(); context->setFill (newFill); } //============================================================================== -void Graphics::setFont (const Font& newFont) throw() +void Graphics::setFont (const Font& newFont) { saveStateIfPending(); context->setFont (newFont); } -void Graphics::setFont (const float newFontHeight, - const int newFontStyleFlags) throw() +void Graphics::setFont (const float newFontHeight, const int newFontStyleFlags) { saveStateIfPending(); Font f (context->getFont()); @@ -218,9 +210,7 @@ void Graphics::setFont (const float newFontHeight, } //============================================================================== -void Graphics::drawSingleLineText (const String& text, - const int startX, - const int baselineY) const throw() +void Graphics::drawSingleLineText (const String& text, const int startX, const int baselineY) const { if (text.isNotEmpty() && startX < context->getClipBounds().getRight()) @@ -231,8 +221,7 @@ void Graphics::drawSingleLineText (const String& text, } } -void Graphics::drawTextAsPath (const String& text, - const AffineTransform& transform) const throw() +void Graphics::drawTextAsPath (const String& text, const AffineTransform& transform) const { if (text.isNotEmpty()) { @@ -242,10 +231,7 @@ void Graphics::drawTextAsPath (const String& text, } } -void Graphics::drawMultiLineText (const String& text, - const int startX, - const int baselineY, - const int maximumLineWidth) const throw() +void Graphics::drawMultiLineText (const String& text, const int startX, const int baselineY, const int maximumLineWidth) const { if (text.isNotEmpty() && startX < context->getClipBounds().getRight()) @@ -259,37 +245,30 @@ void Graphics::drawMultiLineText (const String& text, } void Graphics::drawText (const String& text, - const int x, - const int y, - const int width, - const int height, + const int x, const int y, const int width, const int height, const Justification& justificationType, - const bool useEllipsesIfTooBig) const throw() + const bool useEllipsesIfTooBig) const { if (text.isNotEmpty() && context->clipRegionIntersects (Rectangle (x, y, width, height))) { GlyphArrangement arr; arr.addCurtailedLineOfText (context->getFont(), text, - 0.0f, 0.0f, (float)width, + 0.0f, 0.0f, (float) width, useEllipsesIfTooBig); arr.justifyGlyphs (0, arr.getNumGlyphs(), - (float) x, (float) y, - (float) width, (float) height, + (float) x, (float) y, (float) width, (float) height, justificationType); arr.draw (*this); } } void Graphics::drawFittedText (const String& text, - const int x, - const int y, - const int width, - const int height, + const int x, const int y, const int width, const int height, const Justification& justification, const int maximumNumberOfLines, - const float minimumHorizontalScale) const throw() + const float minimumHorizontalScale) const { if (text.isNotEmpty() && width > 0 && height > 0 @@ -298,8 +277,7 @@ void Graphics::drawFittedText (const String& text, GlyphArrangement arr; arr.addFittedText (context->getFont(), text, - (float) x, (float) y, - (float) width, (float) height, + (float) x, (float) y, (float) width, (float) height, justification, maximumNumberOfLines, minimumHorizontalScale); @@ -309,10 +287,7 @@ void Graphics::drawFittedText (const String& text, } //============================================================================== -void Graphics::fillRect (int x, - int y, - int width, - int height) const throw() +void Graphics::fillRect (int x, int y, int width, int height) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (x, y, width, height)); @@ -320,15 +295,12 @@ void Graphics::fillRect (int x, context->fillRect (Rectangle (x, y, width, height), false); } -void Graphics::fillRect (const Rectangle& r) const throw() +void Graphics::fillRect (const Rectangle& r) const { context->fillRect (r, false); } -void Graphics::fillRect (const float x, - const float y, - const float width, - const float height) const throw() +void Graphics::fillRect (const float x, const float y, const float width, const float height) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (x, y, width, height)); @@ -338,24 +310,24 @@ void Graphics::fillRect (const float x, fillPath (p); } -void Graphics::setPixel (int x, int y) const throw() +void Graphics::setPixel (int x, int y) const { context->fillRect (Rectangle (x, y, 1, 1), false); } -void Graphics::fillAll() const throw() +void Graphics::fillAll() const { fillRect (context->getClipBounds()); } -void Graphics::fillAll (const Colour& colourToUse) const throw() +void Graphics::fillAll (const Colour& colourToUse) const { if (! colourToUse.isTransparent()) { const Rectangle clip (context->getClipBounds()); context->saveState(); - context->setFill (FillType (colourToUse)); + context->setFill (colourToUse); context->fillRect (clip, false); context->restoreState(); } @@ -363,8 +335,7 @@ void Graphics::fillAll (const Colour& colourToUse) const throw() //============================================================================== -void Graphics::fillPath (const Path& path, - const AffineTransform& transform) const throw() +void Graphics::fillPath (const Path& path, const AffineTransform& transform) const { if ((! context->isClipEmpty()) && ! path.isEmpty()) context->fillPath (path, transform); @@ -372,7 +343,7 @@ void Graphics::fillPath (const Path& path, void Graphics::strokePath (const Path& path, const PathStrokeType& strokeType, - const AffineTransform& transform) const throw() + const AffineTransform& transform) const { Path stroke; strokeType.createStrokedPath (stroke, path, transform); @@ -380,11 +351,8 @@ void Graphics::strokePath (const Path& path, } //============================================================================== -void Graphics::drawRect (const int x, - const int y, - const int width, - const int height, - const int lineThickness) const throw() +void Graphics::drawRect (const int x, const int y, const int width, const int height, + const int lineThickness) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (x, y, width, height)); @@ -395,11 +363,7 @@ void Graphics::drawRect (const int x, context->fillRect (Rectangle (x, y + height - lineThickness, width, lineThickness), false); } -void Graphics::drawRect (const float x, - const float y, - const float width, - const float height, - const float lineThickness) const throw() +void Graphics::drawRect (const float x, const float y, const float width, const float height, const float lineThickness) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (x, y, width, height)); @@ -412,23 +376,14 @@ void Graphics::drawRect (const float x, fillPath (p); } -void Graphics::drawRect (const Rectangle& r, - const int lineThickness) const throw() +void Graphics::drawRect (const Rectangle& r, const int lineThickness) const { - drawRect (r.getX(), r.getY(), - r.getWidth(), r.getHeight(), - lineThickness); + drawRect (r.getX(), r.getY(), r.getWidth(), r.getHeight(), lineThickness); } -void Graphics::drawBevel (const int x, - const int y, - const int width, - const int height, - const int bevelThickness, - const Colour& topLeftColour, - const Colour& bottomRightColour, - const bool useGradient, - const bool sharpEdgeOnOutside) const throw() +void Graphics::drawBevel (const int x, const int y, const int width, const int height, + const int bevelThickness, const Colour& topLeftColour, const Colour& bottomRightColour, + const bool useGradient, const bool sharpEdgeOnOutside) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (x, y, width, height)); @@ -445,13 +400,13 @@ void Graphics::drawBevel (const int x, const float op = useGradient ? ramp * (sharpEdgeOnOutside ? bevelThickness - i : i) : oldOpacity; - context->setFill (FillType (topLeftColour.withMultipliedAlpha (op))); + context->setFill (topLeftColour.withMultipliedAlpha (op)); context->fillRect (Rectangle (x + i, y + i, width - i * 2, 1), false); - context->setFill (FillType (topLeftColour.withMultipliedAlpha (op * 0.75f))); + context->setFill (topLeftColour.withMultipliedAlpha (op * 0.75f)); context->fillRect (Rectangle (x + i, y + i + 1, 1, height - i * 2 - 2), false); - context->setFill (FillType (bottomRightColour.withMultipliedAlpha (op))); + context->setFill (bottomRightColour.withMultipliedAlpha (op)); context->fillRect (Rectangle (x + i, y + height - i - 1, width - i * 2, 1), false); - context->setFill (FillType (bottomRightColour.withMultipliedAlpha (op * 0.75f))); + context->setFill (bottomRightColour.withMultipliedAlpha (op * 0.75f)); context->fillRect (Rectangle (x + width - i - 1, y + i + 1, 1, height - i * 2 - 2), false); } @@ -460,10 +415,7 @@ void Graphics::drawBevel (const int x, } //============================================================================== -void Graphics::fillEllipse (const float x, - const float y, - const float width, - const float height) const throw() +void Graphics::fillEllipse (const float x, const float y, const float width, const float height) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (x, y, width, height)); @@ -473,11 +425,8 @@ void Graphics::fillEllipse (const float x, fillPath (p); } -void Graphics::drawEllipse (const float x, - const float y, - const float width, - const float height, - const float lineThickness) const throw() +void Graphics::drawEllipse (const float x, const float y, const float width, const float height, + const float lineThickness) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (x, y, width, height)); @@ -487,11 +436,7 @@ void Graphics::drawEllipse (const float x, strokePath (p, PathStrokeType (lineThickness)); } -void Graphics::fillRoundedRectangle (const float x, - const float y, - const float width, - const float height, - const float cornerSize) const throw() +void Graphics::fillRoundedRectangle (const float x, const float y, const float width, const float height, const float cornerSize) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (x, y, width, height)); @@ -501,22 +446,13 @@ void Graphics::fillRoundedRectangle (const float x, fillPath (p); } -void Graphics::fillRoundedRectangle (const Rectangle& r, - const float cornerSize) const throw() +void Graphics::fillRoundedRectangle (const Rectangle& r, const float cornerSize) const { - fillRoundedRectangle ((float) r.getX(), - (float) r.getY(), - (float) r.getWidth(), - (float) r.getHeight(), - cornerSize); + fillRoundedRectangle (r.getX(), r.getY(), r.getWidth(), r.getHeight(), cornerSize); } -void Graphics::drawRoundedRectangle (const float x, - const float y, - const float width, - const float height, - const float cornerSize, - const float lineThickness) const throw() +void Graphics::drawRoundedRectangle (const float x, const float y, const float width, const float height, + const float cornerSize, const float lineThickness) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (x, y, width, height)); @@ -526,25 +462,13 @@ void Graphics::drawRoundedRectangle (const float x, strokePath (p, PathStrokeType (lineThickness)); } -void Graphics::drawRoundedRectangle (const Rectangle& r, - const float cornerSize, - const float lineThickness) const throw() +void Graphics::drawRoundedRectangle (const Rectangle& r, const float cornerSize, const float lineThickness) const { - drawRoundedRectangle ((float) r.getX(), - (float) r.getY(), - (float) r.getWidth(), - (float) r.getHeight(), - cornerSize, lineThickness); + drawRoundedRectangle (r.getX(), r.getY(), r.getWidth(), r.getHeight(), cornerSize, lineThickness); } - -void Graphics::drawArrow (const float startX, - const float startY, - const float endX, - const float endY, - const float lineThickness, - const float arrowheadWidth, - const float arrowheadLength) const throw() +void Graphics::drawArrow (const float startX, const float startY, const float endX, const float endY, + const float lineThickness, const float arrowheadWidth, const float arrowheadLength) const { Path p; p.addArrow (startX, startY, endX, endY, @@ -552,12 +476,9 @@ void Graphics::drawArrow (const float startX, fillPath (p); } -void Graphics::fillCheckerBoard (int x, int y, - int width, int height, - const int checkWidth, - const int checkHeight, - const Colour& colour1, - const Colour& colour2) const throw() +void Graphics::fillCheckerBoard (int x, int y, int width, int height, + const int checkWidth, const int checkHeight, + const Colour& colour1, const Colour& colour2) const { jassert (checkWidth > 0 && checkHeight > 0); // can't be zero or less! @@ -567,7 +488,7 @@ void Graphics::fillCheckerBoard (int x, int y, if (colour1 == colour2) { - context->setFill (FillType (colour1)); + context->setFill (colour1); context->fillRect (Rectangle (x, y, width, height), false); } else @@ -584,7 +505,7 @@ void Graphics::fillCheckerBoard (int x, int y, for (int xx = x; xx < right; xx += checkWidth) { - context->setFill (FillType (((cx++ & 1) == 0) ? colour1 : colour2)); + context->setFill (((cx++ & 1) == 0) ? colour1 : colour2); context->fillRect (Rectangle (xx, y, jmin (checkWidth, right - xx), jmin (checkHeight, bottom - y)), false); } @@ -599,50 +520,45 @@ void Graphics::fillCheckerBoard (int x, int y, } //============================================================================== -void Graphics::drawVerticalLine (const int x, float top, float bottom) const throw() +void Graphics::drawVerticalLine (const int x, float top, float bottom) const { context->drawVerticalLine (x, top, bottom); } -void Graphics::drawHorizontalLine (const int y, float left, float right) const throw() +void Graphics::drawHorizontalLine (const int y, float left, float right) const { context->drawHorizontalLine (y, left, right); } -void Graphics::drawLine (float x1, float y1, float x2, float y2) const throw() +void Graphics::drawLine (float x1, float y1, float x2, float y2) const { context->drawLine (x1, y1, x2, y2); } -void Graphics::drawLine (const float startX, - const float startY, - const float endX, - const float endY, - const float lineThickness) const throw() +void Graphics::drawLine (const float startX, const float startY, + const float endX, const float endY, + const float lineThickness) const { Path p; p.addLineSegment (startX, startY, endX, endY, lineThickness); fillPath (p); } -void Graphics::drawLine (const Line& line) const throw() +void Graphics::drawLine (const Line& line) const { drawLine (line.getStartX(), line.getStartY(), line.getEndX(), line.getEndY()); } -void Graphics::drawLine (const Line& line, - const float lineThickness) const throw() +void Graphics::drawLine (const Line& line, const float lineThickness) const { drawLine (line.getStartX(), line.getStartY(), line.getEndX(), line.getEndY(), lineThickness); } -void Graphics::drawDashedLine (const float startX, - const float startY, - const float endX, - const float endY, +void Graphics::drawDashedLine (const float startX, const float startY, + const float endX, const float endY, const float* const dashLengths, const int numDashLengths, - const float lineThickness) const throw() + const float lineThickness) const { const double dx = endX - startX; const double dy = endY - startY; @@ -680,7 +596,7 @@ void Graphics::drawDashedLine (const float startX, } //============================================================================== -void Graphics::setImageResamplingQuality (const Graphics::ResamplingQuality newQuality) throw() +void Graphics::setImageResamplingQuality (const Graphics::ResamplingQuality newQuality) { saveStateIfPending(); context->setInterpolationQuality (newQuality); @@ -688,9 +604,8 @@ void Graphics::setImageResamplingQuality (const Graphics::ResamplingQuality newQ //============================================================================== void Graphics::drawImageAt (const Image* const imageToDraw, - const int topLeftX, - const int topLeftY, - const bool fillAlphaChannelWithCurrentBrush) const throw() + const int topLeftX, const int topLeftY, + const bool fillAlphaChannelWithCurrentBrush) const { if (imageToDraw != 0) { @@ -705,12 +620,10 @@ void Graphics::drawImageAt (const Image* const imageToDraw, } void Graphics::drawImageWithin (const Image* const imageToDraw, - const int destX, - const int destY, - const int destW, - const int destH, + const int destX, const int destY, + const int destW, const int destH, const RectanglePlacement& placementWithinTarget, - const bool fillAlphaChannelWithCurrentBrush) const throw() + const bool fillAlphaChannelWithCurrentBrush) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (destX, destY, destW, destH)); @@ -744,7 +657,7 @@ void Graphics::drawImageWithin (const Image* const imageToDraw, void Graphics::drawImage (const Image* const imageToDraw, int dx, int dy, int dw, int dh, int sx, int sy, int sw, int sh, - const bool fillAlphaChannelWithCurrentBrush) const throw() + const bool fillAlphaChannelWithCurrentBrush) const { // passing in a silly number can cause maths problems in rendering! jassert (areCoordsSensibleNumbers (dx, dy, dw, dh)); @@ -762,7 +675,7 @@ void Graphics::drawImage (const Image* const imageToDraw, void Graphics::drawImageTransformed (const Image* const imageToDraw, const Rectangle& imageSubRegion, const AffineTransform& transform, - const bool fillAlphaChannelWithCurrentBrush) const throw() + const bool fillAlphaChannelWithCurrentBrush) const { if (imageToDraw != 0 && ! context->isClipEmpty()) { diff --git a/src/gui/graphics/contexts/juce_Graphics.h b/src/gui/graphics/contexts/juce_Graphics.h index ef118860b1..305bbea6ca 100644 --- a/src/gui/graphics/contexts/juce_Graphics.h +++ b/src/gui/graphics/contexts/juce_Graphics.h @@ -64,10 +64,10 @@ public: Obviously you shouldn't delete the image before this context is deleted. */ - explicit Graphics (Image& imageToDrawOnto) throw(); + explicit Graphics (Image& imageToDrawOnto); /** Destructor. */ - ~Graphics() throw(); + ~Graphics(); //============================================================================== /** Changes the current drawing colour. @@ -80,7 +80,7 @@ public: @see setOpacity */ - void setColour (const Colour& newColour) throw(); + void setColour (const Colour& newColour); /** Changes the opacity to use with the current colour. @@ -91,25 +91,24 @@ public: A value of 0.0 is completely transparent, 1.0 is completely opaque. */ - void setOpacity (const float newOpacity) throw(); + void setOpacity (const float newOpacity); /** Sets the context to use a gradient for its fill pattern. */ - void setGradientFill (const ColourGradient& gradient) throw(); + void setGradientFill (const ColourGradient& gradient); /** Sets the context to use a tiled image pattern for filling. Make sure that you don't delete this image while it's still being used by this context! */ void setTiledImageFill (const Image& imageToUse, - int anchorX, - int anchorY, - float opacity) throw(); + int anchorX, int anchorY, + float opacity); /** Changes the current fill settings. @see setColour, setGradientFill, setTiledImageFill */ - void setFillType (const FillType& newFill) throw(); + void setFillType (const FillType& newFill); //============================================================================== /** Changes the font to use for subsequent text-drawing functions. @@ -119,7 +118,7 @@ public: @see drawSingleLineText, drawMultiLineText, drawTextAsPath, drawText, drawFittedText */ - void setFont (const Font& newFont) throw(); + void setFont (const Font& newFont); /** Changes the size and style of the currently-selected font. @@ -128,8 +127,7 @@ public: @see Font */ - void setFont (float newFontHeight, - int fontStyleFlags = Font::plain) throw(); + void setFont (float newFontHeight, int fontStyleFlags = Font::plain); /** Draws a one-line text string. @@ -142,7 +140,7 @@ public: @see drawMultiLineText, drawText, drawFittedText, GlyphArrangement::addLineOfText */ void drawSingleLineText (const String& text, - int startX, int baselineY) const throw(); + int startX, int baselineY) const; /** Draws text across multiple lines. @@ -154,7 +152,7 @@ public: */ void drawMultiLineText (const String& text, int startX, int baselineY, - int maximumLineWidth) const throw(); + int maximumLineWidth) const; /** Renders a string of text as a vector path. @@ -165,7 +163,7 @@ public: @see setFont */ void drawTextAsPath (const String& text, - const AffineTransform& transform) const throw(); + const AffineTransform& transform) const; /** Draws a line of text within a specified rectangle. @@ -179,7 +177,7 @@ public: void drawText (const String& text, int x, int y, int width, int height, const Justification& justificationType, - bool useEllipsesIfTooBig) const throw(); + bool useEllipsesIfTooBig) const; /** Tries to draw a text string inside a given space. @@ -204,7 +202,7 @@ public: int x, int y, int width, int height, const Justification& justificationFlags, int maximumNumberOfLines, - float minimumHorizontalScale = 0.7f) const throw(); + float minimumHorizontalScale = 0.7f) const; //============================================================================== /** Fills the context's entire clip region with the current colour or brush. @@ -212,51 +210,51 @@ public: (See also the fillAll (const Colour&) method which is a quick way of filling it with a given colour). */ - void fillAll() const throw(); + void fillAll() const; /** Fills the context's entire clip region with a given colour. This leaves the context's current colour and brush unchanged, it just uses the specified colour temporarily. */ - void fillAll (const Colour& colourToUse) const throw(); + void fillAll (const Colour& colourToUse) const; //============================================================================== /** Fills a rectangle with the current colour or brush. @see drawRect, fillRoundedRectangle */ - void fillRect (int x, int y, int width, int height) const throw(); + void fillRect (int x, int y, int width, int height) const; /** Fills a rectangle with the current colour or brush. */ - void fillRect (const Rectangle& rectangle) const throw(); + void fillRect (const Rectangle& rectangle) const; /** Fills a rectangle with the current colour or brush. This uses sub-pixel positioning so is slower than the fillRect method which takes integer co-ordinates. */ - void fillRect (float x, float y, float width, float height) const throw(); + void fillRect (float x, float y, float width, float height) const; /** Uses the current colour or brush to fill a rectangle with rounded corners. @see drawRoundedRectangle, Path::addRoundedRectangle */ void fillRoundedRectangle (float x, float y, float width, float height, - float cornerSize) const throw(); + float cornerSize) const; /** Uses the current colour or brush to fill a rectangle with rounded corners. @see drawRoundedRectangle, Path::addRoundedRectangle */ - void fillRoundedRectangle (const Rectangle& rectangle, - float cornerSize) const throw(); + void fillRoundedRectangle (const Rectangle& rectangle, + float cornerSize) const; /** Fills a rectangle with a checkerboard pattern, alternating between two colours. */ void fillCheckerBoard (int x, int y, int width, int height, int checkWidth, int checkHeight, - const Colour& colour1, const Colour& colour2) const throw(); + const Colour& colour1, const Colour& colour2) const; /** Draws four lines to form a rectangular outline, using the current colour or brush. @@ -266,7 +264,7 @@ public: @see fillRect */ void drawRect (int x, int y, int width, int height, - int lineThickness = 1) const throw(); + int lineThickness = 1) const; /** Draws four lines to form a rectangular outline, using the current colour or brush. @@ -276,7 +274,7 @@ public: @see fillRect */ void drawRect (float x, float y, float width, float height, - float lineThickness = 1.0f) const throw(); + float lineThickness = 1.0f) const; /** Draws four lines to form a rectangular outline, using the current colour or brush. @@ -286,21 +284,21 @@ public: @see fillRect */ void drawRect (const Rectangle& rectangle, - int lineThickness = 1) const throw(); + int lineThickness = 1) const; /** Uses the current colour or brush to draw the outline of a rectangle with rounded corners. @see fillRoundedRectangle, Path::addRoundedRectangle */ void drawRoundedRectangle (float x, float y, float width, float height, - float cornerSize, float lineThickness) const throw(); + float cornerSize, float lineThickness) const; /** Uses the current colour or brush to draw the outline of a rectangle with rounded corners. @see fillRoundedRectangle, Path::addRoundedRectangle */ - void drawRoundedRectangle (const Rectangle& rectangle, - float cornerSize, float lineThickness) const throw(); + void drawRoundedRectangle (const Rectangle& rectangle, + float cornerSize, float lineThickness) const; /** Draws a 3D raised (or indented) bevel using two colours. @@ -321,11 +319,11 @@ public: const Colour& topLeftColour = Colours::white, const Colour& bottomRightColour = Colours::black, bool useGradient = true, - bool sharpEdgeOnOutside = true) const throw(); + bool sharpEdgeOnOutside = true) const; /** Draws a pixel using the current colour or brush. */ - void setPixel (int x, int y) const throw(); + void setPixel (int x, int y) const; //============================================================================== /** Fills an ellipse with the current colour or brush. @@ -334,47 +332,40 @@ public: @see drawEllipse, Path::addEllipse */ - void fillEllipse (float x, float y, float width, float height) const throw(); + void fillEllipse (float x, float y, float width, float height) const; /** Draws an elliptical stroke using the current colour or brush. @see fillEllipse, Path::addEllipse */ void drawEllipse (float x, float y, float width, float height, - float lineThickness) const throw(); + float lineThickness) const; //============================================================================== /** Draws a line between two points. The line is 1 pixel wide and drawn with the current colour or brush. */ - void drawLine (float startX, - float startY, - float endX, - float endY) const throw(); + void drawLine (float startX, float startY, float endX, float endY) const; /** Draws a line between two points with a given thickness. @see Path::addLineSegment */ - void drawLine (float startX, - float startY, - float endX, - float endY, - float lineThickness) const throw(); + void drawLine (float startX, float startY, float endX, float endY, + float lineThickness) const; /** Draws a line between two points. The line is 1 pixel wide and drawn with the current colour or brush. */ - void drawLine (const Line& line) const throw(); + void drawLine (const Line& line) const; /** Draws a line between two points with a given thickness. @see Path::addLineSegment */ - void drawLine (const Line& line, - float lineThickness) const throw(); + void drawLine (const Line& line, float lineThickness) const; /** Draws a dashed line using a custom set of dash-lengths. @@ -389,39 +380,36 @@ public: @param lineThickness the thickness of the line to draw @see PathStrokeType::createDashedStroke */ - void drawDashedLine (float startX, - float startY, - float endX, - float endY, - const float* dashLengths, - int numDashLengths, - float lineThickness = 1.0f) const throw(); + void drawDashedLine (float startX, float startY, + float endX, float endY, + const float* dashLengths, int numDashLengths, + float lineThickness = 1.0f) const; /** Draws a vertical line of pixels at a given x position. The x position is an integer, but the top and bottom of the line can be sub-pixel positions, and these will be anti-aliased if necessary. */ - void drawVerticalLine (int x, float top, float bottom) const throw(); + void drawVerticalLine (int x, float top, float bottom) const; /** Draws a horizontal line of pixels at a given y position. The y position is an integer, but the left and right ends of the line can be sub-pixel positions, and these will be anti-aliased if necessary. */ - void drawHorizontalLine (int y, float left, float right) const throw(); + void drawHorizontalLine (int y, float left, float right) const; //============================================================================== /** Fills a path using the currently selected colour or brush. */ void fillPath (const Path& path, - const AffineTransform& transform = AffineTransform::identity) const throw(); + const AffineTransform& transform = AffineTransform::identity) const; /** Draws a path's outline using the currently selected colour or brush. */ void strokePath (const Path& path, const PathStrokeType& strokeType, - const AffineTransform& transform = AffineTransform::identity) const throw(); + const AffineTransform& transform = AffineTransform::identity) const; /** Draws a line with an arrowhead. @@ -433,13 +421,11 @@ public: @param arrowheadWidth the width of the arrow head (perpendicular to the line) @param arrowheadLength the length of the arrow head (along the length of the line) */ - void drawArrow (float startX, - float startY, - float endX, - float endY, + void drawArrow (float startX, float startY, + float endX, float endY, float lineThickness, float arrowheadWidth, - float arrowheadLength) const throw(); + float arrowheadLength) const; //============================================================================== @@ -460,7 +446,7 @@ public: @see Graphics::drawImage, Graphics::drawImageTransformed, Graphics::drawImageWithin */ - void setImageResamplingQuality (const ResamplingQuality newQuality) throw(); + void setImageResamplingQuality (const ResamplingQuality newQuality); /** Draws an image. @@ -473,9 +459,8 @@ public: don't want it to be drawn semi-transparently, be sure to call setOpacity (1.0f) (or setColour() with an opaque colour) before drawing images. */ - void drawImageAt (const Image* const imageToDraw, - int topLeftX, int topLeftY, - bool fillAlphaChannelWithCurrentBrush = false) const throw(); + void drawImageAt (const Image* const imageToDraw, int topLeftX, int topLeftY, + bool fillAlphaChannelWithCurrentBrush = false) const; /** Draws part of an image, rescaling it to fit in a given target region. @@ -503,15 +488,9 @@ public: @see setImageResamplingQuality, drawImageAt, drawImageWithin, fillAlphaMap */ void drawImage (const Image* const imageToDraw, - int destX, - int destY, - int destWidth, - int destHeight, - int sourceX, - int sourceY, - int sourceWidth, - int sourceHeight, - bool fillAlphaChannelWithCurrentBrush = false) const throw(); + int destX, int destY, int destWidth, int destHeight, + int sourceX, int sourceY, int sourceWidth, int sourceHeight, + bool fillAlphaChannelWithCurrentBrush = false) const; /** Draws part of an image, having applied an affine transform to it. @@ -537,7 +516,7 @@ public: void drawImageTransformed (const Image* imageToDraw, const Rectangle& imageSubRegion, const AffineTransform& transform, - bool fillAlphaChannelWithCurrentBrush = false) const throw(); + bool fillAlphaChannelWithCurrentBrush = false) const; /** Draws an image to fit within a designated rectangle. @@ -563,7 +542,7 @@ public: void drawImageWithin (const Image* imageToDraw, int destX, int destY, int destWidth, int destHeight, const RectanglePlacement& placementWithinTarget, - bool fillAlphaChannelWithCurrentBrush = false) const throw(); + bool fillAlphaChannelWithCurrentBrush = false) const; //============================================================================== @@ -571,7 +550,7 @@ public: @see getClipRegion, clipRegionIntersects */ - const Rectangle getClipBounds() const throw(); + const Rectangle getClipBounds() const; /** Checks whether a rectangle overlaps the context's clipping region. @@ -579,28 +558,28 @@ public: method can be used to optimise a component's paint() method, by letting it avoid drawing complex objects that aren't within the region being repainted. */ - bool clipRegionIntersects (int x, int y, int width, int height) const throw(); + bool clipRegionIntersects (int x, int y, int width, int height) const; /** Intersects the current clipping region with another region. @returns true if the resulting clipping region is non-zero in size @see setOrigin, clipRegionIntersects */ - bool reduceClipRegion (int x, int y, int width, int height) throw(); + bool reduceClipRegion (int x, int y, int width, int height); /** Intersects the current clipping region with a rectangle list region. @returns true if the resulting clipping region is non-zero in size @see setOrigin, clipRegionIntersects */ - bool reduceClipRegion (const RectangleList& clipRegion) throw(); + bool reduceClipRegion (const RectangleList& clipRegion); /** Intersects the current clipping region with a path. @returns true if the resulting clipping region is non-zero in size @see reduceClipRegion */ - bool reduceClipRegion (const Path& path, const AffineTransform& transform = AffineTransform::identity) throw(); + bool reduceClipRegion (const Path& path, const AffineTransform& transform = AffineTransform::identity); /** Intersects the current clipping region with an image's alpha-channel. @@ -617,23 +596,23 @@ public: @see reduceClipRegion */ bool reduceClipRegion (const Image& image, const Rectangle& sourceClipRegion, - const AffineTransform& transform) throw(); + const AffineTransform& transform); /** Excludes a rectangle to stop it being drawn into. */ - void excludeClipRegion (const Rectangle& rectangleToExclude) throw(); + void excludeClipRegion (const Rectangle& rectangleToExclude); /** Returns true if no drawing can be done because the clip region is zero. */ - bool isClipEmpty() const throw(); + bool isClipEmpty() const; /** Saves the current graphics state on an internal stack. To restore the state, use restoreState(). */ - void saveState() throw(); + void saveState(); /** Restores a graphics state that was previously saved with saveState(). */ - void restoreState() throw(); + void restoreState(); /** Moves the position of the context's origin. @@ -645,21 +624,19 @@ public: @see reduceClipRegion */ - void setOrigin (int newOriginX, int newOriginY) throw(); + void setOrigin (int newOriginX, int newOriginY); /** Resets the current colour, brush, and font to default settings. */ - void resetToDefaultState() throw(); + void resetToDefaultState(); /** Returns true if this context is drawing to a vector-based device, such as a printer. */ - bool isVectorDevice() const throw(); + bool isVectorDevice() const; //============================================================================== juce_UseDebuggingNewOperator /** Create a graphics that uses a given low-level renderer. - For internal use only. - NB. The context will NOT be deleted by this object when it is deleted. */ Graphics (LowLevelGraphicsContext* const internalContext) throw(); @@ -673,7 +650,7 @@ private: ScopedPointer contextToDelete; bool saveStatePending; - void saveStateIfPending() throw(); + void saveStateIfPending(); Graphics (const Graphics&); Graphics& operator= (const Graphics& other); diff --git a/src/gui/graphics/drawables/juce_DrawablePath.cpp b/src/gui/graphics/drawables/juce_DrawablePath.cpp index b05c7ec94e..44e72a7a3f 100644 --- a/src/gui/graphics/drawables/juce_DrawablePath.cpp +++ b/src/gui/graphics/drawables/juce_DrawablePath.cpp @@ -33,8 +33,8 @@ BEGIN_JUCE_NAMESPACE //============================================================================== DrawablePath::DrawablePath() - : mainFill (FillType (Colours::black)), - strokeFill (FillType (Colours::transparentBlack)), + : mainFill (Colours::black), + strokeFill (Colours::transparentBlack), strokeType (0.0f) { } @@ -136,8 +136,8 @@ static const FillType readFillTypeFromTree (const ValueTree& v) if (type.equalsIgnoreCase ("solid")) { const String colour (v ["colour"].toString()); - return FillType (Colour (colour.isEmpty() ? (uint32) 0xff000000 - : (uint32) colour.getHexValue32())); + return Colour (colour.isEmpty() ? (uint32) 0xff000000 + : (uint32) colour.getHexValue32()); } else if (type.equalsIgnoreCase ("gradient")) { @@ -155,7 +155,7 @@ static const FillType readFillTypeFromTree (const ValueTree& v) g.addColour (colours[i * 2].getDoubleValue(), Colour ((uint32) colours[i * 2 + 1].getHexValue32())); - return FillType (g); + return g; } jassertfalse diff --git a/src/gui/graphics/drawables/juce_SVGParser.cpp b/src/gui/graphics/drawables/juce_SVGParser.cpp index 17c76063f3..629018c8e5 100644 --- a/src/gui/graphics/drawables/juce_SVGParser.cpp +++ b/src/gui/graphics/drawables/juce_SVGParser.cpp @@ -610,7 +610,7 @@ private: DrawablePath* dp = new DrawablePath(); dp->setName (xml.getStringAttribute ("id")); - dp->setFill (FillType (Colours::transparentBlack)); + dp->setFill (Colours::transparentBlack); path.applyTransform (transform); dp->setPath (path); diff --git a/src/gui/graphics/geometry/juce_Rectangle.h b/src/gui/graphics/geometry/juce_Rectangle.h index b11f45082c..769494eff7 100644 --- a/src/gui/graphics/geometry/juce_Rectangle.h +++ b/src/gui/graphics/geometry/juce_Rectangle.h @@ -72,6 +72,17 @@ public: { } + /** Creates a Rectangle from the positions of two opposite corners. */ + Rectangle (const Point& corner1, const Point& corner2) throw() + : x (jmin (corner1.getX(), corner2.getX())), + y (jmin (corner1.getY(), corner2.getY())), + w (corner1.getX() - corner2.getX()), + h (corner1.getY() - corner2.getY()) + { + if (w < 0) w = -w; + if (h < 0) h = -h; + } + Rectangle& operator= (const Rectangle& other) throw() { x = other.x; y = other.y;