mirror of
https://github.com/RPCS3/rpcs3.git
synced 2026-03-17 18:55:19 +01:00
rsx/overlays: Improvements for some containers
This commit is contained in:
parent
23eb67badc
commit
7d92198ef0
|
|
@ -860,8 +860,8 @@ namespace rsx
|
|||
continue;
|
||||
}
|
||||
|
||||
const s32 item_x_limit = s32{item->x} + item->w - scroll_offset_value - w;
|
||||
const s32 item_x_base = s32{item->x} - 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 - x;
|
||||
|
||||
if (item_x_base > w)
|
||||
{
|
||||
|
|
@ -899,6 +899,19 @@ namespace rsx
|
|||
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()
|
||||
{
|
||||
if (is_compiled())
|
||||
|
|
|
|||
|
|
@ -235,6 +235,22 @@ namespace rsx
|
|||
bool auto_resize = true;
|
||||
|
||||
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();
|
||||
|
||||
layout_container();
|
||||
|
|
@ -252,6 +268,7 @@ namespace rsx
|
|||
|
||||
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;
|
||||
compiled_resource& get_compiled() override;
|
||||
u16 get_scroll_offset_px() override;
|
||||
|
|
@ -259,11 +276,19 @@ namespace rsx
|
|||
|
||||
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;
|
||||
compiled_resource& get_compiled() 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
|
||||
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()
|
||||
{
|
||||
if (is_compiled())
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ namespace rsx
|
|||
|
||||
void set_cancel_only(bool cancel_only);
|
||||
void translate(s16 _x, s16 _y) override;
|
||||
void set_size(u16 w, u16 h) override;
|
||||
|
||||
compiled_resource& get_compiled() override;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -54,6 +54,16 @@ namespace rsx::overlays
|
|||
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)
|
||||
{
|
||||
if (!m_tab_headers)
|
||||
|
|
@ -87,6 +97,7 @@ namespace rsx::overlays
|
|||
auto ptr = horizontal_layout::add_element(tab_headers);
|
||||
m_tab_headers = ensure(dynamic_cast<list_view*>(ptr));
|
||||
m_tab_headers->set_pos(x, y);
|
||||
m_tab_headers->advance_pos = 16;
|
||||
m_tab_headers->hide_prompt_buttons();
|
||||
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_headers_width(u16 size);
|
||||
void set_headers_background_color(const color4f& color);
|
||||
|
||||
overlay_element* set_selected_tab(u32 index);
|
||||
overlay_element* get_selected() const;
|
||||
|
|
|
|||
Loading…
Reference in a new issue