36 lines
1.2 KiB
C
36 lines
1.2 KiB
C
|
|
#pragma once
|
||
|
|
#include <android/native_window.h>
|
||
|
|
#include "MediaAsset.h"
|
||
|
|
|
||
|
|
// Renderer 클래스에 대한 전방 선언 (순환 참조 방지)
|
||
|
|
class Renderer;
|
||
|
|
|
||
|
|
class TransitionStrategy {
|
||
|
|
public:
|
||
|
|
virtual ~TransitionStrategy() = default;
|
||
|
|
|
||
|
|
// --- ⬇️ 두 함수로 역할을 분리 ⬇️ ---
|
||
|
|
/**
|
||
|
|
* @brief 전환이 완료되었는지 확인합니다.
|
||
|
|
* @param elapsedMs 전환 시작 후 경과 시간
|
||
|
|
* @return 완료되었으면 true
|
||
|
|
*/
|
||
|
|
virtual bool isComplete(long long elapsedMs) const = 0;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief 전환 효과를 직접 렌더링 버퍼에 그립니다.
|
||
|
|
* @param renderer Renderer 객체에 대한 포인터 (헬퍼 함수 호출용)
|
||
|
|
* @param buffer 그림을 그릴 캔버스
|
||
|
|
* @param source 사라지는 미디어
|
||
|
|
* @param dest 나타나는 미디어
|
||
|
|
* @param elapsedMs 전환 시작 후 경과 시간
|
||
|
|
* @return 전환이 완료되었으면 true, 아니면 false
|
||
|
|
*/
|
||
|
|
virtual void execute(Renderer* renderer, ANativeWindow_Buffer& buffer, MediaAsset& source, MediaAsset& dest, long long elapsedMs) = 0;
|
||
|
|
|
||
|
|
virtual void reset() = 0;
|
||
|
|
|
||
|
|
protected:
|
||
|
|
TransitionStrategy(long long duration) : durationMs_(duration) {}
|
||
|
|
long long durationMs_;
|
||
|
|
};
|