#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 { … };
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) { … }
}
#endif