1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "platform/graphics/CompositorMutableState.h"
#include "cc/layers/layer_impl.h"
#include "cc/trees/layer_tree_impl.h"
#include "platform/graphics/CompositorMutation.h"
namespace blink {
CompositorMutableState::CompositorMutableState(CompositorMutation* mutation,
cc::LayerImpl* main,
cc::LayerImpl* scroll)
: m_mutation(mutation), m_mainLayer(main), m_scrollLayer(scroll) {}
CompositorMutableState::~CompositorMutableState() {}
double CompositorMutableState::opacity() const {
return m_mainLayer->Opacity();
}
void CompositorMutableState::setOpacity(double opacity) {
if (!m_mainLayer)
return;
m_mainLayer->layer_tree_impl()
->property_trees()
->effect_tree.OnOpacityAnimated(opacity, m_mainLayer->effect_tree_index(),
m_mainLayer->layer_tree_impl());
m_mutation->setOpacity(opacity);
}
const SkMatrix44& CompositorMutableState::transform() const {
return m_mainLayer ? m_mainLayer->Transform().matrix() : SkMatrix44::I();
}
void CompositorMutableState::setTransform(const SkMatrix44& matrix) {
if (!m_mainLayer)
return;
m_mainLayer->layer_tree_impl()
->property_trees()
->transform_tree.OnTransformAnimated(gfx::Transform(matrix),
m_mainLayer->transform_tree_index(),
m_mainLayer->layer_tree_impl());
m_mutation->setTransform(matrix);
}
float CompositorMutableState::scrollLeft() const {
return m_scrollLayer ? m_scrollLayer->CurrentScrollOffset().x() : 0.0;
}
void CompositorMutableState::setScrollLeft(float scrollLeft) {
if (!m_scrollLayer)
return;
gfx::ScrollOffset offset = m_scrollLayer->CurrentScrollOffset();
offset.set_x(scrollLeft);
m_scrollLayer->layer_tree_impl()
->property_trees()
->scroll_tree.OnScrollOffsetAnimated(
m_scrollLayer->id(), m_scrollLayer->scroll_tree_index(), offset,
m_scrollLayer->layer_tree_impl());
m_mutation->setScrollLeft(scrollLeft);
}
float CompositorMutableState::scrollTop() const {
return m_scrollLayer ? m_scrollLayer->CurrentScrollOffset().y() : 0.0;
}
void CompositorMutableState::setScrollTop(float scrollTop) {
if (!m_scrollLayer)
return;
gfx::ScrollOffset offset = m_scrollLayer->CurrentScrollOffset();
offset.set_y(scrollTop);
m_scrollLayer->layer_tree_impl()
->property_trees()
->scroll_tree.OnScrollOffsetAnimated(
m_scrollLayer->id(), m_scrollLayer->scroll_tree_index(), offset,
m_scrollLayer->layer_tree_impl());
m_mutation->setScrollTop(scrollTop);
}
} // namespace blink
|