ES-DE/es-app/src/SystemScreensaver.h

87 lines
2.2 KiB
C
Raw Normal View History

// SPDX-License-Identifier: MIT
//
// EmulationStation Desktop Edition
// SystemScreensaver.h
//
2020-11-10 21:18:20 +00:00
// Screensaver, supporting the following types:
// Dim, black, slideshow, video.
//
#ifndef ES_APP_SYSTEM_SCREEN_SAVER_H
#define ES_APP_SYSTEM_SCREEN_SAVER_H
#include "Window.h"
class ImageComponent;
2017-11-01 22:21:10 +00:00
class VideoComponent;
2020-11-10 21:18:20 +00:00
// Screensaver implementation.
class SystemScreensaver : public Window::Screensaver
{
public:
2020-11-10 21:18:20 +00:00
SystemScreensaver(Window* window);
virtual ~SystemScreensaver();
virtual bool allowSleep();
2020-11-10 21:18:20 +00:00
virtual bool isScreensaverActive();
2020-11-10 21:18:20 +00:00
virtual void startScreensaver(bool generateMediaList);
virtual void stopScreensaver();
virtual void nextGame();
virtual void launchGame();
virtual void goToGame();
2020-11-10 21:18:20 +00:00
virtual void renderScreensaver();
virtual void update(int deltaTime);
virtual FileData* getCurrentGame() { return mCurrentGame; };
virtual void triggerNextGame() { mTriggerNextGame = true; };
private:
2020-11-10 21:18:20 +00:00
void generateImageList();
void generateVideoList();
void generateCustomImageList();
void pickRandomImage(std::string& path);
void pickRandomVideo(std::string& path);
void pickRandomCustomImage(std::string& path);
void generateOverlayInfo();
enum STATE {
STATE_INACTIVE,
STATE_FADE_OUT_WINDOW,
STATE_FADE_IN_VIDEO,
STATE_SCREENSAVER_ACTIVE
};
Window* mWindow;
STATE mState;
2020-11-10 21:18:20 +00:00
std::vector<FileData*> mImageFiles;
std::vector<FileData*> mVideoFiles;
std::vector<std::string> mImageCustomFiles;
ImageComponent* mImageScreensaver;
VideoComponent* mVideoScreensaver;
FileData* mCurrentGame;
FileData* mPreviousGame;
2020-11-10 21:18:20 +00:00
std::string mPreviousCustomImage;
std::string mGameName;
std::string mSystemName;
int mTimer;
int mMediaSwapTime;
bool mTriggerNextGame;
bool mHasMediaFiles;
float mOpacity;
float mDimValue;
unsigned char mRectangleFadeIn;
unsigned char mTextFadeIn;
float mSaturationAmount;
std::unique_ptr<TextCache> mGameOverlay;
std::vector<std::shared_ptr<Font>> mGameOverlayFont;
std::vector<float> mGameOverlayRectangleCoords;
};
#endif // ES_APP_SYSTEM_SCREEN_SAVER_H