Bug 172866 - Object bounding box wrong for some paths
Summary: Object bounding box wrong for some paths
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: SVG (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Simon Fraser (smfr)
URL: https://codepen.io/AmeliaBR/details/d...
Keywords:
Depends on:
Blocks:
 
Reported: 2017-06-02 11:41 PDT by Simon Fraser (smfr)
Modified: 2017-06-04 10:57 PDT (History)
5 users (show)

See Also:


Attachments
Testcase (2.31 KB, text/html)
2017-06-02 16:17 PDT, Simon Fraser (smfr)
no flags Details
Better testcase (2.20 KB, text/html)
2017-06-02 16:47 PDT, Simon Fraser (smfr)
no flags Details
Patch (786.15 KB, patch)
2017-06-04 09:47 PDT, Simon Fraser (smfr)
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Comment 1 Simon Fraser (smfr) 2017-06-02 16:17:54 PDT
Created attachment 311881 [details]
Testcase
Comment 2 Simon Fraser (smfr) 2017-06-02 16:47:45 PDT
Created attachment 311884 [details]
Better testcase
Comment 3 Simon Fraser (smfr) 2017-06-02 17:25:50 PDT
RenderSVGShape::calculateObjectBoundingBox() is calling path().fastBoundingRect() which, on macOS, calls CGPathGetBoundingBox(). The comments say:

/* Return the bounding box of `path'. The bounding box is the smallest
   rectangle completely enclosing all points in the path, including control
   points for Bézier cubic and quadratic curves. If the path is empty, then
   return `CGRectNull'. */

We should instead use:

/* Return the path bounding box of `path'. The path bounding box is the
   smallest rectangle completely enclosing all points in the path, *not*
   including control points for Bézier cubic and quadratic curves. If the
   path is empty, then return `CGRectNull'. */

CG_EXTERN CGRect CGPathGetPathBoundingBox(CGPathRef path);

but need to vet all callers of Path::fastBoundingRect().
Comment 4 Simon Fraser (smfr) 2017-06-02 17:36:02 PDT
See also https://trac.webkit.org/changeset/99460/webkit
Comment 5 Simon Fraser (smfr) 2017-06-04 09:47:58 PDT
Created attachment 311965 [details]
Patch
Comment 6 WebKit Commit Bot 2017-06-04 10:57:08 PDT
Comment on attachment 311965 [details]
Patch

Clearing flags on attachment: 311965

Committed r217772: <http://trac.webkit.org/changeset/217772>
Comment 7 WebKit Commit Bot 2017-06-04 10:57:10 PDT
All reviewed patches have been landed.  Closing bug.