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

89 lines
2 KiB
C
Raw Normal View History

2021-05-16 11:12:31 +00:00
// SPDX-License-Identifier: MIT
//
// ES-DE Frontend
2021-05-16 11:12:31 +00:00
// MediaViewer.h
//
// Fullscreen game media viewer.
//
#ifndef ES_APP_MEDIA_VIEWER_H
#define ES_APP_MEDIA_VIEWER_H
#include "FileData.h"
#include "Window.h"
#include "components/HelpComponent.h"
#include "components/ImageComponent.h"
#include "components/TextComponent.h"
#include "components/VideoComponent.h"
2021-05-16 11:12:31 +00:00
class MediaViewer : public Window::MediaViewer
{
public:
MediaViewer();
2021-05-16 11:12:31 +00:00
bool startMediaViewer(FileData* game) override;
void stopMediaViewer() override;
void launchPDFViewer() override;
2021-05-16 11:12:31 +00:00
void input(InputConfig* config, Input input) override;
void update(int deltaTime) override;
void render(const glm::mat4& parentTrans) override;
std::vector<HelpPrompt> getHelpPrompts() override;
enum class HelpInfoPosition {
TOP,
BOTTOM,
DISABLED
};
2021-05-16 11:12:31 +00:00
private:
void initiateViewer();
void findMedia();
void loadImages();
2021-05-16 11:12:31 +00:00
void playVideo();
void showNext();
void showPrevious();
void showFirst();
void showLast();
2021-05-16 11:12:31 +00:00
Renderer* mRenderer;
2021-05-16 11:12:31 +00:00
FileData* mGame;
bool mHasVideo;
bool mHasImages;
bool mDisplayingImage;
bool mHasManual;
bool mShowMediaTypes;
2021-05-16 11:12:31 +00:00
float mFrameHeight;
2021-05-16 11:12:31 +00:00
int mCurrentImageIndex;
int mScreenshotIndex;
int mTitleScreenIndex;
2021-05-16 11:12:31 +00:00
int mKeyRepeatDir;
int mKeyRepeatTimer;
struct ImageInfo {
std::string mediaType;
bool linearInterpolation;
ImageInfo(const std::string& mediaTypeArg, const bool interpolationArg)
: mediaType {mediaTypeArg}
, linearInterpolation {interpolationArg} {};
};
2021-05-16 11:12:31 +00:00
std::string mVideoFile;
std::unique_ptr<VideoComponent> mVideo;
std::vector<std::pair<std::string, ImageInfo>> mImageFiles;
std::vector<std::unique_ptr<ImageComponent>> mImages;
std::unique_ptr<HelpComponent> mHelp;
std::unique_ptr<TextComponent> mMediaType;
std::string mEntryCount;
HelpInfoPosition mHelpInfoPosition;
2021-05-16 11:12:31 +00:00
};
#endif // ES_APP_MEDIA_VIEWER_H