1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 16:47:36 +00:00

LibGUI: Add opacity to ImageWidget

This commit is contained in:
thankyouverycool 2021-03-10 11:54:09 -05:00 committed by Andreas Kling
parent 0e63141a19
commit bf432f8a3a
2 changed files with 17 additions and 2 deletions

View file

@ -128,12 +128,22 @@ void ImageWidget::paint_event(PaintEvent& event)
}
Painter painter(*this);
painter.add_clip_rect(event.rect());
if (m_should_stretch) {
painter.draw_scaled_bitmap(frame_inner_rect(), *m_bitmap, m_bitmap->rect());
painter.draw_scaled_bitmap(frame_inner_rect(), *m_bitmap, m_bitmap->rect(), (float)opacity_percent() / 100.0f);
} else {
auto location = frame_inner_rect().center().translated(-(m_bitmap->width() / 2), -(m_bitmap->height() / 2));
painter.blit(location, *m_bitmap, m_bitmap->rect());
painter.blit(location, *m_bitmap, m_bitmap->rect(), (float)opacity_percent() / 100.0f);
}
}
void ImageWidget::set_opacity_percent(int percent)
{
if (m_opacity_percent == percent)
return;
m_opacity_percent = percent;
update();
}
}

View file

@ -48,6 +48,9 @@ public:
void animate();
void load_from_file(const StringView&);
int opacity_percent() const { return m_opacity_percent; }
void set_opacity_percent(int percent);
Function<void()> on_click;
protected:
@ -65,6 +68,8 @@ private:
size_t m_current_frame_index { 0 };
size_t m_loops_completed { 0 };
NonnullRefPtr<Core::Timer> m_timer;
int m_opacity_percent { 100 };
};
}