This CL shrinks the bound computed for saveLayers that possess both an explicit
bound and a complex paint (e.g., one that affects transparent black). In this
case the bound of the layer should be the clipped explicit bound rather then
the clip prior/after the saveLayer/restore block.
In the following the first bound is the currently computed bound
while the second is the new/desired one:
For a 100x100 picture
saveLayer (no bound, no paint) [ 0 0 100 100 ] [ 50 50 100 100 ]
setMatrix (translate 50, 50) [ 0 0 100 100 ] [ 50 50 100 100 ]
saveLayer (bound of 0, 0, 50, 50 - complex paint) [ 0 0 100 100 ] [ 50 50 100 100 ]
restore [ 0 0 100 100 ] [ 50 50 100 100 ]
restore [ 0 0 100 100 ] [ 50 50 100 100 ]
Review URL: https://codereview.chromium.org/696763002
- Add clipRect check
- Remove creation of scalerContext to check for color fonts in canDraw()
(no longer needed)
BUG=skia:2933
Review URL: https://codereview.chromium.org/696503004
When an error occurs reading a flattenable object, it should be unrefed instead of deleted because, in the case of SkXferMode, for example, we'd actually be deleting a cached object kept in a static array.
BUG=428789
Review URL: https://codereview.chromium.org/695633003
This change is here since previously color bitmap text was rendered using a
geometry processor in the coverage stage. The problem with this is that we
cannot correctly do xfer modes with this method. So I now make color bitmap text
draw using a color stage in the same was as a draw bitmap call.
One issue that arrises from this fix is that we end up adding this final color
processor after any previous color processors. Thus if we have a custom blend
implemented as a color processor it will be before this text one and we won't
blend correctly. This issue will get fixed once an xfer processor is fully
implemented. I have hacked a test locally to show that if we can add the text
color processor to the begining of the color stages we do blend correctly in all
cases (so the xfer processor will be a fix).
BUG=skia:
Review URL: https://codereview.chromium.org/689923004
This will be a bit hairy to review.
The FillBounds and CollectLayers code has diverged significantly resulting in the rendering path seeing different bounds than the hoisting path. This CL merges the FillBounds changes into CollectLayers. A follow on CL will, hopefully, find a way to layer CollectLayers on top of FillBounds.
The only code in CollectLayers that is different from FillBounds is bracketed by "LAYER HOISTING" comments.
NOTREECHECKS=true
Review URL: https://codereview.chromium.org/685263004
Got a few crashes running the fuzzer locally, all related to handling NULL members/parameters in an inconsistent way.
BUG=skia:
Review URL: https://codereview.chromium.org/675013003
This assists debugging layer hoisting errors (e.g., when a layer is hoisted but not actually used in subsequent rendering).
Review URL: https://codereview.chromium.org/694533004
A picture may possess many layers that get placed in one plot of the atlas. In this case we can only remove the plot from the plotUsage tracking structure when all the layers belonging to the picture in that plot have been removed.
Review URL: https://codereview.chromium.org/654463004
Motivation: SkDocument_PDF can be refactored to stream all
PDF objects as SkCanvas calls are made, to save memory!
BUG=skia:3030
BUG=skia:2683
Review URL: https://codereview.chromium.org/691783002
This removes ADB from the Skia checkout and also does some quick
checks to make sure the version of ADB used meets a minimum threshold
Review URL: https://codereview.chromium.org/692513003
Adds miplevel as part of dfpath key, and scale factor so we know
how much to adjust to fit desired scale.
BUG=skia:2935
Review URL: https://codereview.chromium.org/687283002