[Webkit-unassigned] [Bug 35544] New: [OpenVG] Use masks to implement non-rectilinear clipping

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Mar 1 14:03:51 PST 2010


https://bugs.webkit.org/show_bug.cgi?id=35544

           Summary: [OpenVG] Use masks to implement non-rectilinear
                    clipping
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: Other
        OS/Version: All
            Status: UNCONFIRMED
          Severity: Normal
          Priority: P2
         Component: Platform
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: jpetsovits at rim.com


Rectilinear regions (a.k.a. upright rectangles) can be clipped in OpenVG using
its scissoring functionality. For all other shapes (i.e. paths and rotated
rectangles), we want mask clipping instead. Only OpenVG >= 1.1 provides the
required functions for managing masks, so all the masking code in this patch is
put into an #ifdef.

Mask layers (which are bitmaps of 1 or 8 bit depth per pixel) are a bit hairy
because, unlike the other state that we're keeping track of, they can't easily
be captured like colors, boolean enable-blah values, or stuff. Also, OpenVG
implementations can optimize on the plain bitmap concept by storing masks and
mask layers as set of paths. So we don't really want to read out mask layers in
memory for context state storage, we keep them as native VGMaskLayer. That
requires us to make sure the correct surface is current when the painter state
is stored (which we didn't ensure before) so a bit of surface management code
is added here as well.

vgRenderToMask() is affected by the current OpenVG path transformation, so we
don't have to manually transform the path like we do for scissor rectangles.
PainterOpenVG restricts the clipping modes to Intersect and Subtract, because
additive clipping a.k.a. removing clip regions would require too much (and
unnecessary) overhead for scissor rectangles which would need to be "unclipped"
as well. Right now PainterOpenVG can only add clips but never remove them
(except with restore()), and that's in line with GraphicsContext's
functionality.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list