aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorFlorin Malita <fmalita@chromium.org>2019-01-09 15:37:57 -0500
committerSkia Commit-Bot <skia-commit-bot@chromium.org>2019-01-10 02:06:54 +0000
commit919e209d1a21a79ece32d0a1aeaeaaa832abd5b7 (patch)
tree723636b36c3f96b99fe4ce0faae89dbb73b4d0bc /tools
parentd2fa7e33798c8b6bee0533e3dad02380d27bcfbe (diff)
downloadplatform_external_skqp-919e209d1a21a79ece32d0a1aeaeaaa832abd5b7.tar.gz
platform_external_skqp-919e209d1a21a79ece32d0a1aeaeaaa832abd5b7.tar.bz2
platform_external_skqp-919e209d1a21a79ece32d0a1aeaeaaa832abd5b7.zip
[sksg] 4x4 matrix support
Refactor the scene graph transform hierarchy to support 4x4 matrices: * rename current Transform to TransformEffect (operates as a render tree effect) * introduce a new Transform abstract base class, to replace current Matrix * refactor existing Matrix as a Transform specialization * introduce a new Matrix44 Transform specialization * refactor the existing composition helper (ComposedMatrix) as Concat, a Transform specialization (using composition instead of Matrix inheritance) Change-Id: Ic3c1b499e10a0a229a7a76d4bef3dbc6a8b49194 Reviewed-on: https://skia-review.googlesource.com/c/182666 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'tools')
-rw-r--r--tools/viewer/SlideDir.cpp23
1 files changed, 12 insertions, 11 deletions
diff --git a/tools/viewer/SlideDir.cpp b/tools/viewer/SlideDir.cpp
index 09ecd7ce14..54db653c5a 100644
--- a/tools/viewer/SlideDir.cpp
+++ b/tools/viewer/SlideDir.cpp
@@ -101,9 +101,10 @@ SkMatrix SlideMatrix(const sk_sp<Slide>& slide, const SkRect& dst) {
} // namespace
struct SlideDir::Rec {
- sk_sp<Slide> fSlide;
- sk_sp<sksg::Transform> fTransform;
- SkRect fRect;
+ sk_sp<Slide> fSlide;
+ sk_sp<sksg::RenderNode> fSlideRoot;
+ sk_sp<sksg::Matrix> fMatrix;
+ SkRect fRect;
};
class SlideDir::FocusController final : public sksg::Animator {
@@ -128,9 +129,9 @@ public:
fTarget = target;
// Move the shade & slide to front.
- fDir->fRoot->removeChild(fTarget->fTransform);
+ fDir->fRoot->removeChild(fTarget->fSlideRoot);
fDir->fRoot->addChild(fShade);
- fDir->fRoot->addChild(fTarget->fTransform);
+ fDir->fRoot->addChild(fTarget->fSlideRoot);
fM0 = SlideMatrix(fTarget->fSlide, fTarget->fRect);
fM1 = SlideMatrix(fTarget->fSlide, fRect);
@@ -197,7 +198,7 @@ protected:
}
SkASSERT(fTarget);
- fTarget->fTransform->getMatrix()->setMatrix(m);
+ fTarget->fMatrix->setMatrix(m);
const auto shadeOpacity = fOpacity0 + map_t * (fOpacity1 - fOpacity0);
fShadePaint->setOpacity(shadeOpacity);
@@ -305,7 +306,7 @@ void SlideDir::load(SkScalar winWidth, SkScalar winHeight) {
fCellSize.height()),
slideRect = cell.makeInset(kPadding.width(), kPadding.height());
- auto slideMatrix = SlideMatrix(slide, slideRect);
+ auto slideMatrix = sksg::Matrix::Make(SlideMatrix(slide, slideRect));
auto adapter = sk_make_sp<SlideAdapter>(slide);
auto slideGrp = sksg::Group::Make();
slideGrp->addChild(sksg::Draw::Make(sksg::Rect::Make(SkRect::MakeIWH(slideSize.width(),
@@ -314,13 +315,13 @@ void SlideDir::load(SkScalar winWidth, SkScalar winHeight) {
slideGrp->addChild(adapter);
slideGrp->addChild(MakeLabel(slide->getName(),
SkPoint::Make(slideSize.width() / 2, slideSize.height()),
- slideMatrix));
- auto slideTransform = sksg::Transform::Make(std::move(slideGrp), slideMatrix);
+ slideMatrix->getMatrix()));
+ auto slideRoot = sksg::TransformEffect::Make(std::move(slideGrp), slideMatrix);
sceneAnimators.push_back(adapter->makeForwardingAnimator());
- fRoot->addChild(slideTransform);
- fRecs.push_back({ slide, slideTransform, slideRect });
+ fRoot->addChild(slideRoot);
+ fRecs.push_back({ slide, slideRoot, slideMatrix, slideRect });
}
fScene = sksg::Scene::Make(fRoot, std::move(sceneAnimators));