Serenity Operating System
at master 61 lines 2.0 kB view raw
1/* 2 * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org> 3 * Copyright (c) 2021, Mustafa Quraish <mustafa@serenityos.org> 4 * Copyright (c) 2022, the SerenityOS developers. 5 * 6 * SPDX-License-Identifier: BSD-2-Clause 7 */ 8 9#include "PickerTool.h" 10#include "../ImageEditor.h" 11#include "../Layer.h" 12#include <LibGUI/BoxLayout.h> 13#include <LibGUI/CheckBox.h> 14 15namespace PixelPaint { 16 17void PickerTool::on_mousedown(Layer* layer, MouseEvent& event) 18{ 19 if (!layer) 20 return; 21 auto layer_event = event.layer_event(); 22 m_editor->set_editor_color_to_color_at_mouse_position(layer_event, m_sample_all_layers); 23} 24 25void PickerTool::on_mouseup(Layer*, MouseEvent& event) 26{ 27 auto layer_event = event.layer_event(); 28 if (layer_event.buttons() & GUI::MouseButton::Primary || layer_event.buttons() & GUI::MouseButton::Secondary) 29 return; 30} 31 32void PickerTool::on_mousemove(Layer* layer, MouseEvent& event) 33{ 34 if (!layer) 35 return; 36 auto layer_event = event.layer_event(); 37 m_editor->set_status_info_to_color_at_mouse_position(layer_event.position(), m_sample_all_layers); 38 39 if (!(layer_event.buttons() & GUI::MouseButton::Primary || layer_event.buttons() & GUI::MouseButton::Secondary)) 40 return; 41 m_editor->set_editor_color_to_color_at_mouse_position(layer_event, m_sample_all_layers); 42} 43 44ErrorOr<GUI::Widget*> PickerTool::get_properties_widget() 45{ 46 if (!m_properties_widget) { 47 auto properties_widget = TRY(GUI::Widget::try_create()); 48 (void)TRY(properties_widget->try_set_layout<GUI::VerticalBoxLayout>()); 49 50 auto sample_checkbox = TRY(properties_widget->try_add<GUI::CheckBox>(TRY("Sample all layers"_string))); 51 sample_checkbox->set_checked(m_sample_all_layers); 52 sample_checkbox->on_checked = [this](bool value) { 53 m_sample_all_layers = value; 54 }; 55 m_properties_widget = properties_widget; 56 } 57 58 return m_properties_widget.ptr(); 59} 60 61}