track bounds of top-level control ops

We don't need an explicit save-restore block to determine the bounds of
top-level control operations... the implicit save-restore that all
picutres have should logically work the same way.

The commented test failed before this and passes now.

Bug: skia:7735
Change-Id: Ibd31a3a9b0b48042ab3869a6bb57bc8d8bb78c09
Reviewed-on: https://skia-review.googlesource.com/126460
Commit-Queue: Mike Klein <mtklein@chromium.org>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Mike Klein <mtklein@chromium.org>
Reviewed-by: Brian Osman <brianosman@google.com>
This commit is contained in:
Mike Klein 2018-05-07 10:56:40 -04:00 committed by Skia Commit-Bot
parent 240fddd01b
commit ad67c66a58
2 changed files with 4 additions and 2 deletions

View File

@ -167,6 +167,9 @@ public:
, fCullRect(cullRect)
, fBounds(bounds) {
fCTM = SkMatrix::I();
// We push an extra save block to track the bounds of any top-level control operations.
fSaveStack.push({ 0, Bounds::MakeEmpty(), nullptr, fCTM });
}
void cleanUp() {

View File

@ -124,8 +124,7 @@ DEF_TEST(PictureNegativeSpace, r) {
REPORTER_ASSERT(r, pic->cullRect() == (SkRect{-20,-20,-10,-10}));
}
// TODO: we should also get the same results without the explicit save/restore
if (0) {
{
auto canvas = recorder.beginRecording(cull, &factory);
canvas->clipRect(cull);
canvas->drawRect({-20,-20,-10,-10}, SkPaint{});