Tobias Christiansen
4f5c69a04c
PixelPaint: Add snapping to the GuideTool
...
When holding Shift, the Guide snaps to a multiple of the specified
number from the properties widget.
2021-08-08 00:30:41 +02:00
Tobias Christiansen
58cb668257
PixelPaint: Add tooltip to GuideTool to show current offset
...
The offset of the currently edited Guide is shown in a tooltip when
using the GuideTool.
2021-08-08 00:30:41 +02:00
Timothy
1927dbf025
PixelPaint: Use unveil to hide file system
2021-08-07 12:48:22 +02:00
Tobias Christiansen
0ca085910e
PixelPaint: Make Guides' visibility optional
...
Whether Guides are drawn or not is now controlled via the menu-entry
View->Show Guides.
2021-08-07 02:52:47 +04:30
Tobias Christiansen
193f1e01cf
PixelPaint: Add the GuideTool to the Toolbox
...
This also adds a custom icon for the GuideTool.
2021-08-07 02:52:47 +04:30
Tobias Christiansen
7923929a4d
PixelPaint: Add GuideTool for editing Guides
...
This patch adds the logic for the GuideTool. Pulling in from outside the
image creates a new Guide, moving a Guide outside of the image deletes
it and a Guide can be deleteted via the context menu.
A Guide is considered clicked when the cursor is less than 20 pixels
away from the line.
2021-08-07 02:52:47 +04:30
Tobias Christiansen
d4cf4b74c1
PixelPaint: Allow creation of Guides via the View-Menu
...
You can specify the offset in percent, and it's getting parsed and
calculated appropriately.
2021-08-07 02:52:47 +04:30
Tobias Christiansen
515bbd0b83
PixelPaint: Add a Dialog for the creation of a Guide
...
You can select whether you want a horizontal or a vertical Guide and
specify the offset you want it to be at.
2021-08-07 02:52:47 +04:30
Tobias Christiansen
a717caa4b7
PixelPaint: Include Guides in the ImageEditor
...
The ImageEditor knows about its Guides, how to draw them and exposes
ways to manipulate them.
2021-08-07 02:52:47 +04:30
Tobias Christiansen
7e01d06226
PixelPaint: Add Guide class
...
This will allow the user to add Guides to the image, that will only be
visible in the Editor, not affecting the image.
2021-08-07 02:52:47 +04:30
Marcus Nilsson
4a57a4a0b3
PixelPaint: Use a StackWidget in ToolPropertiesWidget
...
Previously changing tools while simultaneously using a widget like a
slider would result in a event_dispatch() failure.
Instead use a StackWidget to set the active widget.
2021-08-06 23:59:14 +02:00
Marcus Nilsson
868be680c2
PixelPaint: Use the ValueSlider widget for Tool properties
...
Use the new ValueSlider and get rid of the temporary solution with
tooltips :^)
2021-08-06 23:35:48 +02:00
Marcus Nilsson
b6200a3ed8
PixelPaint: Add tooltips for sliders in ToolPropertiesWidget
...
This adds a tooltip to all the slider properties showing their
current value. Previously there was no indication of what
value they had. Also rename the SprayTool property 'thickness' to
'size' like BrushTool calls it.
2021-08-03 18:53:54 +02:00
Marcus Nilsson
0c4977161f
PixelPaint: Move properties for LineTool to ToolPropertiesWidget
...
Remove the context menu for LineTool and use the tool properties
widget for options instead.
2021-08-03 09:04:57 +02:00
Marcus Nilsson
201b901cb1
PixelPaint: Move properties for RectangleTool to ToolPropertiesWidget
...
Remove the context menu and move the options to the tool properties
widget.
2021-08-03 09:04:57 +02:00
Marcus Nilsson
3392c66c94
PixelPaint: Remove context menu for MoveTool
...
Remove the context menu for MoveTool and move the actions to the layer
menu instead.
2021-08-03 09:04:57 +02:00
Marcus Nilsson
15e9d0b4d8
PixelPaint: Remove context menu for SprayTool
...
Remove the context menu for SprayTool and just use the tool properties
widget for options.
2021-08-03 09:04:57 +02:00
Marcus Nilsson
b257d8d284
PixelPaint: Move properties for EllipseTool to ToolPropertiesWidget
...
Remove the context menu for EllipseTool and use the properties widget
instead for consistency between tools.
2021-08-03 09:04:57 +02:00
Marcus Nilsson
cb6e63e579
PixelPaint: Remove context menu for PenTool
...
Remove the context menu for PenTool and just use the tool properties
widget.
2021-08-03 09:04:57 +02:00
Marcus Nilsson
e342bef854
PixelPaint: Move properties for EraserTool to ToolPropertiesWidget
...
Removes the context menu for EraserTool and instead use the
tool properties widget for options.
2021-08-03 09:04:57 +02:00
Clément Sibille
fb099ad38b
PixelPaint: Show image coordinates in the status bar
2021-08-02 00:49:24 +02:00
Brian Gianforcaro
a51e6547aa
Applications: Remove unused header includes
2021-08-01 08:10:16 +02:00
Andreas Kling
687a12d7fb
Userland: Add GUI::Window::add_menu() and use it everywhere
...
Applications previously had to create a GUI::Menubar object, add menus
to it, and then call GUI::Window::set_menubar().
This patch introduces GUI::Window::add_menu() which creates the menubar
automatically and adds items to it. Application code becomes slightly
simpler as a result. :^)
2021-07-21 21:24:26 +02:00
Andreas Kling
c7d891765c
LibGfx: Use "try_" prefix for static factory functions
...
Also mark them as [[nodiscard]].
2021-07-21 18:02:15 +02:00
Hendiadyoin1
ed46d52252
Everywhere: Use AK/Math.h if applicable
...
AK's version should see better inlining behaviors, than the LibM one.
We avoid mixed usage for now though.
Also clean up some stale math includes and improper floatingpoint usage.
2021-07-19 16:34:21 +04:30
Gavin Downard
bd4e88ae3d
PixelPaint: Fix crash when copying empty selection
...
Previously, trying to copy when there is no selection would crash,
trying to call mmap with a size of 0. Now it just leaves the clipboard
as it is.
2021-07-15 13:25:39 +02:00
Marcus Nilsson
e718de454e
PixelPaint: Check modifier on mousemove in LineTool
...
Previously m_constrain_angle could end up not being reset if the
keyup-event was lost, for example when opening a dialog. Instead check
the modifiers in on_mousemove().
2021-07-10 21:23:36 +02:00
Andreas Kling
fd898be51a
PixelPaint: Only update the layer thumbnail on layer bitmap changes
...
When a layer bitmap is modified, we don't have to repaint the whole
layer gadget in the layer list, only the little thumbnail. :^)
2021-07-09 22:07:00 +02:00
Andreas Kling
285f0383d4
PixelPaint: Move LayerListWidget gadget rect computation to a function
...
This will allow functions other than paint_event() to use the various
gadget rects (thumbnail, text, etc.)
2021-07-09 22:07:00 +02:00
Andreas Kling
1cec672e69
PixelPaint: Remove unused member from LayerListWidget::Gadget
2021-07-09 22:07:00 +02:00
Andreas Kling
0ef3cf7b0f
PixelPaint: Call correct base class in LayerListWidget::resize_event()
2021-07-09 22:07:00 +02:00
Andreas Kling
bce1d633ca
PixelPaint: Make PenTool invalidate even less when drawing :^)
2021-07-09 22:07:00 +02:00
Marcus Nilsson
c59c970363
PixelPaint: Don't deselect layers in LayerListWidget
...
There is really no reason to be able to deselect layers, so just ignore
when the user clicks outside of a layer gadget.
2021-07-09 18:04:01 +02:00
Marcus Nilsson
95710b0147
PixelPaint: Make sure that a layer is always selected
...
Make sure that a layer is selected after creating it, removing
one or creating a new image. Also make layer_properties_widget
update on tab change.
2021-07-09 18:04:01 +02:00
Marcus Nilsson
f3cdb9bfeb
PixelPaint: Only scroll into view in LayerListWidget when needed
...
This makes sure that scroll_into_view is not called when not necessary,
or when m_layers is empty, which previously caused a crash upon
removing the last layer.
2021-07-09 18:04:01 +02:00
Marcus Nilsson
791a018c99
PixelPaint: Add method to merge visible layers
...
This adds a function that merges all visible layers to one, ignoring the
invisible.
2021-07-08 20:16:26 +02:00
Marcus Nilsson
0900e31fe0
PixelPaint: Scroll into view when reordering layers
...
Make LayerListWidget scroll into view when reordering layers.
2021-07-08 20:16:26 +02:00
Marcus Nilsson
618bb2d33e
PixelPaint: Make brush draw on mousedown
...
This makes the brush tool start drawing a point before the user moves
the mouse, like in Photoshop and Gimp. The number of iterations of
draw_point makes for roughly 4 clicks to full opacity.
2021-07-08 20:16:26 +02:00
Marcus Nilsson
9be08e33ea
PixelPaint: Add method to flatten image layers
...
This adds Image::flatten_all_layers() that allows the user to flatten
all the visible layers into one.
2021-07-08 20:16:26 +02:00
Andreas Kling
8975caca45
PixelPaint: Make SprayTool only invalidate the modified area :^)
2021-07-07 13:01:20 +02:00
Andreas Kling
e28b22c316
PixelPaint: Make BrushTool only invalidate the modified area :^)
2021-07-07 13:01:20 +02:00
Andreas Kling
7cbcf5a5fa
PixelPaint: Make PenTool only invalidate the modified area :^)
2021-07-07 13:01:20 +02:00
Andreas Kling
f7053059c9
PixelPaint: Allow partial invalidation of Layer and Image
...
Let's give ourselves the tools needed to update less than the entire
image every time we paint.
This patch adds plumbing so that Layer invalidations have a modified
rect that gets passed on to Image, and then on to ImageEditor.
2021-07-07 13:01:20 +02:00
Andreas Kling
73183ee5c4
PixelPaint: Paint the area around the image with ColorRole::Tray
...
It didn't really make sense for the transparency grid to extend
infinitely around the image. Now the grid is only visible underneath
the image, which matches how most other editors behave.
2021-07-06 12:24:51 +02:00
Andreas Kling
b650bb602a
PixelPaint: Don't repaint area outside image when image itself changed
2021-07-06 12:24:51 +02:00
Marcus Nilsson
e1906d74b8
PixelPaint: Make move_selection() cycle through layers
...
Previously move_selection() did not work as expected. Instead store the
selected layer index in a member variable and continue to cycle through
the layers when you come to the start/end. Also use it to scroll into
view. Lastly rename the function to cycle_through_selection() to make it
clearer what it does.
2021-07-05 20:39:30 +02:00
Marcus Nilsson
8d205ae62e
PixelPaint: Use layer menu as context menu in LayerListWidget
...
This enables the layer menu as a context menu in LayerListWidget,
setting the clicked layer as active for now, but in the future it
would be nice to have custom menu applying to the clicked layer instead
of the active layer.
2021-07-05 20:39:30 +02:00
Marcus Nilsson
9df3550e58
PixelPaint: Change color of disabled layers in LayerListWidget
2021-07-05 20:39:30 +02:00
Marcus Nilsson
36abb38f26
PixelPaint: Make LayerListWidget scrollable
...
Previously only a couple of layers would fit in the layer widget, this
makes it scrollable and also tweaks some sizes and coordinates.
2021-07-05 20:39:30 +02:00
Marcus Nilsson
13e526de43
PixelPaint: Change the default layer name to "Layer"
...
Change the default layer name to "Layer" and enable the user to press
return to quickly close the dialog.
2021-07-05 20:39:30 +02:00