diff --git a/rpcs3/Emu/Cell/Modules/cellOskDialog.cpp b/rpcs3/Emu/Cell/Modules/cellOskDialog.cpp index 7b07540f3c..f0bacc026c 100644 --- a/rpcs3/Emu/Cell/Modules/cellOskDialog.cpp +++ b/rpcs3/Emu/Cell/Modules/cellOskDialog.cpp @@ -1,7 +1,7 @@ #include "stdafx.h" #include "Emu/System.h" #include "Emu/Cell/PPUModule.h" -#include "Emu/RSX/Overlays/overlays.h" +#include "Emu/RSX/Overlays/overlay_osk.h" #include "Input/pad_thread.h" #include "cellSysutil.h" diff --git a/rpcs3/Emu/RSX/Overlays/overlay_osk.cpp b/rpcs3/Emu/RSX/Overlays/overlay_osk.cpp index f5194ab207..beb06ffd88 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_osk.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlay_osk.cpp @@ -1,5 +1,5 @@ #include "stdafx.h" -#include "overlays.h" +#include "overlay_osk.h" #include "Emu/RSX/RSXThread.h" namespace rsx diff --git a/rpcs3/Emu/RSX/Overlays/overlay_osk.h b/rpcs3/Emu/RSX/Overlays/overlay_osk.h new file mode 100644 index 0000000000..b38d0a4b7b --- /dev/null +++ b/rpcs3/Emu/RSX/Overlays/overlay_osk.h @@ -0,0 +1,115 @@ +#pragma once + +#include "overlays.h" +#include "Emu/Cell/Modules/cellOskDialog.h" + +namespace rsx +{ + namespace overlays + { + struct osk_dialog : public user_interface, public OskDialogBase + { + using callback_t = std::function; + + enum border_flags + { + top = 1, + bottom = 2, + left = 4, + right = 8, + + start_cell = top | bottom | left, + end_cell = top | bottom | right, + middle_cell = top | bottom, + default_cell = top | bottom | left | right + }; + + enum button_flags + { + _default = 0, + _return = 1, + _space = 2 + }; + + struct cell + { + position2u pos; + color4f backcolor{}; + border_flags flags = default_cell; + bool selected = false; + bool enabled = false; + + std::vector outputs; + callback_t callback; + }; + + struct grid_entry_ctor + { + std::vector outputs; + color4f color; + u32 num_cell_hz; + button_flags type_flags; + callback_t callback; + }; + + // Base UI + overlay_element m_frame; + overlay_element m_background; + label m_title; + edit_text m_preview; + image_button m_btn_accept; + image_button m_btn_cancel; + image_button m_btn_shift; + image_button m_btn_space; + image_button m_btn_delete; + + // Grid + u32 cell_size_x = 0; + u32 cell_size_y = 0; + u32 num_columns = 0; + u32 num_rows = 0; + u32 num_layers = 0; + u32 selected_x = 0; + u32 selected_y = 0; + u32 selected_z = 0; + + std::vector m_grid; + + // Fade in/out + animation_color_interpolate fade_animation; + + bool m_update = true; + compiled_resource m_cached_resource; + + u32 flags = 0; + u32 char_limit = UINT32_MAX; + + osk_dialog() = default; + ~osk_dialog() override = default; + + void Create(const std::string& title, const std::u16string& message, char16_t* init_text, u32 charlimit, u32 options) override = 0; + void Close(bool ok) override; + + void initialize_layout(const std::vector& layout, const std::u32string& title, const std::u32string& initial_text); + void update() override; + + void on_button_pressed(pad_button button_press) override; + void on_text_changed(); + + void on_default_callback(const std::u32string&); + void on_shift(const std::u32string&); + void on_space(const std::u32string&); + void on_backspace(const std::u32string&); + void on_enter(const std::u32string&); + + compiled_resource get_compiled() override; + }; + + struct osk_latin : osk_dialog + { + using osk_dialog::osk_dialog; + + void Create(const std::string& title, const std::u16string& message, char16_t* init_text, u32 charlimit, u32 options) override; + }; + } +} diff --git a/rpcs3/Emu/RSX/Overlays/overlays.h b/rpcs3/Emu/RSX/Overlays/overlays.h index a5cc48cc09..8c1a2884de 100644 --- a/rpcs3/Emu/RSX/Overlays/overlays.h +++ b/rpcs3/Emu/RSX/Overlays/overlays.h @@ -9,7 +9,6 @@ #include "Emu/Cell/ErrorCodes.h" #include "Emu/Cell/Modules/cellSaveData.h" #include "Emu/Cell/Modules/cellMsgDialog.h" -#include "Emu/Cell/Modules/cellOskDialog.h" #include "Emu/Cell/Modules/sceNpTrophy.h" #include "Utilities/Timer.h" @@ -329,111 +328,6 @@ namespace rsx } }; - struct osk_dialog : public user_interface, public OskDialogBase - { - using callback_t = std::function; - - enum border_flags - { - top = 1, - bottom = 2, - left = 4, - right = 8, - - start_cell = top | bottom | left, - end_cell = top | bottom | right, - middle_cell = top | bottom, - default_cell = top | bottom | left | right - }; - - enum button_flags - { - _default = 0, - _return = 1, - _space = 2 - }; - - struct cell - { - position2u pos; - color4f backcolor{}; - border_flags flags = default_cell; - bool selected = false; - bool enabled = false; - - std::vector outputs; - callback_t callback; - }; - - struct grid_entry_ctor - { - std::vector outputs; - color4f color; - u32 num_cell_hz; - button_flags type_flags; - callback_t callback; - }; - - // Base UI - overlay_element m_frame; - overlay_element m_background; - label m_title; - edit_text m_preview; - image_button m_btn_accept; - image_button m_btn_cancel; - image_button m_btn_shift; - image_button m_btn_space; - image_button m_btn_delete; - - // Grid - u32 cell_size_x = 0; - u32 cell_size_y = 0; - u32 num_columns = 0; - u32 num_rows = 0; - u32 num_layers = 0; - u32 selected_x = 0; - u32 selected_y = 0; - u32 selected_z = 0; - - std::vector m_grid; - - // Fade in/out - animation_color_interpolate fade_animation; - - bool m_update = true; - compiled_resource m_cached_resource; - - u32 flags = 0; - u32 char_limit = UINT32_MAX; - - osk_dialog() = default; - ~osk_dialog() override = default; - - void Create(const std::string& title, const std::u16string& message, char16_t* init_text, u32 charlimit, u32 options) override = 0; - void Close(bool ok) override; - - void initialize_layout(const std::vector& layout, const std::u32string& title, const std::u32string& initial_text); - void update() override; - - void on_button_pressed(pad_button button_press) override; - void on_text_changed(); - - void on_default_callback(const std::u32string&); - void on_shift(const std::u32string&); - void on_space(const std::u32string&); - void on_backspace(const std::u32string&); - void on_enter(const std::u32string&); - - compiled_resource get_compiled() override; - }; - - struct osk_latin : osk_dialog - { - using osk_dialog::osk_dialog; - - void Create(const std::string& title, const std::u16string& message, char16_t* init_text, u32 charlimit, u32 options) override; - }; - struct save_dialog : public user_interface { private: diff --git a/rpcs3/emucore.vcxproj b/rpcs3/emucore.vcxproj index db504ce39d..f140c19ff7 100644 --- a/rpcs3/emucore.vcxproj +++ b/rpcs3/emucore.vcxproj @@ -422,6 +422,7 @@ + diff --git a/rpcs3/emucore.vcxproj.filters b/rpcs3/emucore.vcxproj.filters index 280bb27ca1..fc0727b78c 100644 --- a/rpcs3/emucore.vcxproj.filters +++ b/rpcs3/emucore.vcxproj.filters @@ -1714,5 +1714,8 @@ Emu\Io + + Emu\GPU\RSX\Overlays + \ No newline at end of file