ResizeCorner.cpp 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /*
  2. * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
  3. * Copyright (c) 2022, the SerenityOS developers.
  4. *
  5. * SPDX-License-Identifier: BSD-2-Clause
  6. */
  7. #include <LibGUI/Painter.h>
  8. #include <LibGUI/ResizeCorner.h>
  9. #include <LibGUI/Window.h>
  10. #include <LibGfx/CharacterBitmap.h>
  11. #include <LibGfx/Palette.h>
  12. namespace GUI {
  13. static constexpr Gfx::CharacterBitmap s_resize_corner_shadows_bitmap {
  14. " "
  15. " ## "
  16. " # "
  17. " "
  18. " ## ## "
  19. " # # "
  20. " "
  21. " ## ## ## "
  22. " # # # "
  23. " "
  24. " ## ## ## ## "
  25. " # # # # "
  26. " "
  27. " ## ## ## ## ## "
  28. " # # # # # "
  29. " "sv,
  30. 16, 16
  31. };
  32. static constexpr Gfx::CharacterBitmap s_resize_corner_highlights_bitmap {
  33. " "
  34. " "
  35. " # "
  36. " "
  37. " "
  38. " # # "
  39. " "
  40. " "
  41. " # # # "
  42. " "
  43. " "
  44. " # # # # "
  45. " "
  46. " "
  47. " # # # # # "
  48. " "sv,
  49. 16, 16
  50. };
  51. ResizeCorner::ResizeCorner()
  52. {
  53. set_override_cursor(Gfx::StandardCursor::ResizeDiagonalTLBR);
  54. set_background_role(ColorRole::Button);
  55. set_fixed_size(16, 18);
  56. }
  57. void ResizeCorner::paint_event(PaintEvent& event)
  58. {
  59. Painter painter(*this);
  60. painter.add_clip_rect(event.rect());
  61. painter.fill_rect(rect(), palette().color(background_role()));
  62. painter.draw_bitmap({ 0, 2 }, s_resize_corner_shadows_bitmap, palette().threed_shadow1());
  63. painter.draw_bitmap({ 0, 2 }, s_resize_corner_highlights_bitmap, palette().threed_highlight());
  64. Widget::paint_event(event);
  65. }
  66. void ResizeCorner::mousedown_event(MouseEvent& event)
  67. {
  68. if (event.button() == MouseButton::Primary)
  69. window()->start_interactive_resize();
  70. Widget::mousedown_event(event);
  71. }
  72. }