mirror of
https://github.com/RGBCube/serenity
synced 2025-05-19 03:25:07 +00:00
42 lines
1.3 KiB
C++
42 lines
1.3 KiB
C++
#include <LibGUI/GFrame.h>
|
|
#include <SharedGraphics/StylePainter.h>
|
|
#include <LibGUI/GPainter.h>
|
|
|
|
GFrame::GFrame(GWidget* parent)
|
|
: GWidget(parent)
|
|
{
|
|
}
|
|
|
|
GFrame::~GFrame()
|
|
{
|
|
}
|
|
|
|
void GFrame::paint_event(GPaintEvent& event)
|
|
{
|
|
if (m_shape == Shape::NoFrame)
|
|
return;
|
|
|
|
GPainter painter(*this);
|
|
painter.set_clip_rect(event.rect());
|
|
|
|
Color top_left_color;
|
|
Color bottom_right_color;
|
|
Color dark_shade = m_shape == Shape::Container ? Color::from_rgb(0x404040) : Color::from_rgb(0x808080);
|
|
Color light_shade = Color::from_rgb(0xffffff);
|
|
|
|
if (m_shadow == Shadow::Raised) {
|
|
top_left_color = light_shade;
|
|
bottom_right_color = dark_shade;
|
|
} else if (m_shadow == Shadow::Sunken) {
|
|
top_left_color = dark_shade;
|
|
bottom_right_color = light_shade;
|
|
} else if (m_shadow == Shadow::Plain) {
|
|
top_left_color = dark_shade;
|
|
bottom_right_color = dark_shade;
|
|
}
|
|
|
|
painter.draw_line(rect().top_left(), rect().top_right(), top_left_color);
|
|
painter.draw_line(rect().bottom_left(), rect().bottom_right(), bottom_right_color);
|
|
painter.draw_line(rect().top_left().translated(0, 1), rect().bottom_left().translated(0, -1), top_left_color);
|
|
painter.draw_line(rect().top_right(), rect().bottom_right().translated(0, -1), bottom_right_color);
|
|
}
|