mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-10 21:16:24 +02:00
Move TouchTestScreen to DevScreens
This commit is contained in:
1 parent
ed4941f416
commit
812b1024f0
8 files changed
+260
-255
No files matched your search
@@ -565,218 +565,6 @@ UI::EventReturn AnalogSetupScreen::OnResetToDefaults(UI::EventParams &e) {
|
||||
return UI::EVENT_DONE;
|
||||
}
|
||||
|
||||
void TouchTestScreen::touch(const TouchInput &touch) {
|
||||
UIDialogScreenWithGameBackground::touch(touch);
|
||||
if (touch.flags & TOUCH_DOWN) {
|
||||
bool found = false;
|
||||
for (int i = 0; i < MAX_TOUCH_POINTS; i++) {
|
||||
if (touches_[i].id == touch.id) {
|
||||
WARN_LOG(SYSTEM, "Double touch");
|
||||
touches_[i].x = touch.x;
|
||||
touches_[i].y = touch.y;
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
for (int i = 0; i < MAX_TOUCH_POINTS; i++) {
|
||||
if (touches_[i].id == -1) {
|
||||
touches_[i].id = touch.id;
|
||||
touches_[i].x = touch.x;
|
||||
touches_[i].y = touch.y;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (touch.flags & TOUCH_MOVE) {
|
||||
bool found = false;
|
||||
for (int i = 0; i < MAX_TOUCH_POINTS; i++) {
|
||||
if (touches_[i].id == touch.id) {
|
||||
touches_[i].x = touch.x;
|
||||
touches_[i].y = touch.y;
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
WARN_LOG(SYSTEM, "Move without touch down: %d", touch.id);
|
||||
}
|
||||
}
|
||||
if (touch.flags & TOUCH_UP) {
|
||||
bool found = false;
|
||||
for (int i = 0; i < MAX_TOUCH_POINTS; i++) {
|
||||
if (touches_[i].id == touch.id) {
|
||||
found = true;
|
||||
touches_[i].id = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
WARN_LOG(SYSTEM, "Touch release without touch down");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Move this screen out into its own file.
|
||||
void TouchTestScreen::CreateViews() {
|
||||
using namespace UI;
|
||||
|
||||
auto di = GetI18NCategory(I18NCat::DIALOG);
|
||||
auto gr = GetI18NCategory(I18NCat::GRAPHICS);
|
||||
root_ = new LinearLayout(ORIENT_VERTICAL);
|
||||
LinearLayout *theTwo = new LinearLayout(ORIENT_VERTICAL, new LinearLayoutParams(1.0f));
|
||||
|
||||
lastKeyEvents_ = theTwo->Add(new TextView("-", new LayoutParams(FILL_PARENT, WRAP_CONTENT)));
|
||||
|
||||
root_->Add(theTwo);
|
||||
|
||||
#if !PPSSPP_PLATFORM(UWP)
|
||||
static const char *renderingBackend[] = { "OpenGL", "Direct3D 9", "Direct3D 11", "Vulkan" };
|
||||
PopupMultiChoice *renderingBackendChoice = root_->Add(new PopupMultiChoice(&g_Config.iGPUBackend, gr->T("Backend"), renderingBackend, (int)GPUBackend::OPENGL, ARRAY_SIZE(renderingBackend), I18NCat::GRAPHICS, screenManager()));
|
||||
renderingBackendChoice->OnChoice.Handle(this, &TouchTestScreen::OnRenderingBackend);
|
||||
|
||||
if (!g_Config.IsBackendEnabled(GPUBackend::OPENGL))
|
||||
renderingBackendChoice->HideChoice((int)GPUBackend::OPENGL);
|
||||
if (!g_Config.IsBackendEnabled(GPUBackend::DIRECT3D9))
|
||||
renderingBackendChoice->HideChoice((int)GPUBackend::DIRECT3D9);
|
||||
if (!g_Config.IsBackendEnabled(GPUBackend::DIRECT3D11))
|
||||
renderingBackendChoice->HideChoice((int)GPUBackend::DIRECT3D11);
|
||||
if (!g_Config.IsBackendEnabled(GPUBackend::VULKAN))
|
||||
renderingBackendChoice->HideChoice((int)GPUBackend::VULKAN);
|
||||
#endif
|
||||
|
||||
#if PPSSPP_PLATFORM(ANDROID)
|
||||
root_->Add(new Choice(gr->T("Recreate Activity")))->OnClick.Handle(this, &TouchTestScreen::OnRecreateActivity);
|
||||
#endif
|
||||
root_->Add(new CheckBox(&g_Config.bImmersiveMode, gr->T("FullScreen", "Full Screen")))->OnClick.Handle(this, &TouchTestScreen::OnImmersiveModeChange);
|
||||
root_->Add(new Button(di->T("Back")))->OnClick.Handle<UIScreen>(this, &UIScreen::OnBack);
|
||||
}
|
||||
|
||||
void TouchTestScreen::UpdateLogView() {
|
||||
while (keyEventLog_.size() > 8) {
|
||||
keyEventLog_.erase(keyEventLog_.begin());
|
||||
}
|
||||
|
||||
std::string text;
|
||||
for (auto &iter : keyEventLog_) {
|
||||
text += iter + "\n";
|
||||
}
|
||||
|
||||
if (lastKeyEvents_) {
|
||||
lastKeyEvents_->SetText(text);
|
||||
}
|
||||
}
|
||||
|
||||
bool TouchTestScreen::key(const KeyInput &key) {
|
||||
UIScreen::key(key);
|
||||
char buf[512];
|
||||
snprintf(buf, sizeof(buf), "%s (%d) Device ID: %d [%s%s%s%s]", KeyMap::GetKeyName(key.keyCode).c_str(), key.keyCode, key.deviceId,
|
||||
(key.flags & KEY_IS_REPEAT) ? "REP" : "",
|
||||
(key.flags & KEY_UP) ? "UP" : "",
|
||||
(key.flags & KEY_DOWN) ? "DOWN" : "",
|
||||
(key.flags & KEY_CHAR) ? "CHAR" : "");
|
||||
keyEventLog_.push_back(buf);
|
||||
UpdateLogView();
|
||||
return true;
|
||||
}
|
||||
|
||||
void TouchTestScreen::axis(const AxisInput &axis) {
|
||||
char buf[512];
|
||||
snprintf(buf, sizeof(buf), "Axis: %s (%d) (value %1.3f) Device ID: %d",
|
||||
KeyMap::GetAxisName(axis.axisId).c_str(), axis.axisId, axis.value, axis.deviceId);
|
||||
|
||||
keyEventLog_.push_back(buf);
|
||||
if (keyEventLog_.size() > 8) {
|
||||
keyEventLog_.erase(keyEventLog_.begin());
|
||||
}
|
||||
UpdateLogView();
|
||||
}
|
||||
|
||||
void TouchTestScreen::DrawForeground(UIContext &dc) {
|
||||
Bounds bounds = dc.GetLayoutBounds();
|
||||
|
||||
double now = time_now_d();
|
||||
double delta = now - lastFrameTime_;
|
||||
lastFrameTime_ = now;
|
||||
|
||||
dc.BeginNoTex();
|
||||
for (int i = 0; i < MAX_TOUCH_POINTS; i++) {
|
||||
if (touches_[i].id != -1) {
|
||||
dc.Draw()->Circle(touches_[i].x, touches_[i].y, 100.0, 3.0, 80, 0.0f, 0xFFFFFFFF, 1.0);
|
||||
}
|
||||
}
|
||||
dc.Flush();
|
||||
|
||||
dc.Begin();
|
||||
|
||||
char buffer[4096];
|
||||
for (int i = 0; i < MAX_TOUCH_POINTS; i++) {
|
||||
if (touches_[i].id != -1) {
|
||||
dc.Draw()->Circle(touches_[i].x, touches_[i].y, 100.0, 3.0, 80, 0.0f, 0xFFFFFFFF, 1.0);
|
||||
snprintf(buffer, sizeof(buffer), "%0.1fx%0.1f", touches_[i].x, touches_[i].y);
|
||||
dc.DrawText(buffer, touches_[i].x, touches_[i].y + (touches_[i].y > g_display.dp_yres - 100.0f ? -135.0f : 95.0f), 0xFFFFFFFF, ALIGN_HCENTER | FLAG_DYNAMIC_ASCII);
|
||||
}
|
||||
}
|
||||
|
||||
char extra_debug[2048]{};
|
||||
|
||||
#if PPSSPP_PLATFORM(ANDROID)
|
||||
truncate_cpy(extra_debug, Android_GetInputDeviceDebugString().c_str());
|
||||
#endif
|
||||
|
||||
snprintf(buffer, sizeof(buffer),
|
||||
#if PPSSPP_PLATFORM(ANDROID)
|
||||
"display_res: %dx%d\n"
|
||||
#endif
|
||||
"dp_res: %dx%d pixel_res: %dx%d\n"
|
||||
"g_dpi: %0.3f g_dpi_scale: %0.3fx%0.3f\n"
|
||||
"g_dpi_scale_real: %0.3fx%0.3f\n"
|
||||
"delta: %0.2f ms fps: %0.3f\n%s",
|
||||
#if PPSSPP_PLATFORM(ANDROID)
|
||||
System_GetPropertyInt(SYSPROP_DISPLAY_XRES), System_GetPropertyInt(SYSPROP_DISPLAY_YRES),
|
||||
#endif
|
||||
g_display.dp_xres, g_display.dp_yres, g_display.pixel_xres, g_display.pixel_yres,
|
||||
g_display.dpi, g_display.dpi_scale_x, g_display.dpi_scale_y,
|
||||
g_display.dpi_scale_real_x, g_display.dpi_scale_real_y,
|
||||
delta * 1000.0, 1.0 / delta,
|
||||
extra_debug);
|
||||
|
||||
// On Android, also add joystick debug data.
|
||||
|
||||
dc.DrawTextShadow(buffer, bounds.centerX(), bounds.y + 20.0f, 0xFFFFFFFF, FLAG_DYNAMIC_ASCII);
|
||||
dc.Flush();
|
||||
}
|
||||
|
||||
void RecreateActivity() {
|
||||
const int SYSTEM_JELLYBEAN = 16;
|
||||
if (System_GetPropertyInt(SYSPROP_SYSTEMVERSION) >= SYSTEM_JELLYBEAN) {
|
||||
INFO_LOG(SYSTEM, "Sending recreate");
|
||||
System_Notify(SystemNotification::FORCE_RECREATE_ACTIVITY);
|
||||
INFO_LOG(SYSTEM, "Got back from recreate");
|
||||
} else {
|
||||
auto gr = GetI18NCategory(I18NCat::GRAPHICS);
|
||||
System_Toast(gr->T("Must Restart", "You must restart PPSSPP for this change to take effect"));
|
||||
}
|
||||
}
|
||||
|
||||
UI::EventReturn TouchTestScreen::OnImmersiveModeChange(UI::EventParams &e) {
|
||||
System_Notify(SystemNotification::IMMERSIVE_MODE_CHANGE);
|
||||
if (g_Config.iAndroidHwScale != 0) {
|
||||
RecreateActivity();
|
||||
}
|
||||
return UI::EVENT_DONE;
|
||||
}
|
||||
|
||||
UI::EventReturn TouchTestScreen::OnRenderingBackend(UI::EventParams &e) {
|
||||
g_Config.Save("GameSettingsScreen::RenderingBackend");
|
||||
System_RestartApp("--touchscreentest");
|
||||
return UI::EVENT_DONE;
|
||||
}
|
||||
|
||||
UI::EventReturn TouchTestScreen::OnRecreateActivity(UI::EventParams &e) {
|
||||
RecreateActivity();
|
||||
return UI::EVENT_DONE;
|
||||
}
|
||||
|
||||
class Backplate : public UI::InertView {
|
||||
public:
|
||||
Backplate(float scale, UI::LayoutParams *layoutParams = nullptr) : InertView(layoutParams), scale_(scale) {}
|
||||
|
||||
Reference in new issue
Block a user