Change SkCanvasState to use inheritance.
authorscroggo <scroggo@google.com>
Tue, 15 Jul 2014 19:34:26 +0000 (12:34 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 15 Jul 2014 19:34:26 +0000 (12:34 -0700)
commit352c2181d15ed053c3b759f08ff1f51d50e2d3bb
treea4f92290a66062343ea9bf8ca4a5170167ccdc0a
parent3944a1d2374d2de8622b0192aa080dba6fb92c76
Change SkCanvasState to use inheritance.

The base class, SkCanvasState, now holds the version, width, and
height. These fields will always be a necessary part of the class.
(Also add in some padding.)
The other fields, which may change, have been moved into the
subclass, SkCanvasState_v1. If/when the version changes, it will
correspond to a new subclass.
In SkCanvasStateUtils::CreateFromCanvasState, check the version on
the base class, then do a static_cast to the version corresponding
to SkCanvasState::version.

Remove CANVAS_STATE_VERSION, which is redundant with the version
specified by the subclass.

Use unambiguous type for rowBytes.

Build Android with SK_SUPPORT_LEGACY_CLIPTOLAYERFLAG. This allows us
to run the full suite of CanvasState tests. It is also representative
of what will be used on Android by WebView.

Fix CanvasStateTest where it was broken inside ifdef'ed out code.

Use SkCanvas::getBaseLayerSize() instead of the deprecated
SkCanvas::getDeviceSize().

Update the comments in the header to be more clear. In particular,
an SkCanvasState can only be used to pass an SkCanvas' state to a
future version of Skia (or the same); not an older version.

NOTREECHECKS=true

BUG=b/15693384
R=reed@google.com, mtklein@google.com, djsollen@google.com

Author: scroggo@google.com

Review URL: https://codereview.chromium.org/372003002
include/utils/SkCanvasStateUtils.h
src/utils/SkCanvasStateUtils.cpp