Cosmetic code cleanup of VideoComponent.

This commit is contained in:
Leon Styhre 2020-11-17 22:13:33 +01:00
parent df18a822b7
commit 623c302174
2 changed files with 140 additions and 151 deletions

View file

@ -18,11 +18,6 @@
#define SCREENSAVER_FADE_IN_TIME 1200 #define SCREENSAVER_FADE_IN_TIME 1200
void VideoComponent::setScreensaverMode(bool isScreensaver)
{
mScreensaverMode = isScreensaver;
}
VideoComponent::VideoComponent( VideoComponent::VideoComponent(
Window* window) Window* window)
: GuiComponent(window), : GuiComponent(window),
@ -61,24 +56,6 @@ VideoComponent::~VideoComponent()
stopVideo(); stopVideo();
} }
void VideoComponent::onOriginChanged()
{
// Update the embeded static image.
mStaticImage.setOrigin(mOrigin);
}
void VideoComponent::onPositionChanged()
{
// Update the embeded static image.
mStaticImage.setPosition(mPosition);
}
void VideoComponent::onSizeChanged()
{
// Update the embeded static image.
mStaticImage.onSizeChanged();
}
bool VideoComponent::setVideo(std::string path) bool VideoComponent::setVideo(std::string path)
{ {
// Convert the path into a generic format. // Convert the path into a generic format.
@ -101,6 +78,11 @@ bool VideoComponent::setVideo(std::string path)
return false; return false;
} }
void VideoComponent::setDefaultVideo()
{
setVideo(mConfig.defaultVideoPath);
}
void VideoComponent::setImage(std::string path) void VideoComponent::setImage(std::string path)
{ {
// Check that the image has changed. // Check that the image has changed.
@ -111,17 +93,106 @@ void VideoComponent::setImage(std::string path)
mStaticImagePath = path; mStaticImagePath = path;
} }
void VideoComponent::setDefaultVideo() void VideoComponent::setScreensaverMode(bool isScreensaver)
{ {
setVideo(mConfig.defaultVideoPath); mScreensaverMode = isScreensaver;
} }
void VideoComponent::setOpacity(unsigned char opacity) void VideoComponent::setOpacity(unsigned char opacity)
{ {
// Set the opacity for the embedded static image.
mOpacity = opacity; mOpacity = opacity;
} }
void VideoComponent::onShow()
{
mBlockPlayer = false;
mPause = false;
mShowing = true;
manageState();
}
void VideoComponent::onHide()
{
mShowing = false;
manageState();
}
void VideoComponent::onPauseVideo()
{
mBlockPlayer = true;
mPause = true;
manageState();
}
void VideoComponent::onUnpauseVideo()
{
mBlockPlayer = false;
mPause = false;
manageState();
}
void VideoComponent::onScreensaverActivate()
{
mBlockPlayer = true;
mPause = true;
if (Settings::getInstance()->getString("ScreensaverType") == "dim")
stopVideo();
manageState();
}
void VideoComponent::onScreensaverDeactivate()
{
mBlockPlayer = false;
// Stop video when deactivating the screensaver to force a reload of the
// static image (if the theme is configured as such).
stopVideo();
manageState();
}
void VideoComponent::onGameLaunchedActivate()
{
mGameLaunched = true;
manageState();
}
void VideoComponent::onGameLaunchedDeactivate()
{
mGameLaunched = false;
stopVideo();
manageState();
}
void VideoComponent::topWindow(bool isTop)
{
if (isTop) {
mBlockPlayer = false;
mPause = false;
// Stop video when closing the menu to force a reload of the
// static image (if the theme is configured as such).
stopVideo();
}
else {
mBlockPlayer = true;
mPause = true;
}
manageState();
}
void VideoComponent::onOriginChanged()
{
mStaticImage.setOrigin(mOrigin);
}
void VideoComponent::onPositionChanged()
{
mStaticImage.setPosition(mPosition);
}
void VideoComponent::onSizeChanged()
{
mStaticImage.onSizeChanged();
}
void VideoComponent::render(const Transform4x4f& parentTrans) void VideoComponent::render(const Transform4x4f& parentTrans)
{ {
if (!isVisible()) if (!isVisible())
@ -207,35 +278,24 @@ std::vector<HelpPrompt> VideoComponent::getHelpPrompts()
return ret; return ret;
} }
void VideoComponent::handleStartDelay() void VideoComponent::update(int deltaTime)
{ {
if (mBlockPlayer) if (mBlockPlayer) {
setImage(mStaticImagePath);
return; return;
// Only play if any delay has timed out.
if (mStartDelayed) {
// If the setting to override the theme-supplied video delay setting has been enabled,
// then play the video immediately.
if (!Settings::getInstance()->getBool("PlayVideosImmediately")) {
// If there is a video file available but no static image, then start playing the
// video immediately regardless of theme configuration or settings.
if (mStaticImagePath != "") {
if (mStartTime > SDL_GetTicks()) {
// Timeout not yet completed.
return;
}
}
}
// Completed.
mStartDelayed = false;
// Clear the playing flag so startVideo works.
mIsPlaying = false;
startVideo();
} }
}
void VideoComponent::handleLooping() manageState();
{
// Fade in videos, which is handled a bit differently depending on whether it's the
// video screensaver that is running, or if it's the video in the gamelist.
if (mScreensaverMode && mFadeIn < 1.0f)
mFadeIn = Math::clamp(mFadeIn + (deltaTime /
static_cast<float>(SCREENSAVER_FADE_IN_TIME)), 0.0, 1.0);
else if (mFadeIn < 1.0f)
mFadeIn = Math::clamp(mFadeIn + 0.01, 0.0f, 1.0f);
GuiComponent::update(deltaTime);
} }
void VideoComponent::startVideoWithDelay() void VideoComponent::startVideoWithDelay()
@ -261,24 +321,31 @@ void VideoComponent::startVideoWithDelay()
} }
} }
void VideoComponent::update(int deltaTime) void VideoComponent::handleStartDelay()
{ {
if (mBlockPlayer) { if (mBlockPlayer)
setImage(mStaticImagePath);
return; return;
// Only play if any delay has timed out.
if (mStartDelayed) {
// If the setting to override the theme-supplied video delay setting has been enabled,
// then play the video immediately.
if (!Settings::getInstance()->getBool("PlayVideosImmediately")) {
// If there is a video file available but no static image, then start playing the
// video immediately regardless of theme configuration or settings.
if (mStaticImagePath != "") {
if (mStartTime > SDL_GetTicks()) {
// Timeout not yet completed.
return;
}
}
}
// Completed.
mStartDelayed = false;
// Clear the playing flag so startVideo works.
mIsPlaying = false;
startVideo();
} }
manageState();
// Fade in videos, which is handled a bit differently depending on whether it's the
// video screensaver that is running, or if it's the video in the gamelist.
if (mScreensaverMode && mFadeIn < 1.0f)
mFadeIn = Math::clamp(mFadeIn + (deltaTime /
static_cast<float>(SCREENSAVER_FADE_IN_TIME)), 0.0, 1.0);
else if (mFadeIn < 1.0f)
mFadeIn = Math::clamp(mFadeIn + 0.01, 0.0f, 1.0f);
GuiComponent::update(deltaTime);
} }
void VideoComponent::manageState() void VideoComponent::manageState()
@ -314,79 +381,3 @@ void VideoComponent::manageState()
if (mGameLaunched && show && !mPause) if (mGameLaunched && show && !mPause)
mPause = true; mPause = true;
} }
void VideoComponent::onShow()
{
mBlockPlayer = false;
mPause = false;
mShowing = true;
manageState();
}
void VideoComponent::onHide()
{
mShowing = false;
manageState();
}
void VideoComponent::onPauseVideo()
{
mBlockPlayer = true;
mPause = true;
manageState();
}
void VideoComponent::onUnpauseVideo()
{
mBlockPlayer = false;
mPause = false;
manageState();
}
void VideoComponent::onScreensaverActivate()
{
mBlockPlayer = true;
mPause = true;
if (Settings::getInstance()->getString("ScreensaverType") == "dim")
stopVideo();
manageState();
}
void VideoComponent::onScreensaverDeactivate()
{
mBlockPlayer = false;
// Stop video when deactivating the screensaver to force a reload of the
// static image (if the theme is configured as such).
stopVideo();
manageState();
}
void VideoComponent::onGameLaunchedActivate()
{
mGameLaunched = true;
manageState();
}
void VideoComponent::onGameLaunchedDeactivate()
{
mGameLaunched = false;
stopVideo();
manageState();
}
void VideoComponent::topWindow(bool isTop)
{
if (isTop) {
mBlockPlayer = false;
mPause = false;
// Stop video when closing the menu to force a reload of the
// static image (if the theme is configured as such).
stopVideo();
}
else {
mBlockPlayer = true;
mPause = true;
}
manageState();
}

View file

@ -32,14 +32,14 @@ public:
// Loads the video at the given filepath. // Loads the video at the given filepath.
bool setVideo(std::string path); bool setVideo(std::string path);
// Loads a static image that is displayed if the video cannot be played.
void setImage(std::string path);
// Configures the component to show the default video. // Configures the component to show the default video.
void setDefaultVideo(); void setDefaultVideo();
// Loads a static image that is displayed if the video cannot be played.
void setImage(std::string path);
// Sets whether it's going to render in screensaver mode. // Sets whether it's going to render in screensaver mode.
void setScreensaverMode(bool isScreensaver); void setScreensaverMode(bool isScreensaver);
// Set the opacity for the embedded static image.
void setOpacity(unsigned char opacity) override;
virtual void onShow() override; virtual void onShow() override;
virtual void onHide() override; virtual void onHide() override;
@ -52,10 +52,10 @@ public:
virtual void onGameLaunchedDeactivate() override; virtual void onGameLaunchedDeactivate() override;
virtual void topWindow(bool isTop) override; virtual void topWindow(bool isTop) override;
// These functions update the embedded static image.
void onOriginChanged() override; void onOriginChanged() override;
void onPositionChanged() override; void onPositionChanged() override;
void onSizeChanged() override; void onSizeChanged() override;
void setOpacity(unsigned char opacity) override;
void render(const Transform4x4f& parentTrans) override; void render(const Transform4x4f& parentTrans) override;
void renderSnapshot(const Transform4x4f& parentTrans); void renderSnapshot(const Transform4x4f& parentTrans);
@ -87,15 +87,13 @@ private:
virtual void stopVideo() {}; virtual void stopVideo() {};
// Pause the video when a game has been launched. // Pause the video when a game has been launched.
virtual void pauseVideo() {}; virtual void pauseVideo() {};
// Handle looping the video. Must be called periodically. // Handle looping of the video. Must be called periodically.
virtual void handleLooping(); virtual void handleLooping() {};
// Start the video after any configured delay. // Start the video after any configured delay.
void startVideoWithDelay(); void startVideoWithDelay();
// Handle any delay to the start of playing the video clip. Must be called periodically. // Handle any delay to the start of playing the video clip. Must be called periodically.
void handleStartDelay(); void handleStartDelay();
// Manage the playing state of the component. // Manage the playing state of the component.
void manageState(); void manageState();