Files
ppsspp/UI/MiscScreens.h
T
Henrik RydgårdandClaude Opus 5.5 3ca76c674c Outputs: Say the menus are on the device, instead of showing black
When no screen on the stack shows anything on an output (we're in the
menus), the background screen draws "Menus are on your device" there.
UI drawn to an output gets the primary's DPI scale, over the whole output.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-22 18:42:53 +02:00

137 lines
3.8 KiB
C++

// Copyright (c) 2013- PPSSPP Project.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, version 2.0 or later versions.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License 2.0 for more details.
// A copy of the GPL 2.0 should have been included with the program.
// If not, see http://www.gnu.org/licenses/
// Official git repository and contact information can be found at
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
#pragma once
#include <functional>
#include <map>
#include <string>
#include <vector>
#include "Common/UI/UIScreen.h"
#include "Common/UI/PopupScreens.h"
#include "Common/File/DirListing.h"
#include "Common/File/Path.h"
#include "UI/BaseScreens.h"
#include "UI/SimpleDialogScreen.h"
struct ShaderInfo;
struct TextureShaderInfo;
inline void NoOpVoidBool(bool) {}
class BackgroundScreen : public UIScreen {
public:
ScreenRenderFlags render(ScreenRenderMode mode) override;
bool renderOutput(const OutputDisplay &output) override;
void sendMessage(UIMessage message, const char *value) override;
private:
void CreateViews() override {}
const char *tag() const override { return "bg"; }
Path gamePath_;
};
class PromptScreen : public UIBaseDialogScreen {
public:
PromptScreen(const Path &gamePath, std::string_view message, std::string_view yesButtonText, std::string_view noButtonText,
std::function<void(bool)> callback = &NoOpVoidBool);
void CreateViews() override;
void TriggerFinish(DialogResult result) override;
const char *tag() const override { return "Prompt"; }
private:
std::string message_;
std::string yesButtonText_;
std::string noButtonText_;
std::function<void(bool)> callback_;
};
class NewLanguageScreen : public UI::ListPopupScreen {
public:
NewLanguageScreen(std::string_view title);
const char *tag() const override { return "NewLanguage"; }
private:
void OnCompleted(DialogResult result) override;
bool ShowButtons() const override { return true; }
std::vector<File::FileInfo> langs_;
};
class TextureShaderScreen : public UI::ListPopupScreen {
public:
TextureShaderScreen(std::string_view title);
void CreateViews() override;
const char *tag() const override { return "TextureShader"; }
private:
void OnCompleted(DialogResult result) override;
bool ShowButtons() const override { return true; }
std::vector<TextureShaderInfo> shaders_;
};
enum class AfterLogoScreen {
TO_GAME_SETTINGS,
DEFAULT,
MEMSTICK_SCREEN_INITIAL_SETUP,
};
class LogoScreen : public UIBaseScreen {
public:
LogoScreen(AfterLogoScreen afterLogoScreen = AfterLogoScreen::DEFAULT);
bool key(const KeyInput &key) override;
bool touch(const TouchInput &touch) override;
void update() override;
void DrawForeground(UIContext &ui) override;
void sendMessage(UIMessage message, const char *value) override;
void CreateViews() override {}
const char *tag() const override { return "Logo"; }
protected:
ViewLayoutMode LayoutMode() const override { return ViewLayoutMode::ApplyInsets; }
bool UseImmersiveMode() const override { return true; }
private:
void Next();
int frames_ = 0;
double sinceStart_ = 0.0;
bool switched_ = false;
AfterLogoScreen afterLogoScreen_;
};
class CreditsScreen : public UISimpleBaseDialogScreen {
public:
CreditsScreen() : UISimpleBaseDialogScreen(Path(), SimpleDialogFlags::Default) {}
void update() override;
protected:
ViewLayoutMode LayoutMode() const override { return ViewLayoutMode::ApplyInsets; }
std::string_view GetTitle() const override;
void CreateDialogViews(UI::ViewGroup *parent) override;
const char *tag() const override { return "Credits"; }
};