Move NextFrame and PrevFrame from VideoSlider to VideoContext

Originally committed to SVN as r5200.
This commit is contained in:
Thomas Goyne 2011-01-16 07:15:53 +00:00
parent 08ec92046f
commit 64ebce6c0f
5 changed files with 15 additions and 48 deletions

View file

@ -250,7 +250,7 @@ struct video_frame_next : public Command {
STR_HELP("Seek to the next frame.") STR_HELP("Seek to the next frame.")
void operator()(agi::Context *c) { void operator()(agi::Context *c) {
c->videoBox->videoSlider->NextFrame(); c->videoContext->NextFrame();
} }
}; };
@ -276,7 +276,7 @@ struct video_frame_prev : public Command {
STR_HELP("Seek to the previous frame.") STR_HELP("Seek to the previous frame.")
void operator()(agi::Context *c) { void operator()(agi::Context *c) {
c->videoBox->videoSlider->PrevFrame(); c->videoContext->PrevFrame();
} }
}; };

View file

@ -303,31 +303,29 @@ void VideoContext::GetScriptSize(int &sw,int &sh) {
grid->ass->GetResolution(sw,sh); grid->ass->GetResolution(sw,sh);
} }
void VideoContext::PlayNextFrame() { void VideoContext::NextFrame() {
if (isPlaying) if (!videoProvider.get() || isPlaying || frame_n == videoProvider->GetFrameCount())
return; return;
int thisFrame = frame_n;
JumpToFrame(frame_n + 1); JumpToFrame(frame_n + 1);
// Start playing audio // Start playing audio
if (playAudioOnStep->GetBool()) { if (playAudioOnStep->GetBool()) {
audio->PlayRange(SampleRange( audio->PlayRange(SampleRange(
audio->SamplesFromMilliseconds(TimeAtFrame(thisFrame)), audio->SamplesFromMilliseconds(TimeAtFrame(frame_n - 1)),
audio->SamplesFromMilliseconds(TimeAtFrame(thisFrame + 1)))); audio->SamplesFromMilliseconds(TimeAtFrame(frame_n))));
} }
} }
void VideoContext::PlayPrevFrame() { void VideoContext::PrevFrame() {
if (isPlaying) if (!videoProvider.get() || isPlaying || frame_n == 0)
return; return;
int thisFrame = frame_n; JumpToFrame(frame_n - 1);
JumpToFrame(frame_n -1);
// Start playing audio // Start playing audio
if (playAudioOnStep->GetBool()) { if (playAudioOnStep->GetBool()) {
audio->PlayRange(SampleRange( audio->PlayRange(SampleRange(
audio->SamplesFromMilliseconds(TimeAtFrame(thisFrame - 1)), audio->SamplesFromMilliseconds(TimeAtFrame(frame_n)),
audio->SamplesFromMilliseconds(TimeAtFrame(thisFrame)))); audio->SamplesFromMilliseconds(TimeAtFrame(frame_n + 1))));
} }
} }

View file

@ -246,9 +246,9 @@ public:
/// Starting playing the video /// Starting playing the video
void Play(); void Play();
/// Play the next frame then stop /// Play the next frame then stop
void PlayNextFrame(); void NextFrame();
/// Play the previous frame then stop /// Play the previous frame then stop
void PlayPrevFrame(); void PrevFrame();
/// Seek to the beginning of the current line, then play to the end of it /// Seek to the beginning of the current line, then play to the end of it
void PlayLine(); void PlayLine();
/// Stop playing /// Stop playing

View file

@ -138,34 +138,6 @@ int VideoSlider::GetXAtValue(int value) {
return (int64_t)value*(int64_t)(w-10)/(int64_t)max+5; return (int64_t)value*(int64_t)(w-10)/(int64_t)max+5;
} }
/// @brief Next frame hotkey
/// @return
///
void VideoSlider::NextFrame() {
if (VideoContext::Get()->IsPlaying()) return;
//don't request out of range frames
if (val < max) VideoContext::Get()->PlayNextFrame();
Refresh(false);
Update();
}
/// @brief Previous frame hotkey
/// @return
///
void VideoSlider::PrevFrame() {
if (VideoContext::Get()->IsPlaying()) return;
//don't request out of range frames
if (val > 0) VideoContext::Get()->PlayPrevFrame();
Refresh(false);
Update();
}
BEGIN_EVENT_TABLE(VideoSlider, wxWindow) BEGIN_EVENT_TABLE(VideoSlider, wxWindow)
EVT_MOUSE_EVENTS(VideoSlider::OnMouse) EVT_MOUSE_EVENTS(VideoSlider::OnMouse)
EVT_KEY_DOWN(VideoSlider::OnKeyDown) EVT_KEY_DOWN(VideoSlider::OnKeyDown)
@ -276,8 +248,8 @@ void VideoSlider::OnKeyDown(wxKeyEvent &event) {
if (direction) { if (direction) {
// Standard move // Standard move
if (!ctrl && !shift && !alt) { if (!ctrl && !shift && !alt) {
if (direction == 1) NextFrame(); if (direction == 1) VideoContext::Get()->NextFrame();
else PrevFrame(); else VideoContext::Get()->PrevFrame();
return; return;
} }

View file

@ -83,8 +83,5 @@ public:
VideoSlider(wxWindow* parent, wxWindowID id); VideoSlider(wxWindow* parent, wxWindowID id);
~VideoSlider(); ~VideoSlider();
void NextFrame();
void PrevFrame();
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
}; };