chromium/third_party/blink/renderer/platform/graphics/paint/property_tree_state.h

// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_PROPERTY_TREE_STATE_H_
#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_PROPERTY_TREE_STATE_H_

#include "base/dcheck_is_on.h"
#include "base/functional/function_ref.h"
#include "third_party/blink/renderer/platform/graphics/paint/clip_paint_property_node.h"
#include "third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h"
#include "third_party/blink/renderer/platform/graphics/paint/transform_paint_property_node.h"
#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"

namespace blink {

class PropertyTreeStateOrAlias;
class TraceablePropertyTreeStateOrAlias;
class PropertyTreeState;
class TraceablePropertyTreeState;

class PropertyTreeStateOrAliasData {};

class TraceablePropertyTreeStateOrAliasData {};

// A complete set of paint properties including those that are inherited from
// other objects.
template <typename Data>
class PLATFORM_EXPORT PropertyTreeStateOrAliasBase : public Data {};

class PLATFORM_EXPORT PropertyTreeStateOrAlias
    : public PropertyTreeStateOrAliasBase<PropertyTreeStateOrAliasData> {};

class TraceablePropertyTreeStateOrAlias
    : public PropertyTreeStateOrAliasBase<
          TraceablePropertyTreeStateOrAliasData> {};

template <typename Super>
class PLATFORM_EXPORT PropertyTreeStateBase : public Super {};

class PLATFORM_EXPORT PropertyTreeState
    : public PropertyTreeStateBase<PropertyTreeStateOrAlias> {};

class PLATFORM_EXPORT TraceablePropertyTreeState
    : public PropertyTreeStateBase<TraceablePropertyTreeStateOrAlias> {};

template <typename Data>
inline PropertyTreeState PropertyTreeStateOrAliasBase<Data>::Root() {}

template <typename Data>
inline PropertyTreeState PropertyTreeStateOrAliasBase<Data>::Unalias() const {}

template <typename Data>
inline bool PropertyTreeStateOrAliasBase<Data>::Changed(
    PaintPropertyChangeType change,
    const PropertyTreeState& relative_to) const {}

template <typename Data>
inline bool PropertyTreeStateOrAliasBase<Data>::ChangedToRoot(
    PaintPropertyChangeType change) const {}

template <typename Data>
inline String PropertyTreeStateOrAliasBase<Data>::ToString() const {}

#if DCHECK_IS_ON()
template <typename Data>
inline String PropertyTreeStateOrAliasBase<Data>::ToTreeString() const {}
#endif

template <typename Data>
inline std::unique_ptr<JSONObject> PropertyTreeStateOrAliasBase<Data>::ToJSON()
    const {}

template <typename Data>
inline std::ostream& operator<<(
    std::ostream& os,
    const PropertyTreeStateOrAliasBase<Data>& state) {}

}  // namespace blink

#endif  // THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_PROPERTY_TREE_STATE_H_