diff options
Diffstat (limited to 'libs/hwui')
| -rw-r--r-- | libs/hwui/tests/common/scenes/HwLayerSizeAnimation.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/libs/hwui/tests/common/scenes/HwLayerSizeAnimation.cpp b/libs/hwui/tests/common/scenes/HwLayerSizeAnimation.cpp new file mode 100644 index 000000000000..d84113238e53 --- /dev/null +++ b/libs/hwui/tests/common/scenes/HwLayerSizeAnimation.cpp @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "TestSceneBase.h" + +class HwLayerSizeAnimation; + +static TestScene::Registrar _HwLayerSize(TestScene::Info{ + "hwlayersize", + "A nested pair of nodes with LayerType::RenderLayer(hardware) set on the child and " + "LayerType::None on the parent. " + "Tests animating the size of a hardware layer.", + TestScene::simpleCreateScene<HwLayerSizeAnimation> +}); + +class HwLayerSizeAnimation : public TestScene { +public: + sp<RenderNode> card; + void createContent(int width, int height, Canvas& canvas) override { + card = TestUtils::createNode(0, 0, 200, 200, + [](RenderProperties& props, Canvas& canvas) { + props.mutateLayerProperties().setType(LayerType::RenderLayer); + canvas.drawColor(0xFF0000FF, SkBlendMode::kSrcOver); + }); + canvas.drawColor(0xFFFFFFFF, SkBlendMode::kSrcOver); // background + canvas.drawRenderNode(card.get()); + } + void doFrame(int frameNr) override { + int curFrame = frameNr % 150; + //we animate left and top coordinates, which in turn animates width and + //height (bottom/right coordinates are fixed) + card->mutateStagingProperties().setLeftTop(curFrame, curFrame); + card->setPropertyFieldsDirty(RenderNode::X | RenderNode::Y); + } +}; |