blob: 21c620cf9849dae8cc9284cbf34cfb8c88ae95b6 [file] [log] [blame]
// 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