9661 Commits

Author SHA1 Message Date
David Capello
ae1d9ca9b1 Render text/highlight selected text on the canvas
Now we don't render the default ui::Entry edges, but we paint just a
border of the text bounds + the rendered text highlighting selected
text on the canvas itself.

With this change click mouse positions are translated with a scale
factor that changes depending on the app::Editor zoom.
2024-08-26 11:47:57 -03:00
David Capello
0bf9353a02 Add new Text tool (fix #28)
This is the first (not yet production-ready) version of the
interactive Text tool. The text input is done with a transparent
ui::Entry, and on each text modification an ExtraCel is rendered with
this same ui::Entry's TextBlob to be displayed in the canvas with the
active zoom level.

The ui::Entry is being painted along the text in the canvas (just for
testing), but this is something to be fixed. Probably it will not be
the case in the future and a fully customized rendering (onPaint())
process will be required.
2024-08-26 11:47:57 -03:00
David Capello
ae091726fe Fix FontInfo tests 2024-08-26 11:47:57 -03:00
David Capello
cf67842760 Fix text bounds using shaped text w/the font of each text run
This fixes the required output image size to render text in different
languages when the text doesn't support the full range of the
specified chars/code points, and multiple fonts/text runs are used.
2024-08-26 11:47:57 -03:00
David Capello
bc63d2f660 Fix bug ignoring bold/italic after we click another font name
If we clicked bold/italic, and then chose another font family, we were
using the cached typeface inside the FontInfo instead of an update
typeface with the selected styles applied (bold/italic).

Now we don't cache the typeface inside FontInfo to avoid this.
2024-08-26 11:47:57 -03:00
David Capello
53f045a369 Add Bold/Italic buttons to select a font 2024-08-26 11:47:57 -03:00
David Capello
455a67111a Use the most regular/normal typeface style for preview purposes 2024-08-26 11:47:57 -03:00
David Capello
cf514f0c53 New font selector (fix #4363)
This new font selector list installed fonts with its proper name. It
still needs some extra work to select font set styles (regular, bold,
italic, etc.)
2024-08-26 11:47:57 -03:00
David Capello
1d9f14665f New ui::FocusMessage with oldFocus/newFocus fields 2024-08-26 11:47:57 -03:00
David Capello
73b23c3830 Update laf module 2024-08-26 11:47:29 -03:00
Christian Kaiser
7d80ff120c Fix news not parsing correctly 2024-08-26 10:00:11 -03:00
Christian Kaiser
aed9127b51 Avoid drawing empty strings 2024-08-26 10:00:11 -03:00
David Capello
1c1c4593ed Merge branch 'main' into beta 2024-08-22 14:26:18 -03:00
David Capello
e87f6df72b Avoid loading current dithering matrix on each mouse move (related to #4174)
With this change we are reusing the cached/loaded matrix on each
DitheringMatrixInfo struct, calling the
load_dithering_matrix_from_sprite() function just one time (not on
each brush preview/mouse movement).
v1.3.8.1
2024-08-21 19:49:55 -03:00
David Capello
29479cb231 [win] Fix saving files to network paths (fix #4608) 2024-08-21 18:38:17 -03:00
David Capello
7b24cf2594 Fix "New Frame" button for existing third-party themes (fix #4609)
We made an attempt to change the "+" character with an icon, but we
cannot use an existing style to do this kind of change in themes (as
third-party themes will be using the old version of the style, not the
updated one).

We're reverting part of the change introduced in
e0ff51947a94bb20383f3fc501eb3e749c258728 to use the "+" character for
this "New Frame" button in the status bar.
2024-08-21 16:55:11 -03:00
David Capello
1ca4306f9d [win] Fix File > Export > Export As to other drive (fix #4607)
This only affects the Windows platform.
Regression introduced in db639072f77daf724f9eeb0642d7de61924db973
2024-08-21 13:50:29 -03:00
David Capello
8817724e44 Fix typo using ENABLE_I18N_STRINGS var v1.3.8 2024-08-19 20:08:56 -03:00
Martín Capello
712d84e44e
Avoid div by zero by preventing entering/returning a grid bounds w/zero width/height (fix #4146, #4597) 2024-08-19 18:07:40 -03:00
Christian Kaiser
4df11ac1e3
Reset mask when clicking outside of bounds with the magic wand tool (fix #4490, #4595) 2024-08-15 09:13:18 -03:00
David Capello
e5c9ab40db Fix label background of guides when moving cels 2024-08-12 20:16:11 -03:00
Panagiotis Georgiadis
0bdcdbfc49 [docs] Improve phrasing for Tileset image data length
Clarified the description for the data length field of the
compressed Tileset image when flag 2 is set.
2024-08-12 17:22:05 -03:00
David Capello
68d5262c48 Merge branch 'main' into beta 2024-08-09 21:06:57 -03:00
David Capello
d6436647ab Update laf module 2024-08-09 20:51:28 -03:00
Siddhant Madhur
3c876066aa Fix indentation in INSTALL.md
In the MacOS (Apple Silicon) install commands,
"ninja aseprite" was incorrectly indented.
2024-08-09 11:05:17 -03:00
David Capello
4e5dfa9d2c Don't export cel opacity when it's 255 (#4511 / #4552)
In this way we don't modify the current exported JSONs by users that
are not using cel opacity (which might be the most common case).
2024-08-08 19:02:51 -03:00
requizm
a11946ab0e Added opacity field when exporting a cell 2024-08-08 18:57:30 -03:00
Christian Kaiser
e0ff51947a
Add new frame menu to status bar button (#4582) 2024-08-08 17:23:41 -03:00
Gabe Spound
99f1a1ea06 Needed libwebP as a dependency on Arch Linux 2024-08-08 16:51:29 -03:00
David Capello
657e679461 Some extra comments to the coding style guide 2024-08-08 16:17:56 -03:00
David Capello
fcbd50e46f Remove emoji from contributing guide (but don't forget to smile) 2024-08-08 16:13:35 -03:00
David Capello
6f65acb54f Add VS 2022 command prompt from Start menu in INSTALL guide 2024-07-29 17:31:03 -03:00
Gaspar Capello
8f3af748b9
Don't allow to install third-party themes that override the default one (fix #4226) (#4335)
This 1) hides user themes whose name is the same as the default,
and are present in the user folders (i.e.  'extensions' and
'data/themes' folders), and 2) doesn't allow to install themes with
the same content/ID of the default aseprite-theme (fix #4226)
2024-07-29 16:02:05 -03:00
requizm
b65fb3a14e Fixed size calculation on resize_image 2024-07-25 17:59:31 -03:00
David Capello
26279597b6 Add help button "?" in some windows (fix #1980)
We hope to enhance the discoverability of Aseprite features in this
way.
2024-07-25 16:02:21 -03:00
David Capello
3c44831831 We can use = {} for default arg values in function declarations 2024-07-19 17:10:39 -03:00
David Capello
9da10605d3 Remove duplicate code with new sort_slices_by_name() function 2024-07-19 16:47:13 -03:00
requizm
6047ab69de [ui] Fixed slice order in File > Export > Export As > Area 2024-07-04 14:22:51 -03:00
David Capello
79efbd76a1 Update laf module 2024-07-04 11:10:15 -03:00
David Capello
064ddef190 Don't clone strings repository by default (fix #4489)
New ENABLE_I18N_STRINGS option (off by default) to avoid compilation
errors cloning the strings repo (no connection, no git, etc.).
2024-06-27 08:35:55 -03:00
David Capello
abe872aeb2 Convert the tileset serialization format in its own type
To match the new SerialFormat enum (uint16_t), we now have
TilesetSerialFormat enum (uint8_t).
2024-06-26 11:24:09 -03:00
David Capello
cdea6004bd Refactor app::DocFormat to doc::SerialFormat
This fixes a violation of module layers (circular dependency)
introduced in e6cd13d7e13775de2a687e55e59819cb7f19e7e9 where doc-lib
started to depend on app-lib (which cannot happen, as app-lib depends
on doc-lib).

This DocFormat/SerialFormat was used only from app-lib previously, but
when properties were introduced in user data, the serialization format
version was needed to read user properties too. So now it makes sense
to move this type/its values to the doc-lib.

A couple of extra issues were found in this refactor:
1) The recursive call inside read_layer() didn't receive this "serial"
   argument
2) read_grid() doesn't need the setId parameter
2024-06-26 10:42:30 -03:00
David Capello
76a8a8af7a Save/load blend mode/opacity for group layers when needed (#3225) 2024-06-25 13:55:42 -03:00
David Capello
d46d791339 Fix failed ASSERT() in RenderPlan test (#3225)
We cannot add new items to a RenderPlan after we access its
items (cannot call RenderPlan::addLayer() after RenderPlan::items()).
2024-06-25 13:43:02 -03:00
David Capello
874ab55581 Fix eyedropper when composite groups option is enabled (#3225) 2024-06-25 11:09:02 -03:00
David Capello
c61a5c9a01 Minor formatting fixes 2024-06-25 11:08:17 -03:00
Guilherme Belchior
ffc3684b1b Compose groups separately from all other layers
Maintain hierarchical structure of sprite groups instead of flattening.
Allows opacity and blend mode to be applied correctly to groups.
Sets the foundation for future features like mask layers.

Note:
Requires full image rendering and impacts performance in some scenarios.
Avoids complex code changes for minor performance gains.

Co-authored-by: Guilherme Marcondes <guilherme.marcondes@tecnico.ulisboa.pt>
2024-06-24 18:16:42 -03:00
David Capello
32a099dcb6 Fix crashes with ill-formed fmt format strings (fix #2274)
There is a third-party translation (and can happen with our own
translations) that a fmt format string is ill-formed in the .ini file
of the translation (this could happen even if the en.ini file was
manually modified/broken by hand).

This patch includes a refactor of the Strings class so we can:

1) Static check at compile-time about the number of required arguments
   to format a string (no need to call fmt::format() directly with
   arbitrary number of args)
2) If a string is not valid for the fmt library, the runtime exception
   is caught and the default (English) string is returned.
2024-06-20 20:49:10 -03:00
David Capello
3d50a85d14 Fix mipmaps options when downsampling (fix #4317) 2024-06-19 20:51:02 -03:00
David Capello
649f444f05 Disable bugprone-narrowing-conversions clang-tidy check 2024-06-19 17:31:36 -03:00