| // 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. |
| |
| #ifndef CompositorMutation_h |
| #define CompositorMutation_h |
| |
| #include "platform/graphics/CompositorMutableProperties.h" |
| #include "third_party/skia/include/utils/SkMatrix44.h" |
| #include "wtf/HashMap.h" |
| |
| namespace blink { |
| |
| class CompositorMutation { |
| public: |
| void setOpacity(float opacity) |
| { |
| m_mutatedFlags |= CompositorMutableProperty::kOpacity; |
| m_opacity = opacity; |
| } |
| void setScrollLeft(float scrollLeft) |
| { |
| m_mutatedFlags |= CompositorMutableProperty::kScrollLeft; |
| m_scrollLeft = scrollLeft; |
| } |
| void setScrollTop(float scrollTop) |
| { |
| m_mutatedFlags |= CompositorMutableProperty::kScrollTop; |
| m_scrollTop = scrollTop; |
| } |
| void setTransform(const SkMatrix44& transform) |
| { |
| m_mutatedFlags |= CompositorMutableProperty::kTransform; |
| m_transform = transform; |
| } |
| |
| bool isOpacityMutated() const { return m_mutatedFlags & CompositorMutableProperty::kOpacity; } |
| bool isScrollLeftMutated() const { return m_mutatedFlags & CompositorMutableProperty::kScrollLeft; } |
| bool isScrollTopMutated() const { return m_mutatedFlags & CompositorMutableProperty::kScrollTop; } |
| bool isTransformMutated() const { return m_mutatedFlags & CompositorMutableProperty::kTransform; } |
| |
| float opacity() const { return m_opacity; } |
| float scrollLeft() const { return m_scrollLeft; } |
| float scrollTop() const { return m_scrollTop; } |
| SkMatrix44 transform() const { return m_transform; } |
| |
| private: |
| uint32_t m_mutatedFlags = 0; |
| float m_opacity = 0; |
| float m_scrollLeft = 0; |
| float m_scrollTop = 0; |
| SkMatrix44 m_transform; |
| }; |
| |
| struct CompositorMutations { |
| HashMap<uint64_t, OwnPtr<CompositorMutation>> map; |
| }; |
| |
| } // namespace blink |
| |
| #endif // CompositorMutation_h |