8 Commits

Author SHA1 Message Date
Chris Craik
e4db79de12 Stencil support in new recorder/reorderer
bug:22480459
bug:26358504

Adds complex (non-rectangular) clipping support, and overdraw
visualization. Doesn't support stencil clipping in layers.

Change-Id: I8d10c7f1d2769ab5756774ca672344cc09901f87
2016-01-04 17:00:03 -08:00
Chris Craik
a2a70723b8 Simplify ClipArea to prefer Rect args
Change-Id: I8af83d01dc5dd8009a0cd235dd8b59dab61d8560
2015-12-17 23:31:44 +00:00
Chris Craik
15c3f19a44 Merged op dispatch in OpReorderer
bug:22480459

Also switches std::functions to function pointers on OpReorderer, and
switches AssetAtlas' entry getter methods to using pixelRef pointers,
so it's clear they're the keys.

Change-Id: I3040ce5ff4e178a8364e0fd7ab0876ada7d4de05
2015-12-07 12:34:46 -08:00
Chris Craik
ac02eb9035 Remove confusing behavior of Rect::intersect() and rename
bug:24670525

Removes silly 'do nothing if rects do not intersect' behavior, and
changes the name to clarify the difference (contrasting against
SkRect::intersect())

bug:24670525

Change-Id: Id2ca1cfea1a9d720d4dc70b251f426d9916f8b53
2015-10-05 14:16:26 -07:00
Chris Craik
4d3e704b04 Remove return values from clipping operations
bug:22530947

Also switch mode to enum class

Change-Id: Iabb38634c01f2e3203b1b715967d8828d95da190
2015-08-20 15:00:11 -07:00
Chris Craik
8ce8f3f4d6 Fix clip area behavior for REPLACE op
bug:22291400

Work around clippath-clipped-to-view-bounds behavior by
implementing REPLACE op fast path, avoiding the transition to
SkRegion/SkPath.

Change-Id: I63c1cf961db2d6e3759d83914de1036c9ac7497a
2015-07-16 13:31:41 -07:00
Tom Hudson
e30b53cec5 Enter RectangleMode when the clip region is a rectangle
ClipArea's region mode implementation store the region's boundary in
a rectangle, and if the region is that rectangle, set its region to
empty.  This is a bug, since as long as the ClipArea is in region
mode it treats its region as determinitive. When the next clipping
operation comes in, it is tested against the empty region instead of
against the valid rect.

Discovered via Skia GM testing.

Change-Id: I3bbc4e81c8d68636061f830156e017e9b5c7e587
2015-03-30 16:57:43 -04:00
Rob Tsuk
487a92caef Clipping performance improvements
Create a ClipArea class to handle tracking clip regions. This class can
select the most efficient implementation depending on the types of
clipping presented.

ClipArea re-used the rectangle and region-based clipping
implementations as well as adding a "list of rotated rectangles"
approach that is more efficient for rotated views with children.

Change-Id: I2133761a2462ebc0852b394220e265974b3086f0
2015-01-14 17:24:58 -08:00