Commit Graph

7269 Commits

Author SHA1 Message Date
Gaspar Capello
bc050e8f15 Fix multi layer movement in tilemap mode (fix #3144)
Before this fix, a multi-layer mask move (with mixed layer types:
normal layer and tilemap layers with different grids) caused loss of
drawing areas.

The heart of this solution is to correctly align the 'selection mask'
and 'transform data' according to the layer's grid, and also, forcing
'site' TilemapMode/TilesetMode before each
reproduceAllTransformationsWithInnerCmds() iteration.

The scale transformation could have some things to improve in later
commits. Not fully tested yet.
2022-03-14 11:13:11 -03:00
David Capello
70a42c4c77 Add WheelAction to change InkType (related to #3195)
Mockup contributed here: https://community.aseprite.org/t/2468/10
2022-03-10 16:08:56 -03:00
David Capello
ffc7af2ee8 Merge branch 'main' into beta 2022-03-10 15:50:05 -03:00
David Capello
54c354f5d2 Fix forward declaration of os::Sampling 2022-03-10 15:44:56 -03:00
David Capello
8064179dfc Don't show clipboard error when we're trying to show the File > New dialog
The error is confusing because the user doesn't know that we're trying
to access the clipboard info only to fill Width/Height fields
automatically on File > New. Some errors (like "invalid image format")
should be displayed only when we use Edit > Paste explicitly.
2022-03-10 15:28:52 -03:00
David Capello
e5b0d9de8d Update tga module 2022-03-08 20:57:19 -03:00
David Capello
4ce2d1a340 Add option to simulate mouse wheel using key shortcut+drag mouse (fix #3195)
Now we can change several values (zoom, brush size, etc.) pressing a
keyboard shortcuts and dragging the mouse in a specific vector
direction (DragVector). It allows the modification of one, two, or
even more parameters at the same time (e.g. X axis to change the brush
size, Y axis the alpha value of the ink).
2022-03-08 20:40:11 -03:00
David Capello
7e1d3832f0 Merge branch 'main' into beta 2022-03-04 23:56:55 -03:00
David Capello
c5ee08e3b5 Add required include directory to use doc/dio/fixmath libraries
This is used for the fuzz project.
2022-03-04 23:53:43 -03:00
David Capello
3dd47f913f Add missing strings for WheelActions to move through tiles 2022-03-03 18:07:51 -03:00
David Capello
18ba8f184b Merge branch 'main' into beta 2022-03-02 21:31:31 -03:00
David Capello
31ce326d5b Fix ink tests when ENABLE_UI=0
It looks like we cannot trust in the get_current_palette() content
when we are running scripts without UI. So it's preferable if we get
the palette directly from the sprite.

We should completely remove the get_current_palette() function.

Tests can be found in https://github.com/aseprite/tests/blob/main/scripts/inks.lua
2022-03-02 21:27:06 -03:00
David Capello
4b3b1f31e0 Fix ChangePixelFormatCommand so it can be compiled/linked when ENABLE_UI=0 2022-03-02 21:26:14 -03:00
David Capello
c40993e284 Merge branch 'main' into beta 2022-03-02 16:07:22 -03:00
Gaspar Capello
ef31179934 Fix painting with transparent color, opacity 255, Indexed color mode, in Alpha Compositing to behave as Simple Ink (fix #3047) 2022-03-02 15:28:25 -03:00
David Capello
e12fb556c1 Fix contour tool + pixel perfect when drawing just one pixel
Bug report: https://community.aseprite.org/t/13149
2022-02-25 15:05:29 -03:00
David Capello
2bb93247aa Fix modifying slice bounds before the 1st SliceKey frame (fix #3122)
This issue brought a lot of other related issues (like slice chunks
being saved incorrectly in .aseprite file, etc.). This is an
alternative fix to PR #3141 where a std::sort() was proposed.
2022-02-25 09:42:32 -03:00
David Capello
2100c45de2 Fix memory leaks when we use doc::Keyframes structure
Detected with LeakSanitizer on keyframes_tests but also reported in
PR #3141. We've finally solved this problem using std::unique_ptr.
2022-02-24 19:53:42 -03:00
David Capello
d16c34b247 Fix memory leaks in some tests found with LeakSanitizer 2022-02-24 19:43:22 -03:00
David Capello
cef7e7eed1 Don't show edge layers when we draw
If we have the View > Show > Layer Edges option enabled, the active
layer edges are always visible, and it is confusing when we're drawing
because we temporarily modify the cel position/bounds. It's better if
we hide the edges in the DrawingState.

Regression introduced in 31bf651d8b
2022-02-24 17:00:21 -03:00
Joshua Ogunyinka
31bf651d8b Fix panning canvas out of view clips in Auto Guides (fix #2994) 2022-02-24 16:51:43 -03:00
David Capello
04fa9a47ab Merge branch 'main' into beta 2022-02-24 16:42:05 -03:00
David Capello
b212a24479 Add sampling options to Edit > Preferences dialog too (#3183) 2022-02-21 16:21:07 -03:00
David Capello
5ccf414183 Add options to change the downsampling algorithm (fix #3183)
Also we've restored the default algorithm to bilinear + mipmapping,
which was the default on the Aseprite before we switched to Skia m96.
This was requested by some users.
2022-02-21 15:30:09 -03:00
David Capello
3162d224f7 Add editor_benchmark
This is a simple initial benchmark to test how well the editor perform
in common operations like scroll and zoom. We have plans to improve it
through caching (and GPU textures) progressively.
2022-02-21 10:31:54 -03:00
David Capello
7e76d81fcc Merge branch 'main' into beta 2022-02-18 19:32:33 -03:00
David Capello
2d3de1728c Add SkinTheme::get() to avoid using SkinTheme::instance() as much as possible
This was done to avoid some nullptr references using
SkinTheme::instance() (mainly from
StatusBar::IndicatorsGeneration::add()) when the application is being
closed because an exception was thrown. This might be useful to detect
certain kind of crashes from Sentry.
2022-02-18 19:01:46 -03:00
David Capello
104f8a10cf Fix crash using invalid index in FileItemList (fix #3181)
There is a state where m_selected is pointing to an item that doesn't
exist in the current list of items. We didn't detect this on Debug
mode yet, but we've received one Sentry crash report about it.
2022-02-17 10:36:18 -03:00
David Capello
8b5133b4c0 [lua] Fix context used in App.useTool() 2022-02-11 10:41:56 -03:00
David Capello
0c1e08138e [lua] Fix crash using app.useTool() when the active editor is in MovingPixelsState (fix #2933)
More information in https://github.com/aseprite/aseprite/pull/3166
2022-02-11 10:19:32 -03:00
David Capello
1f4e3bcd11 Merge branch 'main' into beta 2022-02-08 12:56:26 -03:00
David Capello
845ff17788 Fix "Reset Scale" notification when there is enough workarea available
Instead of using the window size, we can use the available workarea to
know that the user can resize the main window to its full size and
there will be enough room to display some common dialogs like the
Preferences one.
2022-02-08 12:07:36 -03:00
David Capello
903401e28d Fix radial gradient when the gradient vector is close to (0,0) (fix #3126) 2022-02-07 19:03:40 -03:00
David Capello
0588ebd01b [lua] Generate onclick event when we reorder/click a Dialog:shades with { mode="sort" } (fix #3081) 2022-02-04 17:36:49 -03:00
David Capello
97389dd1a3 [lua] New API version 2022-02-04 14:08:19 -03:00
David Capello
9cf2ff782f [lua] Fix Color.index to return an integer instead of a number (fix #3159) 2022-02-04 13:44:13 -03:00
David Capello
8d4941d86c [lua] Add Color{ index } ctor 2022-02-04 13:43:43 -03:00
David Capello
0cfeacab5c Stop filter preview before we change filter parameters
Similar fixes as in 811b893320
2022-02-03 14:59:46 -03:00
Joshua Ogunyinka
811b893320 Fix occassional crashes in despeckle/median filter (fix #2903) 2022-02-03 12:51:30 -03:00
Gaspar Capello
653931c4fc [lua] Add a warning message deleting objects that are not part of the sprite (fix #3135)
Before this fix, the Sprite:deleteLayer/Slice/etc() Lua functions
didn't warn the user if its argument (a layer/slice/etc) didn't belong
to the corresponding sprite.
2022-02-03 11:02:55 -03:00
David Capello
aec012a0d9 Fix crash using a nullptr m_pixelsMovement on MovingPixelsState::onCommitMouseMove() (fix #3161) 2022-02-03 10:57:49 -03:00
Joshua Ogunyinka
aa188d641b Fix moving rectangular marquee box while selecting color (fix #3143) 2022-02-03 10:11:25 -03:00
David Capello
bf48381c23 Show selected index correctly in PaletteViews used from ColorPopups (regression introduced in d164458c24) 2022-01-14 16:44:13 -03:00
David Capello
ce9640fbd3 Fix regression about hidden Frame/Zoom indicators by default in StatusBar
Bug report: https://community.aseprite.org/t/12488/11
2022-01-14 16:27:00 -03:00
David Capello
23db76216a Fix full MenuBox width when adding scrollbars and exceeding the workspace.x2() limit 2022-01-14 15:18:18 -03:00
David Capello
69d0564a09 Fix crash closing a MenuBox with viewport (fix #3132, fix #3133)
Regression introduced in ed595eb6b1
calling MenuBox::setMenu() of the first child of a MenuBoxWindow when
handling its kCloseMessage. The firstChild() was supposed to be a
MenuBox, but we didn't take care of the case when the MenuBox is
replaced with a View when scrollbars are needed (added by
add_scrollbars_if_needed()).
2022-01-14 15:09:50 -03:00
David Capello
0b3773b17d Merge branch 'main' into beta 2022-01-13 08:44:22 -03:00
David Capello
9e23d31d84 Fix crash using Shift key in Pencil tool
Bug introduced in f3fd0de3d0
2022-01-13 08:43:03 -03:00
David Capello
835b76e83a Merge branch 'main' into beta 2022-01-13 07:09:25 -03:00
David Capello
f3fd0de3d0 Improve detection of one click when using a stylus
We can interpret a quick mouse down/up events (e.g. less than 250
milliseconds) as a simple click if the mouse doesn't move too much in
the middle of both events (e.g. a tiny rectangle of 7x7 pixels).

Some discussion about this: https://community.aseprite.org/t/12491/10
2022-01-12 23:23:19 -03:00
David Capello
87e8b45dc1 Fix regression clicking same spot w/Rectangular Marquee to deselect
Regression introduced in 26c1a94b83

Reported:
- https://community.aseprite.org/t/12491/1
- https://steamcommunity.com/app/431730/discussions/0/3200371016617015005/
2022-01-12 22:23:26 -03:00
David Capello
14a9327573 Fix popup menu size when multiple windows UI is disabled
Fixed regression introduced in ed595eb6b1

Reported:
- https://community.aseprite.org/t/12497
2022-01-12 22:22:05 -03:00
David Capello
53c1041953 Merge branch 'main' into beta 2022-01-11 14:42:48 -03:00
David Capello
5b1740cddd [win] Fix the detection of a crash to report via Sentry 2022-01-11 14:39:52 -03:00
David Capello
07cf70361b Set os::Window user data to nullptr before setting mouse cursors
In this way we don't process any queued native message for the display
as it will be deleted. This could be a possible fix for some crashes
reported in set_native_cursor_on_all_displays() (#2907)
2022-01-11 11:43:05 -03:00
David Capello
0f04e016b6 Set same scroll position in timeline after updating scrollable area
This fixes the following problem:

* Hide the Timeline, and restart the program
* Open a sprite with a lot of layers
* Show the Timeline

Without this fix, depending on the selected layer the scroll will be
invalid and the layer will not be displayed by default when the
Timeline appears.

Related to 229ded9642
2022-01-11 11:34:30 -03:00
Joshua Ogunyinka
f9d41665f0 Fix bounds getting reset when a dialog is closed (fix #3018) 2022-01-11 11:20:01 -03:00
David Capello
d52455b200 Fix centering the Console correctly when using UI w/multiple windows 2022-01-11 10:41:58 -03:00
David Capello
efd8a71b9f Merge branch 'main' into beta 2022-01-10 17:03:04 -03:00
David Capello
817879d700 Fix possible infinite loop reading broken .aseprite files (fix #3123) 2022-01-10 17:00:12 -03:00
David Capello
f7a87af0fd Fix crash using Shift+click on Pencil tool (cherry-picked from ab3bf31c6a) 2022-01-10 15:59:36 -03:00
David Capello
229ded9642 Fix regression detected in #3066 setting default timeline scroll pos 2022-01-10 11:41:33 -03:00
David Capello
8ec2fff447 Merge branch 'main' into beta 2022-01-06 18:44:38 -03:00
David Capello
06cfbd794e Use DelayedMouseMove for MovingCelState too (#3119) 2022-01-06 18:43:12 -03:00
David Capello
ab3bf31c6a Merge branch 'main' into beta 2022-01-06 17:44:43 -03:00
David Capello
26c1a94b83 Group several mouse movement in one on the Editor
Mainly for Line-like tools (which require the last mouse position
only). Related to #3119, possible fix for several performance issues
on Linux mainly.
2022-01-06 16:54:39 -03:00
David Capello
bc8e1b36eb Update copyright year 2022-01-05 20:45:08 -03:00
David Capello
ed595eb6b1 Fix crash when a MenuBoxWindow is closed from the os::Window close button (#2777) 2022-01-05 20:33:32 -03:00
David Capello
6e726025ee Merge branch 'main' into beta 2022-01-05 20:16:13 -03:00
David Capello
4619089869 Fix warning in ColorBar::onIsPaletteViewActive() 2022-01-05 20:14:00 -03:00
David Capello
02de9be1ab Rename src/tests/test.h -> src/tests/app_test.h to avoid confusion with observable tests/test.h 2021-12-23 21:38:17 -03:00
David Capello
6836911661 Don't define HAVE_CONFIG_H and include "src" directory globally
Avoid using include_directories() and add_definitions() as much as
possible.

This change was made to avoid a problem using HAVE_CONFIG_H on Sentry
breakpad implementation where HAVE_CONFIG_H is used (but our config.h
is different from the expected one in breakpad).
2021-12-22 19:08:43 -03:00
David Capello
a7a344339c Update laf & clip submodules 2021-12-22 17:02:34 -03:00
David Capello
2be9403a48 Rename the Sentry crash handler to aseprite_crashpad_handler (#2857) 2021-12-21 13:40:38 -03:00
Joshua Ogunyinka
539e115b7d Fix colorbar palette indicator when view is changed (fix #3082)
The foreground/background color indicators in the ColorBar weren't
visible in certain scenarios e.g. If we choose the Tiles mode in a
tilemap, and then we select a regular layer without changing to Pixels
mode.

Co-authored-by: David Capello <david@igarastudio.com>
2021-12-16 20:37:29 -03:00
David Capello
0eef399ab9 Merge branch 'lua-errors' 2021-12-15 20:19:59 -03:00
David Capello
9340ca387d [lua] Minor change in error messages Websocket -> WebSocket 2021-12-15 20:19:26 -03:00
David Capello
91c687b1e3 Merge branch 'main' into beta 2021-12-15 17:51:19 -03:00
David Capello
977994765c Normalize some cmake options from WITH_* to ENABLE_* 2021-12-15 17:47:44 -03:00
David Capello
cf1678f4b3 Add optional & experimental support to load .psd file (only when ENABLE_PSD=on) 2021-12-15 17:44:51 -03:00
David Capello
72cf9c12f7 Merge branch 'beta-psd' into beta 2021-12-15 17:28:00 -03:00
Joshua Ogunyinka
1350cd92c3 Fix incorrect cel alignment 2021-12-15 16:06:00 -03:00
Joshua Ogunyinka
f567805591 Fix allowing alpha channel if layer is converted from indexed image (fix #3073) 2021-12-15 15:03:57 -03:00
lampysprites
3035d00283 [lua] Show errors that happen inside App.transaction 2021-12-12 19:20:12 +07:00
lampysprites
586b2493f9 [lua] Show more specific websocket errors 2021-12-12 18:57:51 +07:00
David Capello
e7575f2373 [lua] Fix crash using app.ranges.images/editableImages collections (fix #3069)
We were pushing invalid doc::Image objects to the Lua
stack (push_docobj<Image>) instead of pushing a ImageObj related to
the given cels in the active range.
2021-12-10 22:35:37 -03:00
David Capello
a2328a3793 Restore the previous active DocView when we close the non-active sprite
Fixes https://github.com/aseprite/aseprite/pull/2727#issuecomment-852524240
Close #2030, close #2727, close #3080, close #3089

Originally reported in:
https://community.aseprite.org/t/preview-file-to-save-when-closing/2779
2021-12-07 15:45:52 -03:00
MorganDavid
b96d8c8c30 Show user what is about to close (fix #2030) 2021-12-07 15:12:48 -03:00
Joshua Ogunyinka
b1d8da925c Add support for sprite slicing 2021-12-07 08:12:19 -03:00
Joshua Ogunyinka
174ec28638 Add support for frame-by-frame animation 2021-12-06 15:33:32 -03:00
Joshua Ogunyinka
5df21d96e8 Add support for layer groups 2021-12-06 15:33:32 -03:00
Joshua Ogunyinka
6e00c74f5b Add image processing scanline by scanline using iterators 2021-12-06 15:33:32 -03:00
Joshua Ogunyinka
7745921a2b Optimize image transparency detection 2021-12-06 15:33:32 -03:00
Joshua Ogunyinka
e5e9d59e56 Combine onImageScanline into one single function 2021-12-06 15:33:32 -03:00
Joshua Ogunyinka
9a12eb584b Initial to decode PSD files 2021-12-06 15:33:32 -03:00
Joshua Ogunyinka
ff851157cc Fix Shift+N behavior (fix #2957) 2021-12-02 17:33:10 -03:00
David Capello
2b57fcaa6c Merge branch 'main' into beta 2021-12-01 18:14:53 -03:00
Gaspar Capello
b5a787a20f Fix tilemap layers empty after converting color profile (fix #3052)
Before this fix, tilemap layers disappeared after converting the
Sprite's Color Profile in the Sprite Properties dialog.
2021-12-01 17:18:25 -03:00
Joshua Ogunyinka
3c7b344389 Save and retain color profile when saving palettes (part of #2893) 2021-12-01 09:21:02 -03:00
Omar Abdul Aziz
b30e64648e [lua] Dialog:modify() now supports combobox options
References:
* https://github.com/aseprite/aseprite/issues/2965#issuecomment-939556356
* https://github.com/aseprite/api/issues/61
2021-11-30 18:59:57 -03:00
David Capello
693a2c85ff Merge branch 'main' into beta 2021-11-18 13:41:18 -03:00
David Capello
d6339f163b Don't make SkinTheme surfaces slices immutable as we re-use them
Each time we refresh the default theme we re-use all slices/surfaces
of the SkinTheme. This could be completely avoided if we were able to
create sub-surfaces from the original sprite sheet (sharing the same
pixels).
2021-11-18 13:37:34 -03:00
David Capello
704c32ca25 Merge branch 'main' into beta 2021-11-17 14:46:48 -03:00
David Capello
f93b33f248 Migrate to Skia m96 API 2021-11-17 12:36:11 -03:00
David Capello
a713a88845 [x11] Fix initial black window on Linux
Possible regression introduced in f15589734f
2021-11-17 11:32:15 -03:00
David Capello
bed6a8d8b1 [lua] Increment API version 2021-11-16 09:08:39 -03:00
David Capello
c78af5241b Merge branch 'lua-filename-event' 2021-11-16 09:08:17 -03:00
David Capello
c13c521af2 Minor change in style 2021-11-16 09:07:50 -03:00
David Capello
8deb9c46e7 [lua] Fix clipping when drawing an image on a cel image (fix #3054) 2021-11-15 15:53:14 -03:00
Joshua Ogunyinka
12e61d33be [lua] Fix layer iteration when some layer name contains just a number (fix #3045) 2021-11-12 08:13:43 -03:00
lampysprites
67a9c2fe0d [lua] Add "filenamechange" event to Sprite.events 2021-11-11 20:18:44 +07:00
David Capello
a0bea17bc0 Avoid continuous redrawing events when moving mouse on Edit > Preferences listbox of sections 2021-11-05 12:41:53 -03:00
David Capello
ca252f9f02 Fix creating two ImageView if we specify "file" and "icon" for <image> widget 2021-11-05 12:15:24 -03:00
David Capello
9d61308bd6 Merge branch 'main' into beta 2021-11-02 14:22:29 -03:00
David Capello
43ca34bd35 Refactor updater::getUserAgent() using new base::get_platform() 2021-11-02 14:18:14 -03:00
David Capello
621bc209ac Merge branch 'main' into beta 2021-10-25 18:29:34 -03:00
David Capello
7cc9ea08ba Use https to get news items and check the latest version 2021-10-25 18:28:40 -03:00
David Capello
6c0842eaa5 Update copyright year in ver/info.c 2021-10-25 18:28:16 -03:00
David Capello
c4f2bf79a0 Merge branch 'main' into beta 2021-10-25 17:47:23 -03:00
David Capello
91e8e5cd46 Support scrolling the debugger source code viewport w/the mouse wheel 2021-10-25 17:40:47 -03:00
David Capello
534163ae5f Fix painting issues in the debugger filling the line number column correctly 2021-10-25 17:40:12 -03:00
David Capello
76a815cc2c Merge branch 'main' into beta 2021-10-20 11:53:47 -03:00
Martín Capello
c5fccb1499 Add a check to allow exit command execution only when the main window is the currently running 2021-10-20 11:35:54 -03:00
Gaspar Capello
f15589734f Fix double-clicking a .aseprite file in macOS Finder doesn't open the file anymore (fix #2985)
More info in: #3006
2021-10-20 11:05:24 -03:00
David Capello
ea703a38e6 [lua] Add "fgcolorchange" and "bgcolorchange" events to app 2021-10-19 15:18:13 -03:00
David Capello
4dcdcfe387 Fix deadlock destroying SpriteEvents disconnecting observers onCloseDocument
Instead of using an onDestroy(Document), which can be called from the
ClosedDocs background thread, we can disconnect all Doc observers on a
new onCloseDocument() event called from Doc::close() (from the UI
thread).

This deadlock issue was commented here:
https://github.com/aseprite/aseprite/pull/3009#issue-1029413592
2021-10-19 13:01:37 -03:00
David Capello
246b1930f4 Revert "Avoid deadlock of ClosedDocs and SpriteObserver"
This reverts commit 8c902dd8fc.
2021-10-19 11:56:36 -03:00
David Capello
5d04eb5a2e [lua] Match WebSocketMessageType constants with the style of all other constants 2021-10-19 11:15:00 -03:00
David Capello
5c30315611 Avoid std::bad_function_call if we don't specify an onreceive callback for the WebSocket 2021-10-19 11:12:15 -03:00
David Capello
c2f24656d7 Don't create a ui::Timer if the UI is not available 2021-10-19 11:11:57 -03:00
David Capello
651fa4a3b6 Stop the auxiliar ui::Timer when the last WebSocket is GC'd 2021-10-19 10:57:25 -03:00
David Capello
b29627c8cb Minor formatting change 2021-10-19 10:50:18 -03:00
lampysprites
6075285b5c Refactor the websocket timer 2021-10-19 12:23:12 +07:00
lampysprites
8c902dd8fc Avoid deadlock of ClosedDocs and SpriteObserver 2021-10-18 23:43:50 +07:00
lampysprites
1f9c2e8987 Handle socket messages when window is out of focus 2021-10-18 23:40:49 +07:00
lampysprites
93fb40ad7d Expose min/max time between websocket reconnects 2021-10-18 23:38:45 +07:00
Martín Capello
d1e02cc3c1 Add listitem support to the ui class generation tool 2021-10-15 10:44:30 -03:00
Martín Capello
e9e515c03f Add slider's "readonly" attribute support to widget_loader 2021-10-14 15:28:07 -03:00
David Capello
1e57cd267d Merge branch 'main' into beta 2021-10-13 10:42:20 -03:00
David Capello
6dd128d637 Add main_area in debugger window to show only the buttons initially 2021-10-13 10:35:55 -03:00
David Capello
d077900fe5 Merge branch 'main' into beta 2021-10-13 10:15:39 -03:00
David Capello
212e9fbe6c New initial Lua debugger version (#1967)
Incomplete version of the Lua debugger.
Some available features:

* Break in next executed instruction
* Step in, over, out
* See & navigate stacktrace
* See local variables

Some missing features:

* Breakpoints
* Eval user expressions with local variables

The UX needs some improvement yet.
2021-10-12 16:52:14 -03:00
David Capello
3de3ef5635 Minor change in widget_loader.cpp 2021-10-12 15:32:02 -03:00
David Capello
0b1ae09a63 Avoid exception using <textbox /> on .xml widget files
The exception was thrown using std::string(nullptr) constructor.
2021-10-12 15:30:16 -03:00
David Capello
9dbbcbd7ef Fix Theme::drawTextBox() to calculate the correct textbox size
If we are only calculating the textbox size (Graphics* g=nullptr) we
don't need to use the View scroll information anyway.
2021-10-12 15:28:57 -03:00
David Capello
db44eeb269 Merge branch 'main' into beta 2021-10-12 10:45:33 -03:00
David Capello
161264a78d Merge branch 'script-api-layer-is-reference' 2021-10-08 11:47:54 -03:00
David Capello
318d5ed6a0 Avoid removing random values from the Lua registry using Events:off()
Fix proposed in:
https://github.com/aseprite/aseprite/pull/2980#issuecomment-938495522
2021-10-08 11:09:47 -03:00
David Capello
2ddbbf00d6 Fix FileAccessMode::Full security value to include OpenSocket
Commented in:
https://github.com/aseprite/aseprite/pull/2980#issuecomment-938495522
2021-10-08 11:05:16 -03:00
David Capello
b9130b83f4 Merge branch 'interprocessing' 2021-10-07 19:38:23 -03:00
David Capello
6e84bb5443 [lua] Ask for permission to open a WebSocket from scripts 2021-10-07 19:37:10 -03:00
David Capello
b9241e6d91 Refactor ask_access() with ResourceType argument 2021-10-07 19:34:40 -03:00
David Capello
4cd137a639 [lua] Add Image.rowStride property now that Image.bytes is available
We need to know the specific rowStride to be able to set a proper
Image.bytes (bytes size = Image.height * Image.rowStride).
2021-10-07 19:10:27 -03:00
David Capello
cd342f5630 [lua] Add events handling with Sprite.events & App.events
Added a new Events object with :on() and :off() methods to start or
stop listening to a specific event respectively. This also allows to
add several callbacks for the same event.

Replaced the temporal Site.onChange & Sprite.onChange implementations.

Related to several issues (enable more possibilities for): #138, #1403, #1949, #2965, #2980
2021-10-07 18:56:39 -03:00
David Capello
0249275f8c [lua] Change MessageType to WebSocketMessageType
Just in case to avoid collision or confusion with some kind of future
MessageType (e.g. ui::MessageType). There are no plans for this, but
we prefer to use WebSocket* prefix.
2021-10-06 19:33:09 -03:00
David Capello
327b38a05d Wrap MESSAGE_TYPE_BINARY with parenthesis (...) 2021-10-06 19:29:19 -03:00
David Capello
0ca411690b Remove trailing whitespaces 2021-10-06 19:17:10 -03:00
David Capello
c117b1b01f Simplify Image_set_bytes(): as bytes_size == bytes_needed we don't need to call std::min() 2021-10-06 19:16:51 -03:00
Jeremy Behreandt
e0a747cad7 Expose Layer Is Reference
Exposes a getter for layer is reference in the Lua scripting API.
2021-10-06 14:04:54 -05:00
David Capello
f8dabfa294 Use portable memcpy instead of memcpy_s 2021-10-04 18:07:20 -03:00
David Capello
c1628e4c62 Fix crash clicking combobox scrollbar of dithering matrices in Dynamics popup (fix #2984)
We're trying to access the display() attribute of a kMouseDownMessage
message when the display was already deleted from Manager::_closeWindow.
2021-10-04 15:49:11 -03:00
lampysprites
2628afdfce Remove unneeded Sprite.__gc 2021-10-04 23:15:55 +07:00
lampysprites
bf53fa26cd Make onChange callbacks more predictable 2021-10-04 12:17:25 +07:00
lampysprites
a90853f765 Extend WebSocket API 2021-10-03 12:52:37 +07:00
lampysprites
4354be1d7a Add CMake option to disable websockets 2021-10-03 12:40:29 +07:00
lampysprites
711741a358 Remove unneeded lua stack pops 2021-10-03 02:22:15 +07:00
lampysprites
28595a410d Clean up sprite observers on lua GC 2021-10-02 22:10:25 +07:00
lampysprites
83c03a3158 Expose site observer to lua API 2021-10-02 20:09:35 +07:00
lampysprites
2aa3fdbd95 Execute websocket callbacks in the ui thread 2021-10-02 18:34:17 +07:00
lampysprites
22e3e6244a Simplify user API for Sprite observers 2021-10-02 16:22:31 +07:00
lampysprites
f8ef06a86e Lua API Image:bytes - convert lua Image to data string and back 2021-10-02 14:40:28 +07:00
lampysprites
b0f10ee276 Add Websocket client API 2021-10-02 13:57:51 +07:00
David Capello
33595c8bbb Merge branch 'plugin-onenabled' 2021-09-30 15:02:14 -03:00
David Capello
b5d230d52f Increment Lua API version 2021-09-30 15:01:57 -03:00
David Capello
1e92f66ff2 Remove trailing whitespace 2021-09-30 14:22:21 -03:00
David Capello
89904afa82 Simplify app::Job implementation
* Remove pointers to base::thread/mutex
* Use std::thread/mutex as values
2021-09-30 14:09:39 -03:00
lampysprites
e6aeee6400 Add IXWEbSocket library 2021-09-30 13:13:43 +07:00
Gaspar Capello
f32393bb31 Fix Canvas Size w/"Trim content outside" for tilemap layers (fix #2942)
New bounds for tilemap cels weren't calculated correctly when "Sprite >
Canvas Size" with "Trim content outside canvas" option was used.
2021-09-29 16:42:24 -03:00
David Capello
5238bfc7d7 Merge branch 'main' into beta (fix #2970) 2021-09-29 14:54:30 -03:00
David Capello
d7ddb7feed Fix changing random values to transparent color for non-indexed sprite from cmd::SetPalette
Possible fix for #2970
Possible regression introduced in dd2d226264
2021-09-29 14:42:55 -03:00
lampysprites
85f3164e21 Expose DocObserver to the scripts 2021-09-29 22:39:01 +07:00
David Capello
f318a42f19 Merge branch 'main' into beta 2021-09-29 10:16:02 -03:00
lampysprites
449c158f80 Implement enabledness check for script commands 2021-09-28 14:44:38 +07:00
David Capello
364f62ee4a Merge branch 'sentry' (fix #2857) 2021-09-23 21:09:27 -03:00
David Capello
f07dc53d83 Use our anonymous UUID to identify Sentry users 2021-09-23 21:06:19 -03:00
David Capello
c6c1393402 Show consent to share crash data only when there are something to share 2021-09-23 20:40:02 -03:00
David Capello
f6322a1373 Don't show "Aseprite is up to date" when there is no new version 2021-09-23 15:27:09 -03:00
David Capello
0c604ca4ba Ask for consent to share crash data 2021-09-23 15:22:26 -03:00
David Capello
6cafec8d06 Move Sentry class impl to a .cpp file 2021-09-23 12:55:30 -03:00
David Capello
775e8f86be Merge branch 'main' into beta 2021-09-23 09:19:23 -03:00
David Capello
515952cf32 Enable Fill/Stroke commands when !ENABLE_UI 2021-09-23 09:18:14 -03:00
Gaspar Capello
4e12f4dcc2 Fix Alt+mouse wheel to scroll through tiles when we are in tiles mode (fix #2956)
Before this fix, Alt+mouse wheel to scroll through tiles didn't work as it did in the color palette.
Also, fixed tile deselection when user removes the focus of the tileset (for example, doing click in the editor).
2021-09-23 09:04:37 -03:00
David Capello
024cd73f62 Change location for crash data (e.g. %AppData%/Aseprite/crashdb) 2021-09-22 19:48:44 -03:00
David Capello
8b215235c7 Minor fix for app-lib flags in CMakeLists.txt file 2021-09-22 18:34:23 -03:00
David Capello
5f9b6f494a Merge branch 'main' into beta 2021-09-22 17:54:57 -03:00
Gaspar Capello
83c18399a4 Fix incorrect cropping rectangle calculation in canvas size command in lua script
Prior to this fix, CanvasSize command via lua script results in bad canvas and image clipping.
2021-09-22 17:40:29 -03:00
David Capello
911589111e Add Sentry as an alternative to handling minidumps manually (#2857) 2021-09-21 11:29:48 -03:00
Joshua Ogunyinka
ed8e2c8392 Fix performance issue/lag drawing in 'Auto' mode on a tilemap layer (fix #2877)
We receive a .aseprite example where the tilemap contain some tiles
with huge tile indexes. We don't know why the tilemap was saved with
those wrong values (tile index out of bounds), but it was the cause of
the lag.
2021-09-08 12:04:39 -03:00
David Capello
9e10a1c82c Merge branch 'main' into beta 2021-09-06 18:30:45 -03:00
David Capello
7d248c33d7 Fix initialization order of base class and member variable in ui::CloseEvent class
Fixed clang warning: field 'm_canceled' will be initialized after base 'ui::Event'
2021-09-06 18:00:56 -03:00
Martín Capello
495623d6b2 Add support to "visible" attribute 2021-09-06 13:58:19 -03:00
Martín Capello
05dfd75743 Add cancelation support to CloseEvent 2021-09-06 13:57:57 -03:00
Martín Capello
e6d0c1858a Add <image> tag support 2021-09-06 13:53:02 -03:00
Joshua Ogunyinka
3da532453c Fixed issue regarding when color index of a pixel is bigger than the palette size 2021-09-02 16:56:39 +04:00
David Capello
013792a215 Don't access preferences from background thread and check current_editor existence
Related to #2874 and ac31ee35c0
2021-09-01 12:11:02 -03:00
David Capello
6341fcee23 Add missing #include to use current_editor 2021-09-01 12:02:29 -03:00
Robert Rüdiger
ac31ee35c0 Fix translucent backgrounds in color selection 2021-09-01 12:01:59 -03:00
David Capello
650ab7b8d6 Minor change: move comment to its related if-condition 2021-09-01 11:10:19 -03:00
Joshua Ogunyinka
d502876cd3 Fixed saving of blend mode and opacity in aseprite files 2021-09-01 11:08:53 -03:00
David Capello
845f275ae7 Enable cycling colors when palette size=1 so RGB/HSV colors are converted to index=0 anyway
In this way after ChangeColor command to increase/decrease an index is
used, we always got an index selected (even index=0 if palette size=1)
2021-09-01 10:38:35 -03:00
David Capello
adc9c109da Merge branch 'main' into beta 2021-08-31 09:06:09 -03:00
Jeremy Behreandt
edb9f89456 Cyclic Color Change in Palettes
Made Change Color: Increment/Decrement Foreground/Background methods cyclic instead of clamped. At last palette element, incrementing selected color returns to first element. At first palette element, decrementing color returns to last element.
2021-08-31 01:10:18 -05:00
Gaspar Capello
dd2d226264 Fix crash after saving a GIF file from an indexed image which transparent index is gone
Before this fix, it was possible to lose the transparent index at Indexed Color Mode.
It was reproducible doing:
- New file, Indexed mode, Black background.
- Erase all the palette, add 40 colors slots (these all will be black)
- Press Remap button
- Go to Sprite > Properties...  set transparent color to 11.
- Erase color entries 2 to 20
- Press Remap button
You'll see the transparent index is gone (transparent index = -1)
To reproduce the crash, additional steps are needed:
- Right click to layer and select 'Layer from Background'
- Make a color RGBA(0, 0, 0, 0) and add to the palette
- Paint on canvas with this color (it'll act like a eraser)
- File > Save As... save in GIF format.
- Press OK
Crash!

This crash was reported on ticket 2620 and 2621.
2021-08-30 15:53:33 -03:00
Jeremy Behreandt
d14cf4038d Color Sort For Hue, Alpha
Removes switch case with fall through. Removes nested switch
cases. Refactors color sorting method to 1. push zero alpha colors to
the front of the palette; 2. resort to value as a criterion for gray
colors; 3. use saturation and value as back up comparisons for each
other for equivalent values; 4. approximate gamma-to-linear when
perceptual lightness is chosen.

Partial fix for #2901.
2021-08-30 15:33:53 -03:00
Joshua Ogunyinka
971ba32338 added support for loading/saving alpha channels in palette files 2021-08-30 10:57:20 -03:00
David Capello
1f6c6951af Add SetGridBounds::setGrid() to avoid some duplicated code 2021-08-30 10:52:40 -03:00
Joshua Ogunyinka
f85f24e847 fixed restoring grid preference on undo/redo (fix #2872) 2021-08-28 08:54:00 +04:00
Joshua Ogunyinka
33d0187dab Continue playing the same tag in the Preview window after switching sprites (fix #2797) 2021-08-26 08:54:29 -03:00
David Capello
54a6ef5eb7 Merge branch 'main' into beta 2021-08-23 14:09:44 -03:00
David Capello
d3d30ed851 Merge branch 'improve-save-performance-fseek' 2021-08-23 12:33:20 -03:00
jestarray
59e01493cb Added Duration to filename formatter 2021-08-23 11:50:28 -03:00
David Capello
4981f05f0b Fix color of the central little pixel of the crosshair 2021-08-20 20:11:51 -03:00
David Capello
1a7c381c5e Revert "Allow dragging mouse up/down to change zoom too"
This reverts commit 2c82e19669.

Given the feedback from the following posts, we've decided to revert
this change at the moment:
* https://steamcommunity.com/app/431730/discussions/2/3059617763567133029/
* https://github.com/aseprite/aseprite/issues/2767
2021-08-20 16:32:45 -03:00
David Capello
4e11d45769 Fix crash switching from a tilemap to a regular layer in tile mode & the preview window opened (fix #2854) 2021-08-19 20:31:23 -03:00
David Capello
c46927dce6 Save/restore window size of the file selector (fix #2756 in some way) 2021-08-19 11:51:21 -03:00
David Capello
7f56db58b7 Restore ui::Window bounds correctly after loading its lastNativeFrame()
Without this fix windows were missing a last re-layout/setBounds to
the new frame size, so they showed up with an incorrect size given the
available area of the native window.
2021-08-19 11:47:17 -03:00
David Capello
a5b41d2630 Merge branch 'main' into beta 2021-08-19 10:34:32 -03:00
David Capello
2fa47b59c9 Center the "open sequence" dialog correctly when it's showed from a file specified in the CLI (fix #2899) 2021-08-18 15:36:15 -03:00
David Capello
1e98a65859 Minor change in ui::Manager::run() 2021-08-18 15:34:05 -03:00
David Capello
341408e902 Don't crash when saving palettes to .jpg format (fix #2654)
Now .jpg is not even show in the list of available format to save
palettes (same for other file format that don't support indexed color
mode).
2021-08-18 13:03:38 -03:00
David Capello
74e9a73f48 Merge branch 'main' into beta 2021-08-13 14:49:18 -03:00
Martín Capello
1eb740482e Update last row and column of pixels in the editor's viewport when the sprite is zoomed in and the color mode or FX dialog are used. (also fix #2803) 2021-08-13 11:11:55 -03:00
David Capello
8b5d7be104 Add support to move the Preview window with a styles/pen on Windows
Fix part of https://github.com/aseprite/aseprite/issues/2783
2021-08-12 16:25:20 -03:00
Robert Rüdiger
32999a71bc Fix color switching on empty palette space click 2021-08-08 12:46:55 +02:00
Alex Marcolina
54fddf7cc3 Replace fseek with putl/w to reduce io flushes
ase_file_write_start_chunk needs to skip forward the size of the chunk header, as these values will be written in later.  Using fseek was causing performance issues on my Windows machine due to causing an io flush on every chunk, for projects with many (thousands) of chunks.  Replacing with the equivalent put commands in ase_file_write_close_chunk results in ~100x speedup.
2021-08-01 20:44:15 -07:00
David Capello
ecbd13caf3 Use transparent windows for tooltips & popups like toolbar (fix #2764) 2021-07-30 16:14:38 -03:00
Martín Capello
fc79146c56 Fix crash when pressing ESC while moving a selection (fix #2829) 2021-07-16 11:24:49 -03:00
Gaspar Capello
10a5694e6e Fix regression saving certain GIF files when disposing frames (fix #2806)
Before this fix, when some aseprite file with transparents pixels was
converted to GIF, each frame didn't overwrite correctly the previous
frame (image disposal was incorretly chosen: DO_NOT_DISPOSE instead of
RESTORE_BGCOLOR).
2021-07-12 11:00:54 -03:00
David Capello
22a5c4c324 Merge branch 'main' into beta 2021-07-09 10:47:16 -03:00
David Capello
5a6bd465f5 Cache mouse cursors to avoid re-generating them on each setCursor()
This should improve the mouse movement, where a new mouse cursor was
created on each mouse movement with black & white pixels. It's a
regression introduced in ef4f691459
(which was originally introduced to improve the mouse movement
perception in a 100Hz monitor).

This might be a possible fix for:
https://github.com/aseprite/aseprite/issues/2713
2021-07-09 10:21:16 -03:00
David Capello
8f838ba36d Backport FullscreenMode command (#464)
Original from ae02600a63
2021-07-05 20:11:46 -03:00
David Capello
7a3fb9c2ac Fix running UI tests on beta branch 2021-07-05 19:48:17 -03:00
David Capello
9ee6f99588 Merge branch 'main' into beta 2021-07-05 19:43:55 -03:00
David Capello
8c0215dd06 Fix UI tests 2021-07-05 19:42:32 -03:00
David Capello
95df0b23d3 Show main os::Window on the first flipDisplay() 2021-07-05 19:42:04 -03:00
David Capello
4a5a3a7bc4 Fix compilation when ENABLE_DEVMODE is defined 2021-07-05 19:41:51 -03:00
David Capello
12aef12ed1 Merge branch 'main' into beta 2021-07-05 18:45:00 -03:00
David Capello
c42c5e1453 Backport new laf API to main branch of aseprite
Some features from the beta branch of aseprite & laf were backported
to the main branch of aseprite.

Related commits:
- New memory handling (db4504e816)
- New get event with timeout (e6ec13cc31)
- Convert os::NativeCursor to an enum (06a5b4f3ae)
- Adapt code to the new os::Display -> os::Window refactor (5d31314cdb)
- Save/load main window layout correctly and limit to current workarea (d6acb9e20f)
- Redraw window immediately on "live resizing" (d0b39ebade)
2021-07-05 17:51:29 -03:00
David Capello
1d1982d312 Merge branch 'main' into beta 2021-07-01 11:50:55 -03:00
David Capello
ffe65bface Detect webp files by file content (fix #2807) 2021-07-01 11:37:11 -03:00