mirror of
https://github.com/RPCS3/rpcs3.git
synced 2026-06-05 06:35:04 -06:00
rsx/overlays: Improvements for some containers
This commit is contained in:
parent
23eb67badc
commit
7d92198ef0
@ -860,8 +860,8 @@ namespace rsx
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const s32 item_x_limit = s32{item->x} + item->w - scroll_offset_value - w;
|
const s32 item_x_limit = s32{item->x} + item->w - scroll_offset_value - x;
|
||||||
const s32 item_x_base = s32{item->x} - scroll_offset_value - w;
|
const s32 item_x_base = s32{item->x} - scroll_offset_value - x;
|
||||||
|
|
||||||
if (item_x_base > w)
|
if (item_x_base > w)
|
||||||
{
|
{
|
||||||
@ -899,6 +899,19 @@ namespace rsx
|
|||||||
return scroll_offset_value;
|
return scroll_offset_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
overlay_element* box_layout::add_element(std::unique_ptr<overlay_element>& item, int offset)
|
||||||
|
{
|
||||||
|
if (offset < 0)
|
||||||
|
{
|
||||||
|
m_items.push_back(std::move(item));
|
||||||
|
return m_items.back().get();
|
||||||
|
}
|
||||||
|
|
||||||
|
overlay_element* result = item.get();
|
||||||
|
m_items.insert(m_items.begin() + offset, std::move(item));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
compiled_resource& image_view::get_compiled()
|
compiled_resource& image_view::get_compiled()
|
||||||
{
|
{
|
||||||
if (is_compiled())
|
if (is_compiled())
|
||||||
|
|||||||
@ -235,6 +235,22 @@ namespace rsx
|
|||||||
bool auto_resize = true;
|
bool auto_resize = true;
|
||||||
|
|
||||||
virtual overlay_element* add_element(std::unique_ptr<overlay_element>&, int = -1) = 0;
|
virtual overlay_element* add_element(std::unique_ptr<overlay_element>&, int = -1) = 0;
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
requires std::is_base_of_v<overlay_element, T>
|
||||||
|
T* add_element(std::unique_ptr<T>& ptr, int offset = -1)
|
||||||
|
{
|
||||||
|
auto _ptr = ensure(dynamic_cast<overlay_element*>(ptr.release()));
|
||||||
|
std::unique_ptr<overlay_element> e{ _ptr };
|
||||||
|
return static_cast<T*>(add_element(e, offset));
|
||||||
|
}
|
||||||
|
|
||||||
|
overlay_element* add_element()
|
||||||
|
{
|
||||||
|
auto ptr = std::make_unique<overlay_element>();
|
||||||
|
return add_element(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
void clear_items();
|
void clear_items();
|
||||||
|
|
||||||
layout_container();
|
layout_container();
|
||||||
@ -252,6 +268,7 @@ namespace rsx
|
|||||||
|
|
||||||
struct vertical_layout : public layout_container
|
struct vertical_layout : public layout_container
|
||||||
{
|
{
|
||||||
|
using layout_container::add_element;
|
||||||
overlay_element* add_element(std::unique_ptr<overlay_element>& item, int offset = -1) override;
|
overlay_element* add_element(std::unique_ptr<overlay_element>& item, int offset = -1) override;
|
||||||
compiled_resource& get_compiled() override;
|
compiled_resource& get_compiled() override;
|
||||||
u16 get_scroll_offset_px() override;
|
u16 get_scroll_offset_px() override;
|
||||||
@ -259,11 +276,19 @@ namespace rsx
|
|||||||
|
|
||||||
struct horizontal_layout : public layout_container
|
struct horizontal_layout : public layout_container
|
||||||
{
|
{
|
||||||
|
using layout_container::add_element;
|
||||||
overlay_element* add_element(std::unique_ptr<overlay_element>& item, int offset = -1) override;
|
overlay_element* add_element(std::unique_ptr<overlay_element>& item, int offset = -1) override;
|
||||||
compiled_resource& get_compiled() override;
|
compiled_resource& get_compiled() override;
|
||||||
u16 get_scroll_offset_px() override;
|
u16 get_scroll_offset_px() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct box_layout : public layout_container
|
||||||
|
{
|
||||||
|
using layout_container::add_element;
|
||||||
|
overlay_element* add_element(std::unique_ptr<overlay_element>& item, int offset = -1) override;
|
||||||
|
u16 get_scroll_offset_px() override { return 0; }
|
||||||
|
};
|
||||||
|
|
||||||
// Controls
|
// Controls
|
||||||
struct spacer : public overlay_element
|
struct spacer : public overlay_element
|
||||||
{
|
{
|
||||||
|
|||||||
@ -262,6 +262,19 @@ namespace rsx
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void list_view::set_size(u16 w, u16 h)
|
||||||
|
{
|
||||||
|
vertical_layout::set_size(w, h);
|
||||||
|
|
||||||
|
m_scroll_indicator_top->w = w;
|
||||||
|
m_scroll_indicator_bottom->w = w;
|
||||||
|
m_highlight_box->w = w;
|
||||||
|
|
||||||
|
m_scroll_indicator_top->refresh();
|
||||||
|
m_scroll_indicator_bottom->refresh();
|
||||||
|
m_highlight_box->refresh();
|
||||||
|
}
|
||||||
|
|
||||||
compiled_resource& list_view::get_compiled()
|
compiled_resource& list_view::get_compiled()
|
||||||
{
|
{
|
||||||
if (is_compiled())
|
if (is_compiled())
|
||||||
|
|||||||
@ -45,6 +45,7 @@ namespace rsx
|
|||||||
|
|
||||||
void set_cancel_only(bool cancel_only);
|
void set_cancel_only(bool cancel_only);
|
||||||
void translate(s16 _x, s16 _y) override;
|
void translate(s16 _x, s16 _y) override;
|
||||||
|
void set_size(u16 w, u16 h) override;
|
||||||
|
|
||||||
compiled_resource& get_compiled() override;
|
compiled_resource& get_compiled() override;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -54,6 +54,16 @@ namespace rsx::overlays
|
|||||||
reflow_layout();
|
reflow_layout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tabbed_container::set_headers_background_color(const color4f& color)
|
||||||
|
{
|
||||||
|
if (!m_tab_headers)
|
||||||
|
{
|
||||||
|
reflow_layout();
|
||||||
|
}
|
||||||
|
|
||||||
|
m_tab_headers->back_color = color;
|
||||||
|
}
|
||||||
|
|
||||||
void tabbed_container::set_headers_pulse_effect(bool pulse)
|
void tabbed_container::set_headers_pulse_effect(bool pulse)
|
||||||
{
|
{
|
||||||
if (!m_tab_headers)
|
if (!m_tab_headers)
|
||||||
@ -87,6 +97,7 @@ namespace rsx::overlays
|
|||||||
auto ptr = horizontal_layout::add_element(tab_headers);
|
auto ptr = horizontal_layout::add_element(tab_headers);
|
||||||
m_tab_headers = ensure(dynamic_cast<list_view*>(ptr));
|
m_tab_headers = ensure(dynamic_cast<list_view*>(ptr));
|
||||||
m_tab_headers->set_pos(x, y);
|
m_tab_headers->set_pos(x, y);
|
||||||
|
m_tab_headers->advance_pos = 16;
|
||||||
m_tab_headers->hide_prompt_buttons();
|
m_tab_headers->hide_prompt_buttons();
|
||||||
m_tab_headers->back_color.a = 0.95f;
|
m_tab_headers->back_color.a = 0.95f;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,6 +15,7 @@ namespace rsx::overlays
|
|||||||
|
|
||||||
virtual void set_size(u16 _w, u16 _h) override;
|
virtual void set_size(u16 _w, u16 _h) override;
|
||||||
virtual void set_headers_width(u16 size);
|
virtual void set_headers_width(u16 size);
|
||||||
|
void set_headers_background_color(const color4f& color);
|
||||||
|
|
||||||
overlay_element* set_selected_tab(u32 index);
|
overlay_element* set_selected_tab(u32 index);
|
||||||
overlay_element* get_selected() const;
|
overlay_element* get_selected() const;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user