Closed
Bug 282026
Opened 20 years ago
Closed 20 years ago
SVG linear gradient not rotated
Categories
(Core :: SVG, defect)
Tracking
()
RESOLVED
FIXED
People
(Reporter: gtrebaol, Assigned: tor)
References
()
Details
Attachments
(1 file, 1 obsolete file)
36.65 KB,
patch
|
scootermorris
:
review+
|
Details | Diff | Splinter Review |
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b) Gecko/20050210
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b) Gecko/20050210
When a rotated shape uses a linear gradient,
the gradient should rotate as well
Reproducible: Always
Steps to Reproduce:
1. load the URL
Actual Results:
The rotated trapeze contains a linear gradient with a vertical axis
Expected Results:
The axis of the gradient should be rotated at 120°
Assignee: general → tor
Status: UNCONFIRMED → NEW
Ever confirmed: true
Attachment #174405 -
Flags: review?(scootermorris)
Attachment #174405 -
Attachment is obsolete: true
Attachment #174405 -
Flags: review?(scootermorris)
Attachment #174422 -
Flags: review?(scootermorris)
Comment 3•20 years ago
|
||
Comment on attachment 174422 [details] [diff] [review]
same + fix a couple trivial radial gradient bugs
Just a couple of nits....
>+
>+ nsCOMPtr<nsIDOMSVGMatrix> bboxTransform;
>+ PRUint16 bbox;
>+ GetGradientUnits(&bbox);
>+ if (bbox == nsIDOMSVGGradientElement::SVG_GRUNITS_OBJECTBOUNDINGBOX) {
>+ nsISVGChildFrame *frame = nsnull;
>+ if (aSource)
>+ CallQueryInterface(aSource, &frame);
>+ nsCOMPtr<nsIDOMSVGRect> rect;
>+ if (frame) {
>+ frame->SetMatrixPropagation(PR_FALSE);
>+ frame->NotifyCanvasTMChanged();
>+ frame->GetBBox(getter_AddRefs(rect));
>+ frame->SetMatrixPropagation(PR_TRUE);
>+ frame->NotifyCanvasTMChanged();
>+ }
Why not just include this if-block inside of the if (frame) block
above? Then rect could be scoped inside of that block.
>+ if (rect) {
>+ float x, y, width, height;
>+ rect->GetX(&x);
>+ rect->GetY(&y);
>+ rect->GetWidth(&width);
>+ rect->GetHeight(&height);
>+ NS_NewSVGMatrix(getter_AddRefs(bboxTransform),
>+ width, 0, 0, height, x, y);
>+ }
>+ }
>Index: layout/svg/renderer/src/gdiplus/nsSVGGDIPlusGradient.cpp
>===================================================================
Strange spacing here. Was that intentional for some reason?
>+ rect[0].X = fX1 + INF * dy; rect[0].Y = fY1 - INF * dx;
> rect[1].X = fX1 + INF * dx + INF * dy; rect[1].Y = fY1 + INF * dy - INF * dx;
> rect[2].X = fX1 + INF * dx - INF * dy; rect[2].Y = fY1 + INF * dy + INF * dx;
>- rect[3].X = fX1 - INF * dy; rect[3].Y = fY1 + INF * dx;
>+ rect[3].X = fX1 - INF * dy; rect[3].Y = fY1 + INF * dx;
> left.AddPolygon(rect, 4);
> left.Transform(aMatrix);
>+ left.Transform(aCTM);
>
Same thing here...
>+ rect[1].X = fX2 + INF * dy; rect[1].Y = fY2 - INF * dx;
>+ rect[2].X = fX2 - INF * dy; rect[2].Y = fY2 + INF * dx;
> rect[3].X = fX2 - INF * dx - INF * dy; rect[3].Y = fY2 - INF * dy + INF * dx;
> right.AddPolygon(rect, 4);
> right.Transform(aMatrix);
>+ right.Transform(aCTM);
>
Attachment #174422 -
Flags: review?(scootermorris) → review+
Checked in.
Status: NEW → RESOLVED
Closed: 20 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•