From 5cf0357be16f417389303cc3e89892304dc747d6 Mon Sep 17 00:00:00 2001 From: Tobias Christiansen Date: Sun, 2 Jan 2022 16:25:54 +0100 Subject: [PATCH] PixelPaint: Create Filter base class All the filters will need a wrapper around them, and this is going to be their base class --- .../Applications/PixelPaint/CMakeLists.txt | 1 + .../PixelPaint/Filters/Filter.cpp | 28 ++++++++++++++++ .../Applications/PixelPaint/Filters/Filter.h | 33 +++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 Userland/Applications/PixelPaint/Filters/Filter.cpp create mode 100644 Userland/Applications/PixelPaint/Filters/Filter.h diff --git a/Userland/Applications/PixelPaint/CMakeLists.txt b/Userland/Applications/PixelPaint/CMakeLists.txt index 48dfa4d781..7b8d44a299 100644 --- a/Userland/Applications/PixelPaint/CMakeLists.txt +++ b/Userland/Applications/PixelPaint/CMakeLists.txt @@ -17,6 +17,7 @@ set(SOURCES FilterGallery.cpp FilterGalleryGML.h FilterModel.cpp + Filters/Filter.cpp Image.cpp ImageEditor.cpp Layer.cpp diff --git a/Userland/Applications/PixelPaint/Filters/Filter.cpp b/Userland/Applications/PixelPaint/Filters/Filter.cpp new file mode 100644 index 0000000000..568a80403d --- /dev/null +++ b/Userland/Applications/PixelPaint/Filters/Filter.cpp @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2022, Tobias Christiansen + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include "Filter.h" +#include +#include + +namespace PixelPaint { + +RefPtr Filter::get_settings_widget() +{ + if (!m_settings_widget) { + m_settings_widget = GUI::Widget::construct(); + m_settings_widget->set_layout(); + + auto& name_label = m_settings_widget->add(filter_name()); + name_label.set_text_alignment(Gfx::TextAlignment::TopLeft); + + m_settings_widget->add(); + } + + return m_settings_widget.ptr(); +} + +} diff --git a/Userland/Applications/PixelPaint/Filters/Filter.h b/Userland/Applications/PixelPaint/Filters/Filter.h new file mode 100644 index 0000000000..2b03da994e --- /dev/null +++ b/Userland/Applications/PixelPaint/Filters/Filter.h @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2022, Tobias Christiansen + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include "../ImageEditor.h" +#include "../Layer.h" +#include + +namespace PixelPaint { + +class Filter { +public: + virtual void apply() const = 0; + virtual RefPtr get_settings_widget(); + + virtual StringView filter_name() = 0; + + virtual ~Filter() {}; + + Filter(ImageEditor* editor) + : m_editor(editor) {}; + +protected: + ImageEditor* m_editor { nullptr }; + StringView m_filter_name; + RefPtr m_settings_widget { nullptr }; +}; + +}