GFrame.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include <LibGUI/GFrame.h>
  2. #include <SharedGraphics/StylePainter.h>
  3. #include <LibGUI/GPainter.h>
  4. GFrame::GFrame(GWidget* parent)
  5. : GWidget(parent)
  6. {
  7. }
  8. GFrame::~GFrame()
  9. {
  10. }
  11. void GFrame::paint_event(GPaintEvent& event)
  12. {
  13. if (m_shape == Shape::NoFrame)
  14. return;
  15. GPainter painter(*this);
  16. painter.set_clip_rect(event.rect());
  17. auto rect = this->rect();
  18. Color top_left_color;
  19. Color bottom_right_color;
  20. Color dark_shade = Color::from_rgb(0x808080);
  21. Color light_shade = Color::from_rgb(0xffffff);
  22. if (m_shape == Shape::Container) {
  23. dark_shade = Color::from_rgb(0x404040);
  24. }
  25. if (m_shadow == Shadow::Raised) {
  26. top_left_color = light_shade;
  27. bottom_right_color = dark_shade;
  28. } else if (m_shadow == Shadow::Sunken) {
  29. top_left_color = dark_shade;
  30. bottom_right_color = light_shade;
  31. } else if (m_shadow == Shadow::Plain) {
  32. top_left_color = dark_shade;
  33. bottom_right_color = dark_shade;
  34. }
  35. painter.draw_line(rect.top_left(), rect.top_right(), top_left_color);
  36. painter.draw_line(rect.bottom_left(), rect.bottom_right(), bottom_right_color);
  37. painter.draw_line(rect.top_left().translated(0, 1), rect.bottom_left().translated(0, -1), top_left_color);
  38. painter.draw_line(rect.top_right(), rect.bottom_right().translated(0, -1), bottom_right_color);
  39. }