Serenity Operating System
at master 83 lines 2.1 kB view raw
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 8#include <LibGUI/Painter.h> 9#include <LibGUI/ResizeCorner.h> 10#include <LibGUI/Window.h> 11#include <LibGfx/CharacterBitmap.h> 12#include <LibGfx/Palette.h> 13 14namespace GUI { 15 16static constexpr Gfx::CharacterBitmap s_resize_corner_shadows_bitmap { 17 18 " " 19 " ## " 20 " # " 21 " " 22 " ## ## " 23 " # # " 24 " " 25 " ## ## ## " 26 " # # # " 27 " " 28 " ## ## ## ## " 29 " # # # # " 30 " " 31 " ## ## ## ## ## " 32 " # # # # # " 33 " "sv, 34 16, 16 35}; 36 37static constexpr Gfx::CharacterBitmap s_resize_corner_highlights_bitmap { 38 " " 39 " " 40 " # " 41 " " 42 " " 43 " # # " 44 " " 45 " " 46 " # # # " 47 " " 48 " " 49 " # # # # " 50 " " 51 " " 52 " # # # # # " 53 " "sv, 54 16, 16 55}; 56 57ResizeCorner::ResizeCorner() 58{ 59 set_override_cursor(Gfx::StandardCursor::ResizeDiagonalTLBR); 60 set_background_role(ColorRole::Button); 61 set_fixed_size(16, 18); 62} 63 64void ResizeCorner::paint_event(PaintEvent& event) 65{ 66 Painter painter(*this); 67 painter.add_clip_rect(event.rect()); 68 painter.fill_rect(rect(), palette().color(background_role())); 69 70 painter.draw_bitmap({ 0, 2 }, s_resize_corner_shadows_bitmap, palette().threed_shadow1()); 71 painter.draw_bitmap({ 0, 2 }, s_resize_corner_highlights_bitmap, palette().threed_highlight()); 72 73 Widget::paint_event(event); 74} 75 76void ResizeCorner::mousedown_event(MouseEvent& event) 77{ 78 if (event.button() == MouseButton::Primary) 79 window()->start_interactive_resize(ResizeDirection::DownRight); 80 Widget::mousedown_event(event); 81} 82 83}