Open Bug 1224093 Opened 9 years ago Updated 2 years ago

Use Moz2D types in SVG filter code

Categories

(Core :: SVG, defect)

defect

Tracking

()

People

(Reporter: n.nethercote, Unassigned)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

Let's convert a bunch of Thebes types to Moz2D types in SVG code.
This patch converts the following fields to Moz2D types:

- nsFilterInstance: mTargetBBox, mUserSpaceToFilterSpaceScale,
  mFilterSpaceToUserSpaceScale

- nsSVGFilterInstance: mTargetBBox, mUserSpaceToFilterSpaceScale,
  mFilterSpaceToUserSpaceScale, mUserSpaceBounds

It also changes a lot of types in code related to those fields, particularly
bounding boxes and clipRects.

This required adding a few new functions that work with Moz2D types that are
similar to existing functions that work with Thebes types.

- BaseRect::ScaleInverse() (similar to gfxRect::ScaleInverse())

- RectToIntRect() (similar to GfxRectToIntRect(), but in gfx/2d/Rect.h to be
  next to the existing IntRectToRect())

- nsLayoutUtils::RectToRect() (similar to nsLayoutUtils::RectToGfxRect())

- SVGBBox::ToRect() (similar to SVGBBox::ToThebesRect())
Attachment #8686413 - Flags: review?(jwatt)
Loss of precision is a much bigger issue for SVG than it is for HTML in general simply because transforms (particularly transforms with significant scaling) are very common in SVG. Previous work to convert to Moz2D types like this has resulted in precision loss bugs where people have noticed and reported broken rendering compared to Chrome/IE. I've halted my work on things like bug 984278 because of this. It seems like we may need SVG to do at least some of its intermediate calculations using double precision and convert at the point that we call Moz2D API.
Attachment #8686413 - Flags: review?(jwatt)
Assignee: n.nethercote → nobody
Status: ASSIGNED → NEW
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: