mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-09-18 15:32:22 +00:00
PixelPaint: Applying filters should be an action
This allows you to undo filters
This commit is contained in:
parent
58c30959b1
commit
76aeb7cad8
Notes:
sideshowbarker
2024-07-19 01:19:07 +09:00
Author: https://github.com/BenJilks
Commit: 76aeb7cad8
Pull-request: https://github.com/SerenityOS/serenity/pull/3792
Reviewed-by: https://github.com/awesomekling
Reviewed-by: https://github.com/linusg
1 changed files with 24 additions and 8 deletions
|
@ -277,51 +277,65 @@ int main(int argc, char** argv)
|
||||||
edge_detect_submenu.add_action(GUI::Action::create("Laplacian (cardinal)", [&](auto&) {
|
edge_detect_submenu.add_action(GUI::Action::create("Laplacian (cardinal)", [&](auto&) {
|
||||||
if (auto* layer = image_editor.active_layer()) {
|
if (auto* layer = image_editor.active_layer()) {
|
||||||
Gfx::LaplacianFilter filter;
|
Gfx::LaplacianFilter filter;
|
||||||
if (auto parameters = PixelPaint::FilterParameters<Gfx::LaplacianFilter>::get(false))
|
if (auto parameters = PixelPaint::FilterParameters<Gfx::LaplacianFilter>::get(false)) {
|
||||||
filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
|
filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
|
||||||
|
image_editor.did_complete_action();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
edge_detect_submenu.add_action(GUI::Action::create("Laplacian (diagonal)", [&](auto&) {
|
edge_detect_submenu.add_action(GUI::Action::create("Laplacian (diagonal)", [&](auto&) {
|
||||||
if (auto* layer = image_editor.active_layer()) {
|
if (auto* layer = image_editor.active_layer()) {
|
||||||
Gfx::LaplacianFilter filter;
|
Gfx::LaplacianFilter filter;
|
||||||
if (auto parameters = PixelPaint::FilterParameters<Gfx::LaplacianFilter>::get(true))
|
if (auto parameters = PixelPaint::FilterParameters<Gfx::LaplacianFilter>::get(true)) {
|
||||||
filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
|
filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
|
||||||
|
image_editor.did_complete_action();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
auto& blur_submenu = spatial_filters_menu.add_submenu("Blur and Sharpen");
|
auto& blur_submenu = spatial_filters_menu.add_submenu("Blur and Sharpen");
|
||||||
blur_submenu.add_action(GUI::Action::create("Gaussian Blur (3x3)", [&](auto&) {
|
blur_submenu.add_action(GUI::Action::create("Gaussian Blur (3x3)", [&](auto&) {
|
||||||
if (auto* layer = image_editor.active_layer()) {
|
if (auto* layer = image_editor.active_layer()) {
|
||||||
Gfx::SpatialGaussianBlurFilter<3> filter;
|
Gfx::SpatialGaussianBlurFilter<3> filter;
|
||||||
if (auto parameters = PixelPaint::FilterParameters<Gfx::SpatialGaussianBlurFilter<3>>::get())
|
if (auto parameters = PixelPaint::FilterParameters<Gfx::SpatialGaussianBlurFilter<3>>::get()) {
|
||||||
filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
|
filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
|
||||||
|
image_editor.did_complete_action();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
blur_submenu.add_action(GUI::Action::create("Gaussian Blur (5x5)", [&](auto&) {
|
blur_submenu.add_action(GUI::Action::create("Gaussian Blur (5x5)", [&](auto&) {
|
||||||
if (auto* layer = image_editor.active_layer()) {
|
if (auto* layer = image_editor.active_layer()) {
|
||||||
Gfx::SpatialGaussianBlurFilter<5> filter;
|
Gfx::SpatialGaussianBlurFilter<5> filter;
|
||||||
if (auto parameters = PixelPaint::FilterParameters<Gfx::SpatialGaussianBlurFilter<5>>::get())
|
if (auto parameters = PixelPaint::FilterParameters<Gfx::SpatialGaussianBlurFilter<5>>::get()) {
|
||||||
filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
|
filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
|
||||||
|
image_editor.did_complete_action();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
blur_submenu.add_action(GUI::Action::create("Box Blur (3x3)", [&](auto&) {
|
blur_submenu.add_action(GUI::Action::create("Box Blur (3x3)", [&](auto&) {
|
||||||
if (auto* layer = image_editor.active_layer()) {
|
if (auto* layer = image_editor.active_layer()) {
|
||||||
Gfx::BoxBlurFilter<3> filter;
|
Gfx::BoxBlurFilter<3> filter;
|
||||||
if (auto parameters = PixelPaint::FilterParameters<Gfx::BoxBlurFilter<3>>::get())
|
if (auto parameters = PixelPaint::FilterParameters<Gfx::BoxBlurFilter<3>>::get()) {
|
||||||
filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
|
filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
|
||||||
|
image_editor.did_complete_action();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
blur_submenu.add_action(GUI::Action::create("Box Blur (5x5)", [&](auto&) {
|
blur_submenu.add_action(GUI::Action::create("Box Blur (5x5)", [&](auto&) {
|
||||||
if (auto* layer = image_editor.active_layer()) {
|
if (auto* layer = image_editor.active_layer()) {
|
||||||
Gfx::BoxBlurFilter<5> filter;
|
Gfx::BoxBlurFilter<5> filter;
|
||||||
if (auto parameters = PixelPaint::FilterParameters<Gfx::BoxBlurFilter<5>>::get())
|
if (auto parameters = PixelPaint::FilterParameters<Gfx::BoxBlurFilter<5>>::get()) {
|
||||||
filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
|
filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
|
||||||
|
image_editor.did_complete_action();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
blur_submenu.add_action(GUI::Action::create("Sharpen", [&](auto&) {
|
blur_submenu.add_action(GUI::Action::create("Sharpen", [&](auto&) {
|
||||||
if (auto* layer = image_editor.active_layer()) {
|
if (auto* layer = image_editor.active_layer()) {
|
||||||
Gfx::SharpenFilter filter;
|
Gfx::SharpenFilter filter;
|
||||||
if (auto parameters = PixelPaint::FilterParameters<Gfx::SharpenFilter>::get())
|
if (auto parameters = PixelPaint::FilterParameters<Gfx::SharpenFilter>::get()) {
|
||||||
filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
|
filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
|
||||||
|
image_editor.did_complete_action();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
@ -329,8 +343,10 @@ int main(int argc, char** argv)
|
||||||
spatial_filters_menu.add_action(GUI::Action::create("Generic 5x5 Convolution", [&](auto&) {
|
spatial_filters_menu.add_action(GUI::Action::create("Generic 5x5 Convolution", [&](auto&) {
|
||||||
if (auto* layer = image_editor.active_layer()) {
|
if (auto* layer = image_editor.active_layer()) {
|
||||||
Gfx::GenericConvolutionFilter<5> filter;
|
Gfx::GenericConvolutionFilter<5> filter;
|
||||||
if (auto parameters = PixelPaint::FilterParameters<Gfx::GenericConvolutionFilter<5>>::get(window))
|
if (auto parameters = PixelPaint::FilterParameters<Gfx::GenericConvolutionFilter<5>>::get(window)) {
|
||||||
filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
|
filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
|
||||||
|
image_editor.did_complete_action();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue