chromium/third_party/skia/modules/skottie/include/SkottieProperty.h

/*
 * Copyright 2018 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#ifndef SkottieProperty_DEFINED
#define SkottieProperty_DEFINED

#include "include/core/SkColor.h"
#include "include/core/SkMatrix.h"
#include "include/core/SkPaint.h"
#include "include/core/SkPoint.h"
#include "include/core/SkRect.h"
#include "include/core/SkRefCnt.h"
#include "include/core/SkScalar.h"
#include "include/core/SkSpan.h"
#include "include/core/SkString.h"
#include "include/core/SkTypeface.h"
#include "include/private/base/SkAPI.h"
#include "include/utils/SkTextUtils.h"
#include "modules/skottie/include/TextShaper.h"

#include <cstddef>
#include <cstdint>
#include <functional>
#include <limits>
#include <memory>
#include <utility>

class SkCanvas;

namespace sksg {

class Color;
class OpacityEffect;

} // namespace sksg

namespace skottie {

ColorPropertyValue;
OpacityPropertyValue;

enum class TextPaintOrder : uint8_t {};

// Optional callback invoked when drawing text layers.
// Allows clients to render custom text decorations.
class GlyphDecorator : public SkRefCnt {};

struct TextPropertyValue {};

struct TransformPropertyValue {};

namespace internal { class SceneGraphRevalidator; }

/**
 * Property handles are adapters between user-facing AE model/values
 * and the internal scene-graph representation.
 */
template <typename ValueT, typename NodeT>
class SK_API PropertyHandle final {};

namespace internal {

class TextAdapter;
class TransformAdapter2D;

} // namespace internal

ColorPropertyHandle;
OpacityPropertyHandle;
TextPropertyHandle;
TransformPropertyHandle;

/**
 * A PropertyObserver can be used to track and manipulate certain properties of "interesting"
 * Lottie nodes.
 *
 * When registered with an animation builder, PropertyObserver receives notifications for
 * various properties of layer and shape nodes.  The |node_name| argument corresponds to the
 * name ("nm") node property.
 */
class SK_API PropertyObserver : public SkRefCnt {};

} // namespace skottie

#endif // SkottieProperty_DEFINED