mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Did a bit of minor modernising in Graphics + Path
This commit is contained in:
parent
82e9d47416
commit
3df7f8ff8b
5 changed files with 71 additions and 89 deletions
|
|
@ -38,7 +38,7 @@ namespace
|
|||
&& (int) h >= 0 && (int) h <= maxVal);
|
||||
#endif
|
||||
|
||||
return Rectangle<Type> (x, y, w, h);
|
||||
return { x, y, w, h };
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -49,15 +49,13 @@ LowLevelGraphicsContext::~LowLevelGraphicsContext() {}
|
|||
//==============================================================================
|
||||
Graphics::Graphics (const Image& imageToDrawOnto)
|
||||
: context (*imageToDrawOnto.createLowLevelContext()),
|
||||
contextToDelete (&context),
|
||||
saveStatePending (false)
|
||||
contextToDelete (&context)
|
||||
{
|
||||
jassert (imageToDrawOnto.isValid()); // Can't draw into a null image!
|
||||
}
|
||||
|
||||
Graphics::Graphics (LowLevelGraphicsContext& internalContext) noexcept
|
||||
: context (internalContext),
|
||||
saveStatePending (false)
|
||||
: context (internalContext)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -85,7 +83,7 @@ bool Graphics::reduceClipRegion (Rectangle<int> area)
|
|||
return context.clipToRectangle (area);
|
||||
}
|
||||
|
||||
bool Graphics::reduceClipRegion (const int x, const int y, const int w, const int h)
|
||||
bool Graphics::reduceClipRegion (int x, int y, int w, int h)
|
||||
{
|
||||
return reduceClipRegion (coordsToRectangle (x, y, w, h));
|
||||
}
|
||||
|
|
@ -157,7 +155,7 @@ void Graphics::setOrigin (Point<int> newOrigin)
|
|||
|
||||
void Graphics::setOrigin (int x, int y)
|
||||
{
|
||||
setOrigin (Point<int> (x, y));
|
||||
setOrigin ({ x, y });
|
||||
}
|
||||
|
||||
void Graphics::addTransform (const AffineTransform& transform)
|
||||
|
|
@ -239,23 +237,20 @@ void Graphics::drawSingleLineText (const String& text, const int startX, const i
|
|||
// Don't pass any vertical placement flags to this method - they'll be ignored.
|
||||
jassert (justification.getOnlyVerticalFlags() == 0);
|
||||
|
||||
const int flags = justification.getOnlyHorizontalFlags();
|
||||
auto flags = justification.getOnlyHorizontalFlags();
|
||||
|
||||
if (flags == Justification::right)
|
||||
{
|
||||
if (startX < context.getClipBounds().getX())
|
||||
return;
|
||||
}
|
||||
else if (flags == Justification::left)
|
||||
if (startX > context.getClipBounds().getRight())
|
||||
return;
|
||||
if (flags == Justification::right && startX < context.getClipBounds().getX())
|
||||
return;
|
||||
|
||||
if (flags == Justification::left && startX > context.getClipBounds().getRight())
|
||||
return;
|
||||
|
||||
GlyphArrangement arr;
|
||||
arr.addLineOfText (context.getFont(), text, (float) startX, (float) baselineY);
|
||||
|
||||
if (flags != Justification::left)
|
||||
{
|
||||
float w = arr.getBoundingBox (0, -1, true).getWidth();
|
||||
auto w = arr.getBoundingBox (0, -1, true).getWidth();
|
||||
|
||||
if ((flags & (Justification::horizontallyCentred | Justification::horizontallyJustified)) != 0)
|
||||
w /= 2.0f;
|
||||
|
|
@ -371,11 +366,6 @@ void Graphics::fillRectList (const RectangleList<int>& rects) const
|
|||
context.fillRect (r, false);
|
||||
}
|
||||
|
||||
void Graphics::setPixel (int x, int y) const
|
||||
{
|
||||
context.fillRect (coordsToRectangle (x, y, 1, 1), false);
|
||||
}
|
||||
|
||||
void Graphics::fillAll() const
|
||||
{
|
||||
fillRect (context.getClipBounds());
|
||||
|
|
@ -385,7 +375,7 @@ void Graphics::fillAll (Colour colourToUse) const
|
|||
{
|
||||
if (! colourToUse.isTransparent())
|
||||
{
|
||||
const Rectangle<int> clip (context.getClipBounds());
|
||||
auto clip = context.getClipBounds();
|
||||
|
||||
context.saveState();
|
||||
context.setFill (colourToUse);
|
||||
|
|
@ -507,7 +497,7 @@ void Graphics::drawRoundedRectangle (Rectangle<float> r, float cornerSize, float
|
|||
strokePath (p, PathStrokeType (lineThickness));
|
||||
}
|
||||
|
||||
void Graphics::drawArrow (const Line<float>& line, float lineThickness, float arrowheadWidth, float arrowheadLength) const
|
||||
void Graphics::drawArrow (Line<float> line, float lineThickness, float arrowheadWidth, float arrowheadLength) const
|
||||
{
|
||||
Path p;
|
||||
p.addArrow (line, lineThickness, arrowheadWidth, arrowheadLength);
|
||||
|
|
@ -531,7 +521,7 @@ void Graphics::fillCheckerBoard (Rectangle<int> area,
|
|||
}
|
||||
else
|
||||
{
|
||||
const Rectangle<int> clipped (context.getClipBounds().getIntersection (area));
|
||||
auto clipped = context.getClipBounds().getIntersection (area);
|
||||
|
||||
if (! clipped.isEmpty())
|
||||
{
|
||||
|
|
@ -573,7 +563,7 @@ void Graphics::drawHorizontalLine (const int y, float left, float right) const
|
|||
context.fillRect (Rectangle<float> (left, (float) y, right - left, 1.0f));
|
||||
}
|
||||
|
||||
void Graphics::drawLine (const Line<float>& line) const
|
||||
void Graphics::drawLine (Line<float> line) const
|
||||
{
|
||||
context.drawLine (line);
|
||||
}
|
||||
|
|
@ -588,15 +578,15 @@ void Graphics::drawLine (float x1, float y1, float x2, float y2, float lineThick
|
|||
drawLine (Line<float> (x1, y1, x2, y2), lineThickness);
|
||||
}
|
||||
|
||||
void Graphics::drawLine (const Line<float>& line, const float lineThickness) const
|
||||
void Graphics::drawLine (Line<float> line, const float lineThickness) const
|
||||
{
|
||||
Path p;
|
||||
p.addLineSegment (line, lineThickness);
|
||||
fillPath (p);
|
||||
}
|
||||
|
||||
void Graphics::drawDashedLine (const Line<float>& line, const float* const dashLengths,
|
||||
const int numDashLengths, const float lineThickness, int n) const
|
||||
void Graphics::drawDashedLine (Line<float> line, const float* dashLengths,
|
||||
int numDashLengths, float lineThickness, int n) const
|
||||
{
|
||||
jassert (n >= 0 && n < numDashLengths); // your start index must be valid!
|
||||
|
||||
|
|
|
|||
|
|
@ -338,12 +338,6 @@ public:
|
|||
void drawRoundedRectangle (Rectangle<float> rectangle,
|
||||
float cornerSize, float lineThickness) const;
|
||||
|
||||
/** Fills a 1x1 pixel using the current colour or brush.
|
||||
Note that because the context may be transformed, this is effectively the same as
|
||||
calling fillRect (x, y, 1, 1), and the actual result may involve multiple pixels.
|
||||
*/
|
||||
void setPixel (int x, int y) const;
|
||||
|
||||
//==============================================================================
|
||||
/** Fills an ellipse with the current colour or brush.
|
||||
The ellipse is drawn to fit inside the given rectangle.
|
||||
|
|
@ -388,14 +382,14 @@ public:
|
|||
TIP: If you're trying to draw horizontal or vertical lines, don't use this -
|
||||
it's better to use fillRect() instead unless you really need an angled line.
|
||||
*/
|
||||
void drawLine (const Line<float>& line) const;
|
||||
void drawLine (Line<float> line) const;
|
||||
|
||||
/** Draws a line between two points with a given thickness.
|
||||
@see Path::addLineSegment
|
||||
TIP: If you're trying to draw horizontal or vertical lines, don't use this -
|
||||
it's better to use fillRect() instead unless you really need an angled line.
|
||||
*/
|
||||
void drawLine (const Line<float>& line, float lineThickness) const;
|
||||
void drawLine (Line<float> line, float lineThickness) const;
|
||||
|
||||
/** Draws a dashed line using a custom set of dash-lengths.
|
||||
|
||||
|
|
@ -408,7 +402,7 @@ public:
|
|||
@param dashIndexToStartFrom the index in the dash-length array to use for the first segment
|
||||
@see PathStrokeType::createDashedStroke
|
||||
*/
|
||||
void drawDashedLine (const Line<float>& line,
|
||||
void drawDashedLine (Line<float> line,
|
||||
const float* dashLengths, int numDashLengths,
|
||||
float lineThickness = 1.0f,
|
||||
int dashIndexToStartFrom = 0) const;
|
||||
|
|
@ -441,7 +435,7 @@ public:
|
|||
/** Draws a path's outline using the currently selected colour or brush. */
|
||||
void strokePath (const Path& path,
|
||||
const PathStrokeType& strokeType,
|
||||
const AffineTransform& transform = AffineTransform()) const;
|
||||
const AffineTransform& transform = {}) const;
|
||||
|
||||
/** Draws a line with an arrowhead at its end.
|
||||
|
||||
|
|
@ -450,7 +444,7 @@ 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 (const Line<float>& line,
|
||||
void drawArrow (Line<float> line,
|
||||
float lineThickness,
|
||||
float arrowheadWidth,
|
||||
float arrowheadLength) const;
|
||||
|
|
@ -743,7 +737,7 @@ private:
|
|||
LowLevelGraphicsContext& context;
|
||||
ScopedPointer<LowLevelGraphicsContext> contextToDelete;
|
||||
|
||||
bool saveStatePending;
|
||||
bool saveStatePending = false;
|
||||
void saveStateIfPending();
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Graphics)
|
||||
|
|
|
|||
|
|
@ -280,7 +280,7 @@ void Path::startNewSubPath (const float x, const float y)
|
|||
data.elements[numElements++] = y;
|
||||
}
|
||||
|
||||
void Path::startNewSubPath (const Point<float> start)
|
||||
void Path::startNewSubPath (Point<float> start)
|
||||
{
|
||||
startNewSubPath (start.x, start.y);
|
||||
}
|
||||
|
|
@ -301,7 +301,7 @@ void Path::lineTo (const float x, const float y)
|
|||
bounds.extend (x, y);
|
||||
}
|
||||
|
||||
void Path::lineTo (const Point<float> end)
|
||||
void Path::lineTo (Point<float> end)
|
||||
{
|
||||
lineTo (end.x, end.y);
|
||||
}
|
||||
|
|
@ -326,8 +326,7 @@ void Path::quadraticTo (const float x1, const float y1,
|
|||
bounds.extend (x1, y1, x2, y2);
|
||||
}
|
||||
|
||||
void Path::quadraticTo (const Point<float> controlPoint,
|
||||
const Point<float> endPoint)
|
||||
void Path::quadraticTo (Point<float> controlPoint, Point<float> endPoint)
|
||||
{
|
||||
quadraticTo (controlPoint.x, controlPoint.y,
|
||||
endPoint.x, endPoint.y);
|
||||
|
|
@ -358,9 +357,9 @@ void Path::cubicTo (const float x1, const float y1,
|
|||
bounds.extend (x3, y3);
|
||||
}
|
||||
|
||||
void Path::cubicTo (const Point<float> controlPoint1,
|
||||
const Point<float> controlPoint2,
|
||||
const Point<float> endPoint)
|
||||
void Path::cubicTo (Point<float> controlPoint1,
|
||||
Point<float> controlPoint2,
|
||||
Point<float> endPoint)
|
||||
{
|
||||
cubicTo (controlPoint1.x, controlPoint1.y,
|
||||
controlPoint2.x, controlPoint2.y,
|
||||
|
|
@ -675,7 +674,7 @@ void Path::addPieSegment (Rectangle<float> segmentBounds,
|
|||
}
|
||||
|
||||
//==============================================================================
|
||||
void Path::addLineSegment (const Line<float>& line, float lineThickness)
|
||||
void Path::addLineSegment (Line<float> line, float lineThickness)
|
||||
{
|
||||
auto reversed = line.reversed();
|
||||
lineThickness *= 0.5f;
|
||||
|
|
@ -687,7 +686,7 @@ void Path::addLineSegment (const Line<float>& line, float lineThickness)
|
|||
closeSubPath();
|
||||
}
|
||||
|
||||
void Path::addArrow (const Line<float>& line, float lineThickness,
|
||||
void Path::addArrow (Line<float> line, float lineThickness,
|
||||
float arrowheadWidth, float arrowheadLength)
|
||||
{
|
||||
auto reversed = line.reversed();
|
||||
|
|
@ -705,8 +704,8 @@ void Path::addArrow (const Line<float>& line, float lineThickness,
|
|||
closeSubPath();
|
||||
}
|
||||
|
||||
void Path::addPolygon (const Point<float> centre, const int numberOfSides,
|
||||
const float radius, const float startAngle)
|
||||
void Path::addPolygon (Point<float> centre, int numberOfSides,
|
||||
float radius, float startAngle)
|
||||
{
|
||||
jassert (numberOfSides > 1); // this would be silly.
|
||||
|
||||
|
|
@ -729,8 +728,8 @@ void Path::addPolygon (const Point<float> centre, const int numberOfSides,
|
|||
}
|
||||
}
|
||||
|
||||
void Path::addStar (const Point<float> centre, const int numberOfPoints,
|
||||
const float innerRadius, const float outerRadius, const float startAngle)
|
||||
void Path::addStar (Point<float> centre, int numberOfPoints, float innerRadius,
|
||||
float outerRadius, float startAngle)
|
||||
{
|
||||
jassert (numberOfPoints > 1); // this would be silly.
|
||||
|
||||
|
|
@ -755,9 +754,9 @@ void Path::addStar (const Point<float> centre, const int numberOfPoints,
|
|||
}
|
||||
}
|
||||
|
||||
void Path::addBubble (const Rectangle<float>& bodyArea,
|
||||
const Rectangle<float>& maximumArea,
|
||||
const Point<float> arrowTip,
|
||||
void Path::addBubble (Rectangle<float> bodyArea,
|
||||
Rectangle<float> maximumArea,
|
||||
Point<float> arrowTip,
|
||||
const float cornerSize,
|
||||
const float arrowBaseWidth)
|
||||
{
|
||||
|
|
@ -968,8 +967,8 @@ void Path::applyTransform (const AffineTransform& transform) noexcept
|
|||
|
||||
|
||||
//==============================================================================
|
||||
AffineTransform Path::getTransformToScaleToFit (const Rectangle<float>& area,
|
||||
bool preserveProportions, Justification justification) const
|
||||
AffineTransform Path::getTransformToScaleToFit (Rectangle<float> area, bool preserveProportions,
|
||||
Justification justification) const
|
||||
{
|
||||
return getTransformToScaleToFit (area.getX(), area.getY(), area.getWidth(), area.getHeight(),
|
||||
preserveProportions, justification);
|
||||
|
|
@ -1059,7 +1058,7 @@ bool Path::contains (const float x, const float y, const float tolerance) const
|
|||
: ((negativeCrossings + positiveCrossings) & 1) != 0;
|
||||
}
|
||||
|
||||
bool Path::contains (const Point<float> point, const float tolerance) const
|
||||
bool Path::contains (Point<float> point, const float tolerance) const
|
||||
{
|
||||
return contains (point.x, point.y, tolerance);
|
||||
}
|
||||
|
|
@ -1138,7 +1137,7 @@ Point<float> Path::getPointAlongPath (float distanceFromStart,
|
|||
return { i.x2, i.y2 };
|
||||
}
|
||||
|
||||
float Path::getNearestPoint (const Point<float> targetPoint, Point<float>& pointOnPath,
|
||||
float Path::getNearestPoint (Point<float> targetPoint, Point<float>& pointOnPath,
|
||||
const AffineTransform& transform,
|
||||
float tolerance) const
|
||||
{
|
||||
|
|
|
|||
|
|
@ -129,7 +129,7 @@ public:
|
|||
|
||||
@see closeSubPath, setUsingNonZeroWinding
|
||||
*/
|
||||
bool contains (const Point<float> point,
|
||||
bool contains (Point<float> point,
|
||||
float tolerance = defaultToleranceForTesting) const;
|
||||
|
||||
/** Checks whether a line crosses the path.
|
||||
|
|
@ -211,7 +211,7 @@ public:
|
|||
|
||||
@see lineTo, quadraticTo, cubicTo, closeSubPath
|
||||
*/
|
||||
void startNewSubPath (const Point<float> start);
|
||||
void startNewSubPath (Point<float> start);
|
||||
|
||||
/** Closes a the current sub-path with a line back to its start-point.
|
||||
|
||||
|
|
@ -247,7 +247,7 @@ public:
|
|||
|
||||
@see startNewSubPath, quadraticTo, cubicTo, closeSubPath
|
||||
*/
|
||||
void lineTo (const Point<float> end);
|
||||
void lineTo (Point<float> end);
|
||||
|
||||
/** Adds a quadratic bezier curve from the shape's last position to a new position.
|
||||
|
||||
|
|
@ -272,8 +272,8 @@ public:
|
|||
|
||||
@see startNewSubPath, lineTo, cubicTo, closeSubPath
|
||||
*/
|
||||
void quadraticTo (const Point<float> controlPoint,
|
||||
const Point<float> endPoint);
|
||||
void quadraticTo (Point<float> controlPoint,
|
||||
Point<float> endPoint);
|
||||
|
||||
/** Adds a cubic bezier curve from the shape's last position to a new position.
|
||||
|
||||
|
|
@ -300,9 +300,9 @@ public:
|
|||
|
||||
@see startNewSubPath, lineTo, quadraticTo, closeSubPath
|
||||
*/
|
||||
void cubicTo (const Point<float> controlPoint1,
|
||||
const Point<float> controlPoint2,
|
||||
const Point<float> endPoint);
|
||||
void cubicTo (Point<float> controlPoint1,
|
||||
Point<float> controlPoint2,
|
||||
Point<float> endPoint);
|
||||
|
||||
/** Returns the last point that was added to the path by one of the drawing methods.
|
||||
*/
|
||||
|
|
@ -320,7 +320,7 @@ public:
|
|||
@see addRoundedRectangle, addTriangle
|
||||
*/
|
||||
template <typename ValueType>
|
||||
void addRectangle (const Rectangle<ValueType>& rectangle)
|
||||
void addRectangle (Rectangle<ValueType> rectangle)
|
||||
{
|
||||
addRectangle (static_cast<float> (rectangle.getX()), static_cast<float> (rectangle.getY()),
|
||||
static_cast<float> (rectangle.getWidth()), static_cast<float> (rectangle.getHeight()));
|
||||
|
|
@ -355,7 +355,7 @@ public:
|
|||
@see addRectangle, addTriangle
|
||||
*/
|
||||
template <typename ValueType>
|
||||
void addRoundedRectangle (const Rectangle<ValueType>& rectangle, float cornerSizeX, float cornerSizeY)
|
||||
void addRoundedRectangle (Rectangle<ValueType> rectangle, float cornerSizeX, float cornerSizeY)
|
||||
{
|
||||
addRoundedRectangle (static_cast<float> (rectangle.getX()), static_cast<float> (rectangle.getY()),
|
||||
static_cast<float> (rectangle.getWidth()), static_cast<float> (rectangle.getHeight()),
|
||||
|
|
@ -367,7 +367,7 @@ public:
|
|||
@see addRectangle, addTriangle
|
||||
*/
|
||||
template <typename ValueType>
|
||||
void addRoundedRectangle (const Rectangle<ValueType>& rectangle, float cornerSize)
|
||||
void addRoundedRectangle (Rectangle<ValueType> rectangle, float cornerSize)
|
||||
{
|
||||
addRoundedRectangle (rectangle, cornerSize, cornerSize);
|
||||
}
|
||||
|
|
@ -534,13 +534,13 @@ public:
|
|||
|
||||
@see addArrow
|
||||
*/
|
||||
void addLineSegment (const Line<float>& line, float lineThickness);
|
||||
void addLineSegment (Line<float> line, float lineThickness);
|
||||
|
||||
/** Adds a line with an arrowhead on the end.
|
||||
The arrow is added as a new closed sub-path. (Any currently open paths will be left open).
|
||||
@see PathStrokeType::createStrokeWithArrowheads
|
||||
*/
|
||||
void addArrow (const Line<float>& line,
|
||||
void addArrow (Line<float> line,
|
||||
float lineThickness,
|
||||
float arrowheadWidth,
|
||||
float arrowheadLength);
|
||||
|
|
@ -548,7 +548,7 @@ public:
|
|||
/** Adds a polygon shape to the path.
|
||||
@see addStar
|
||||
*/
|
||||
void addPolygon (const Point<float> centre,
|
||||
void addPolygon (Point<float> centre,
|
||||
int numberOfSides,
|
||||
float radius,
|
||||
float startAngle = 0.0f);
|
||||
|
|
@ -556,7 +556,7 @@ public:
|
|||
/** Adds a star shape to the path.
|
||||
@see addPolygon
|
||||
*/
|
||||
void addStar (const Point<float> centre,
|
||||
void addStar (Point<float> centre,
|
||||
int numberOfPoints,
|
||||
float innerRadius,
|
||||
float outerRadius,
|
||||
|
|
@ -572,8 +572,8 @@ public:
|
|||
@param cornerSize the size of the rounded corners
|
||||
@param arrowBaseWidth the width of the base of the arrow where it joins the main rectangle
|
||||
*/
|
||||
void addBubble (const Rectangle<float>& bodyArea,
|
||||
const Rectangle<float>& maximumArea,
|
||||
void addBubble (Rectangle<float> bodyArea,
|
||||
Rectangle<float> maximumArea,
|
||||
const Point<float> arrowTipPosition,
|
||||
const float cornerSize,
|
||||
const float arrowBaseWidth);
|
||||
|
|
@ -677,7 +677,7 @@ public:
|
|||
@see applyTransform, scaleToFit
|
||||
|
||||
*/
|
||||
AffineTransform getTransformToScaleToFit (const Rectangle<float>& area,
|
||||
AffineTransform getTransformToScaleToFit (Rectangle<float> area,
|
||||
bool preserveProportions,
|
||||
Justification justificationType = Justification::centred) const;
|
||||
|
||||
|
|
|
|||
|
|
@ -2295,11 +2295,11 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
void drawLine (const Line<float>& line)
|
||||
void drawLine (Line<float> line)
|
||||
{
|
||||
Path p;
|
||||
p.addLineSegment (line, 1.0f);
|
||||
fillPath (p, AffineTransform());
|
||||
fillPath (p, {});
|
||||
}
|
||||
|
||||
void drawImage (const Image& sourceImage, const AffineTransform& trans)
|
||||
|
|
@ -2319,7 +2319,7 @@ public:
|
|||
void renderImage (const Image& sourceImage, const AffineTransform& trans,
|
||||
const BaseRegionType* const tiledFillClipRegion)
|
||||
{
|
||||
const AffineTransform t (transform.getTransformWith (trans));
|
||||
auto t = transform.getTransformWith (trans);
|
||||
|
||||
const int alpha = fillType.colour.getAlpha();
|
||||
|
||||
|
|
@ -2356,18 +2356,17 @@ public:
|
|||
{
|
||||
if (tiledFillClipRegion != nullptr)
|
||||
{
|
||||
tiledFillClipRegion->renderImageTransformed (getThis(), sourceImage, alpha, t, interpolationQuality, true);
|
||||
tiledFillClipRegion->renderImageTransformed (getThis(), sourceImage, alpha,
|
||||
t, interpolationQuality, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
Path p;
|
||||
p.addRectangle (sourceImage.getBounds());
|
||||
|
||||
typename BaseRegionType::Ptr c (clip->clone());
|
||||
c = c->clipToPath (p, t);
|
||||
|
||||
if (c != nullptr)
|
||||
c->renderImageTransformed (getThis(), sourceImage, alpha, t, interpolationQuality, false);
|
||||
if (auto c = clip->clone()->clipToPath (p, t))
|
||||
c->renderImageTransformed (getThis(), sourceImage, alpha,
|
||||
t, interpolationQuality, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2386,7 +2385,7 @@ public:
|
|||
|
||||
ColourGradient g2 (*(fillType.gradient));
|
||||
g2.multiplyOpacity (fillType.getOpacity());
|
||||
AffineTransform t (transform.getTransformWith (fillType.transform).translated (-0.5f, -0.5f));
|
||||
auto t = transform.getTransformWith (fillType.transform).translated (-0.5f, -0.5f);
|
||||
|
||||
const bool isIdentity = t.isOnlyTranslation();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue