android_multiviewwer/app/src/main/cpp/TransitionStrategy.h
2025-08-29 16:00:24 +09:00

39 lines
1.4 KiB
C++

#pragma once
#include <android/native_window.h>
#include "MediaAsset.h"
#include "AnimationStrategy.h" // AnimationState를 사용하기 위해 포함
class Renderer; // 전방 선언
/**
* @brief 모든 전환 효과 전문가(Strategy) 클래스의 기반이 되는 인터페이스입니다.
*/
class TransitionStrategy {
public:
virtual ~TransitionStrategy() = default;
// --- ⬇️ 두 함수로 역할을 분리 ⬇️ ---
/**
* @brief 전환이 완료되었는지 확인합니다.
* @param elapsedMs 전환 시작 후 경과 시간
* @return 완료되었으면 true
*/
virtual bool isComplete(long long elapsedMs) const = 0;
/**
* @brief 전환 효과를 직접 렌더링 버퍼에 그립니다.
* @param sourceEnd 사라지는 미디어의 최종 애니메이션 상태
* @param destStart 나타나는 미디어의 시작 애니메이션 상태
* @return 전환이 완료되었으면 true를 반환합니다.
*/
virtual bool execute(Renderer* renderer, ANativeWindow_Buffer& buffer,
MediaAsset& source, const AnimationState& sourceEnd,
MediaAsset& dest, const AnimationState& destStart,
long long elapsedMs) = 0;
virtual void reset() = 0;
protected:
TransitionStrategy(long long duration) : durationMs_(duration) {}
long long durationMs_;
};