mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 00:07:36 +00:00
PixelPaint: Move LayerListWidget gadget rect computation to a function
This will allow functions other than paint_event() to use the various gadget rects (thumbnail, text, etc.)
This commit is contained in:
parent
1cec672e69
commit
285f0383d4
2 changed files with 21 additions and 13 deletions
|
@ -57,6 +57,22 @@ void LayerListWidget::resize_event(GUI::ResizeEvent& event)
|
||||||
relayout_gadgets();
|
relayout_gadgets();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LayerListWidget::get_gadget_rects(Gadget const& gadget, Gfx::IntRect& outer_rect, Gfx::IntRect& thumbnail_rect, Gfx::IntRect& text_rect)
|
||||||
|
{
|
||||||
|
outer_rect = gadget.rect;
|
||||||
|
outer_rect.translate_by(0, -vertical_scrollbar().value());
|
||||||
|
outer_rect.translate_by(frame_thickness(), frame_thickness());
|
||||||
|
if (gadget.is_moving) {
|
||||||
|
outer_rect.translate_by(0, gadget.movement_delta.y());
|
||||||
|
}
|
||||||
|
|
||||||
|
thumbnail_rect = { outer_rect.x(), outer_rect.y(), outer_rect.height(), outer_rect.height() };
|
||||||
|
thumbnail_rect.shrink(8, 8);
|
||||||
|
|
||||||
|
text_rect = { thumbnail_rect.right() + 10, outer_rect.y(), outer_rect.width(), outer_rect.height() };
|
||||||
|
text_rect.intersect(outer_rect);
|
||||||
|
}
|
||||||
|
|
||||||
void LayerListWidget::paint_event(GUI::PaintEvent& event)
|
void LayerListWidget::paint_event(GUI::PaintEvent& event)
|
||||||
{
|
{
|
||||||
GUI::Painter painter(*this);
|
GUI::Painter painter(*this);
|
||||||
|
@ -72,13 +88,10 @@ void LayerListWidget::paint_event(GUI::PaintEvent& event)
|
||||||
auto paint_gadget = [&](auto& gadget) {
|
auto paint_gadget = [&](auto& gadget) {
|
||||||
auto& layer = m_image->layer(gadget.layer_index);
|
auto& layer = m_image->layer(gadget.layer_index);
|
||||||
|
|
||||||
auto adjusted_rect = gadget.rect;
|
Gfx::IntRect adjusted_rect;
|
||||||
adjusted_rect.translate_by(0, -vertical_scrollbar().value());
|
Gfx::IntRect thumbnail_rect;
|
||||||
adjusted_rect.translate_by(frame_thickness(), frame_thickness());
|
Gfx::IntRect text_rect;
|
||||||
|
get_gadget_rects(gadget, adjusted_rect, thumbnail_rect, text_rect);
|
||||||
if (gadget.is_moving) {
|
|
||||||
adjusted_rect.translate_by(0, gadget.movement_delta.y());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gadget.is_moving) {
|
if (gadget.is_moving) {
|
||||||
painter.fill_rect(adjusted_rect, palette().selection().lightened(1.5f));
|
painter.fill_rect(adjusted_rect, palette().selection().lightened(1.5f));
|
||||||
|
@ -87,14 +100,8 @@ void LayerListWidget::paint_event(GUI::PaintEvent& event)
|
||||||
}
|
}
|
||||||
|
|
||||||
painter.draw_rect(adjusted_rect, palette().color(ColorRole::BaseText));
|
painter.draw_rect(adjusted_rect, palette().color(ColorRole::BaseText));
|
||||||
|
|
||||||
Gfx::IntRect thumbnail_rect { adjusted_rect.x(), adjusted_rect.y(), adjusted_rect.height(), adjusted_rect.height() };
|
|
||||||
thumbnail_rect.shrink(8, 8);
|
|
||||||
painter.draw_scaled_bitmap(thumbnail_rect, layer.bitmap(), layer.bitmap().rect());
|
painter.draw_scaled_bitmap(thumbnail_rect, layer.bitmap(), layer.bitmap().rect());
|
||||||
|
|
||||||
Gfx::IntRect text_rect { thumbnail_rect.right() + 10, adjusted_rect.y(), adjusted_rect.width(), adjusted_rect.height() };
|
|
||||||
text_rect.intersect(adjusted_rect);
|
|
||||||
|
|
||||||
if (layer.is_visible()) {
|
if (layer.is_visible()) {
|
||||||
painter.draw_text(text_rect, layer.name(), Gfx::TextAlignment::CenterLeft, layer.is_selected() ? palette().selection_text() : palette().button_text());
|
painter.draw_text(text_rect, layer.name(), Gfx::TextAlignment::CenterLeft, layer.is_selected() ? palette().selection_text() : palette().button_text());
|
||||||
painter.draw_rect(thumbnail_rect, palette().color(ColorRole::BaseText));
|
painter.draw_rect(thumbnail_rect, palette().color(ColorRole::BaseText));
|
||||||
|
|
|
@ -56,6 +56,7 @@ private:
|
||||||
Gfx::IntPoint movement_delta;
|
Gfx::IntPoint movement_delta;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void get_gadget_rects(Gadget const&, Gfx::IntRect& outer_rect, Gfx::IntRect& thumbnail_rect, Gfx::IntRect& text_rect);
|
||||||
bool is_moving_gadget() const { return m_moving_gadget_index.has_value(); }
|
bool is_moving_gadget() const { return m_moving_gadget_index.has_value(); }
|
||||||
|
|
||||||
Optional<size_t> gadget_at(Gfx::IntPoint const&);
|
Optional<size_t> gadget_at(Gfx::IntPoint const&);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue