android_multiviewwer/app/src/main/cpp/TransitionStrategy.h

39 lines
1.4 KiB
C
Raw Normal View History

2025-08-28 17:43:36 +09:00
#pragma once
#include <android/native_window.h>
#include "MediaAsset.h"
2025-08-29 16:00:24 +09:00
#include "AnimationStrategy.h" // AnimationState를 사용하기 위해 포함
2025-08-28 17:43:36 +09:00
2025-08-29 16:00:24 +09:00
class Renderer; // 전방 선언
2025-08-28 17:43:36 +09:00
2025-08-29 16:00:24 +09:00
/**
* @brief (Strategy) .
*/
2025-08-28 17:43:36 +09:00
class TransitionStrategy {
public:
virtual ~TransitionStrategy() = default;
// --- ⬇️ 두 함수로 역할을 분리 ⬇️ ---
/**
* @brief .
* @param elapsedMs
* @return true
*/
virtual bool isComplete(long long elapsedMs) const = 0;
/**
* @brief .
2025-08-29 16:00:24 +09:00
* @param sourceEnd
* @param destStart
* @return true를 .
2025-08-28 17:43:36 +09:00
*/
2025-08-29 16:00:24 +09:00
virtual bool execute(Renderer* renderer, ANativeWindow_Buffer& buffer,
MediaAsset& source, const AnimationState& sourceEnd,
MediaAsset& dest, const AnimationState& destStart,
long long elapsedMs) = 0;
2025-08-28 17:43:36 +09:00
virtual void reset() = 0;
protected:
TransitionStrategy(long long duration) : durationMs_(duration) {}
long long durationMs_;
};