Tobias Christiansen
fd90e10600
PixelPaint: Fix crash on applying with no filter selected
...
The wrong conception that done() would stop the program flow right there
lead to the lambda not properly aborting when no filter was selected.
The ExecAborted would be processed and then the nullptr that was
m_selected_filter would be happily dereferenced.
This patch fixes that.
2022-01-04 18:36:27 +02:00
Tobias Christiansen
d42abb3c7b
PixelPaint: Use the wrapped filters for the Filter Gallery
...
Now, the filters can supply the Filter Gallery with a GUI::Widget such
that the user can interact with the filter. The Filter Gallery in turn
only calls apply() on the filter once it should be run.
This decouples the PixelPaint filters a lot from the ones supported by
LibGfx and paves the way to filters with settings.
For now there still are just the plain LibGfx filters so this change
feels like introducing a lot of boilerplate, but in the future there
will be a lot more to see.
2022-01-04 14:40:00 +01:00
Tobias Christiansen
0deadcdb28
PixelPaint: Create wrappers for all supported filters
2022-01-04 14:40:00 +01:00
Tobias Christiansen
5cf0357be1
PixelPaint: Create Filter base class
...
All the filters will need a wrapper around them, and this is going to be
their base class
2022-01-04 14:40:00 +01:00
Tobias Christiansen
ea19f6dd4a
PixelPaint: Extend Filter Gallery dialog to accommodate settings
...
For now, the space is empty, but it's there.
2022-01-04 14:40:00 +01:00
Maciej
28ea412251
PixelPaint: Make paste action create new image if no editor is opened
...
This matches GIMP behaviour.
2022-01-04 07:29:50 +00:00
Maciej
41d02bd5e6
PixelPaint: Add a way to quickly create an image from clipboard
...
Ctrl+Shift+V, like in GIMP.
2022-01-04 07:29:50 +00:00
Tobias Christiansen
3528563e3d
PixelPaint: Move all filters into the Filter Gallery
2022-01-01 14:38:59 +01:00
Tobias Christiansen
f2feebc6f6
PixelPaint: Expand Filter Gallery to know how to apply filters
2022-01-01 14:38:59 +01:00
Tobias Christiansen
ddaf496aa0
PixelPaint: Make the ImageEditor known throughout the Filter Gallery
2022-01-01 14:38:59 +01:00
Tobias Christiansen
f47026b1d6
PixelPaint: Add Filter Gallery Dialog to the Filter Menu
...
This patch adds the bare bones of the new Filter Gallery.
For now, only the gml and the basic layout got added, a fairly boringw
indow pops up when "Filter Gallery" is called.
The code for the Model used by the TreeView is taken in large parts from
HackStudio's VariableModel.
2022-01-01 14:38:59 +01:00
Elyse
086615535f
Everywhere: Use 'decrease_slider_by()' method from AbstractSlider
...
The same idea as 'increase_slider_by()', it helps us to avoid repeating
the pattern 'set_value(value() - delta)'.
2021-12-30 14:31:50 +01:00
Elyse
d53e1fa1fa
Everywhere: Use 'increase_slider_by()' method from AbstractSlider
...
This method help us to avoid repeating the pattern
'set_value(value() + delta)'.
2021-12-30 14:31:50 +01:00
r00ster91
b6d921f682
PixelPaint: Refactor falloff computation and extend hardness range
2021-12-21 13:52:55 -08:00
Sahan Fernando
49ed168ced
Userland: Use File::lines() range-based for loop where appropriate
2021-12-12 14:06:38 +03:30
Brian Gianforcaro
cf4fa936be
Everywhere: Use default execpromises argument for Core::System::pledge
2021-11-28 08:04:57 +01:00
Marcus Nilsson
67f349be46
PixelPaint: Keep a RefPtr to offset_text_box in EditGuideDialog
...
Keep a RefPtr to offset_text_box in EditGuideDialog instead of using
a local pointer. Previously the lambda in ok_button.on_click() would
outlive the local variable causing a crash.
2021-11-27 11:04:48 +01:00
Andreas Kling
58fb3ebf66
LibCore+AK: Move MappedFile from AK to LibCore
...
MappedFile is strictly a userspace thing, so it doesn't belong in AK
(which is supposed to be user/kernel agnostic.)
2021-11-23 11:33:36 +01:00
Andreas Kling
21a5fb0fa2
LibCore+LibSystem: Move syscall wrappers from LibSystem to LibCore
...
With this change, System::foo() becomes Core::System::foo().
Since LibCore builds on other systems than SerenityOS, we now have to
make sure that wrappers work with just a standard C library underneath.
2021-11-23 11:33:36 +01:00
Mustafa Quraish
4d302e0e88
Everywhere: Use Application::construct() with Main::Arguments directly
...
Use the updated API everywhere we are currently manually passing in
`arguments.argc` and `arguments.argv`.
2021-11-22 21:13:42 -08:00
Mustafa Quraish
2fbcab46bf
Everywhere: Use ArgsParser::parse() with Main::Arguments directly
...
Use the updated API everywhere we are currently manually passing in
`arguments.argc` and `arguments.argv`.
2021-11-22 21:13:42 -08:00
Pascal Puffke
bec7ffaf0a
PixelPaint: Port to LibMain
2021-11-22 23:56:22 +01:00
Ben Wiederhake
afc456edd6
PixelPaint: Use better-fitting image size
...
This makes the default image fit perfectly into the default viewport,
which means the first fit_image_to_view call will end up with a scale of
exactly 1. This scale level has no visual artifacts, which is the more
intuitive 'default' behavior.
Fixes #10975 .
2021-11-22 22:14:53 +01:00
Ben Wiederhake
177478dadf
PixelPaint: Add interactive zoom ComboBox to toolbar
...
Before, there was nothing that tells the user the current zoom level,
which is unknown after a 'fit to image' (the initial state).
2021-11-22 22:14:53 +01:00
Ben Wiederhake
9013d0fe38
PixelPaint: Add ability to fit to either width, height, or image
2021-11-22 22:14:53 +01:00
Ben Wiederhake
be697a440f
PixelPaint: Allow setting ImageEditor scale and listening for changes
2021-11-22 22:14:53 +01:00
Ben Wiederhake
7f962cd9d3
PixelPaint: Floor effective viewport size to whole integers
...
We don't have fractional pixels available, so don't attempt to use them.
2021-11-22 22:14:53 +01:00
Ben Wiederhake
f22c0ffe0c
LibGUI+Everywhere: Make sync requests to Clipboard server more obvious
2021-11-21 11:49:06 +00:00
Ben Wiederhake
b6419f2cf2
LibGUI: Make clipboard-as-bitmap parsing less data-race-y
...
This encourages the caller to first fetch data and type atomically, and
then parse that, instead of potentially making multiple requests.
2021-11-21 11:49:06 +00:00
Andreas Kling
4bd4ce439a
PixelPaint: Allow toggling the active layer boundary display rect
...
Let the user opt out of painting a rectangle around the currently
active layer.
2021-11-20 00:25:24 +01:00
Andreas Kling
587f9af960
AK: Make JSON parser return ErrorOr<JsonValue> (instead of Optional)
...
Also add slightly richer parse errors now that we can include a string
literal with returned errors.
This will allow us to use TRY() when working with JSON data.
2021-11-17 00:21:10 +01:00
Andreas Kling
8b1108e485
Everywhere: Pass AK::StringView by value
2021-11-11 01:27:46 +01:00
Andreas Kling
801d46d02c
PixelPaint: Use ErrorOr<T> for Image and Layer creation helpers
2021-11-08 00:35:27 +01:00
Andreas Kling
9268ed9605
PixelPaint: Use ErrorOr<T> for Image::try_compose_bitmap()
2021-11-08 00:35:27 +01:00
Andreas Kling
77fd4625b5
PixelPaint: Use ErrorOr<T> for Image writing/exporting functions
2021-11-08 00:35:27 +01:00
Andreas Kling
a7f1f1c34b
LibCore: Use ErrorOr<T> for Core::File::open()
2021-11-08 00:35:27 +01:00
Andreas Kling
0f5477c721
AK: Use ErrorOr<T> for MappedFile factories
...
Replace Result<T, E> with ErrorOr<T> and propagate the error to callers.
2021-11-08 00:35:27 +01:00
Andreas Kling
0de33b3d6c
LibGfx: Use ErrorOr<T> for Bitmap::try_create()
...
Another one that was used in a fajillion places.
2021-11-08 00:35:27 +01:00
Andreas Kling
235f39e449
LibGfx: Use ErrorOr<T> for Bitmap::try_load_from_file()
...
This was used in a lot of places, so this patch makes liberal use of
ErrorOr<T>::release_value_but_fixme_should_propagate_errors().
2021-11-08 00:35:27 +01:00
Andreas Kling
8262bbf624
LibGfx: Use ErrorOr<T> for Bitmap::cropped()
2021-11-08 00:35:27 +01:00
Andreas Kling
db90b4554e
LibGfx: Use ErrorOr<T> for Bitmap::flipped()
2021-11-08 00:35:27 +01:00
Andreas Kling
69c4614a94
LibGfx: Use ErrorOr<T> for Bitmap::rotated()
2021-11-08 00:35:27 +01:00
Andreas Kling
2da4cfcc80
LibGfx: Use ErrorOr<T> for Bitmap::clone()
2021-11-08 00:35:27 +01:00
FrHun
54605794f9
Applications: Remove border from GroupBox margins
2021-11-03 16:13:19 +01:00
Ben Wiederhake
465af4c4d4
Applications: Fix visibility of Object-derivative constructors
...
Derivatives of Core::Object should be constructed through
ClassName::construct(), to avoid handling ref-counted objects with
refcount zero. Fixing the visibility means that misuses like this are
more difficult.
2021-11-02 22:56:53 +01:00
Musab Kılıç
4de7b3ad24
PixelPaint: Map color_distance_squared from 0 to 1
2021-11-02 12:20:48 +01:00
Marco Cutecchia
81b260bd1c
PixelPaint: Use a bucket cursor for the Bucket tool
2021-10-31 12:37:49 +01:00
Marco Cutecchia
0f24678eaf
PixelPaint: Support using a bitmap as a tool's cursor
2021-10-31 12:37:49 +01:00
Filiph Sandström
d6a0726302
Everywhere: Rename left/right-click to primary/secondary
...
This resolves #10641 .
2021-10-27 22:05:58 +03:00
Idan Horowitz
b41954182a
PixelPaint: Move Mask::{get, set, to_index} to the header file
...
They were previously taking up 9% of samples in a profile of PixelPaint
while selecting a mask, and as a result of moving them to the header
they were inlined, which effectively eliminated them from the profile.
2021-10-24 17:02:44 +02:00