chromium/ash/ambient/model/ambient_topic_queue_animation_delegate.h

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

#ifndef ASH_AMBIENT_MODEL_AMBIENT_TOPIC_QUEUE_ANIMATION_DELEGATE_H_
#define ASH_AMBIENT_MODEL_AMBIENT_TOPIC_QUEUE_ANIMATION_DELEGATE_H_

#include <vector>

#include "ash/ambient/model/ambient_topic_queue.h"
#include "ash/ash_export.h"
#include "ui/gfx/geometry/size.h"

namespace cc {
class SkottieResourceMetadataMap;
}  // namespace cc

namespace ash {

// For the UI that renders a Lottie animation file using the Skottie library.
class ASH_EXPORT AmbientTopicQueueAnimationDelegate
    : public AmbientTopicQueue::Delegate {
 public:
  explicit AmbientTopicQueueAnimationDelegate(
      const cc::SkottieResourceMetadataMap& resource_metadata);
  AmbientTopicQueueAnimationDelegate(
      const AmbientTopicQueueAnimationDelegate&) = delete;
  AmbientTopicQueueAnimationDelegate& operator=(
      const AmbientTopicQueueAnimationDelegate&) = delete;
  ~AmbientTopicQueueAnimationDelegate() override;

  // AmbientTopicQueue::Delegate implementation:
  std::vector<gfx::Size> GetTopicSizes() override;

 private:
  const std::vector<gfx::Size> topic_sizes_;
};

}  // namespace ash

#endif  // ASH_AMBIENT_MODEL_AMBIENT_TOPIC_QUEUE_ANIMATION_DELEGATE_H_