From 0b241177b402fe1e771fc24a0c48c79ac04afa2d Mon Sep 17 00:00:00 2001 From: Hubert Lewandowski Date: Mon, 20 Nov 2023 22:29:47 +0100 Subject: [PATCH] Resolve update issues (#16) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Include build type in ccache key This should lead to better cache utilisation, smaller caches * Use ccache on macOS Originally (#2699) ccache was only enable for Linux due to suspiciously low macOS yields. I have addressed the likely issue upstream (https://github.com/hendrikmuhs/ccache-action/pull/147) and ccache can be used on macOS now as well. * Fix blend mode usage for GraphicsContext:drawImage(image, x, y) (fix #3960) * Use transparent color when the source indexed image uses mask color (fix #3960) * [lua] Add GraphicsContext.palette property to set the palette used to draw indexed images * Set GraphicsContext.palette automatically when a Sprite's indexed image or tileset's tile indexed image is drawn * Fix Full Preview and Edges setting on Cursors preferences (fix #3188) * Update INSTALL.md Including all the steps for the ARM version of the mac install instructions, rather than partial steps. * Show brush preview for custom brushes when using Paint Bucket tool (fix #4052) * Fix unused variable warnings * Fix sprintf() warnings using snprintf() or fmt::format() * Clarify Windows instructions for 64-bit Skia * Update laf module New changes required for #3684/#4063 to trigger mouse buttons with keys correctly. * Add more accessible option to re-enable the Aseprite file dialog (fix #4051) As now the native file selector is the default one, we moved the option to re-enable the previous file selector to Edit > Preferences > General > Show Aseprite file dialog option. Related to #3615 and added as a simple alternative to #2745 which require native widgets on each native file dialog. * fixed time duration not including ending frame * Add Timeline visibility button to Toolbar, extracted button draw logic to separate member function * Add new icon for the button to switch the timeline visibility (#4081, #4092) * Minor fix in new timeline button in the toolbar (#4081, #4092) The button was being painted with "toolbutton_last" part instead of "toolbutton_normal" when it wasn't highlighted/in "hot" state. * Fix std::clamp() assert in Manager::onInitTheme() * respect slice keys frame number on ase file format (fix #4062) * Prevent crash when in Auto or Stack mode the user tries to move pixels from a tilemap with inexistent tiles (fix #4071) * Fix disable delete layer button when only one layer exists (fix #3649) * [x11] Update clip module to fix a problem pasting text to some text editors * Revert timeline behavior to the v1.2 default (#4024) This change was introduced in dd7e27a098e94d524fb0d77d4fccf73e86657978 as a possible fix for #4024, but the change is too disruptive to be introduced at this stage, we need some extra UI elements to make the drag & drop accessible in both modes: the default v1.2 behavior, and a possible new selection mode, e.g. #1498 * Rename scale_xxbits_to_8bits() -> scale_xbits_to_8bits() * Take some tests out from a loop they don't depend on * Support scaling down bits (e.g. from 10 to 8) with scale_xbits_to_8bits() doing a bit shift * Update submodules (fix #4102) * Improve script engine's exception handling More details about the implications of this change can be found in https://github.com/aseprite/aseprite/pull/4057 * [lua] Limit the possibility to create a tileset with origin != 0,0 (fix #4118) * [lua] Make Sprite:newTileset(Rectangle) work (fix #4117) * [lua] Sprite:newTileset() uses sprite grid size by default (fix #4116) * Update clip submodule * EditorConfig: Don't use tabs in .md files * Show custom pattern brushes for Paint Bucket (fix #4053) * [lua] Fix crash when saving tilemap's cel image (fix #4069) * Remove ';' chars from lua tests * Fix crash deleting layers while using "Change Layer" w/scroll wheel (fix #4114) E.g. If we configure Shift+scroll wheel to "Change Layer" action, and Shift+J to delete a layer, we can press Shift key and move through layers with the mouse whell while we press the Shift key, and if we press J (without releasing the Shift) start deleting layers. At some point a crash will happen. * Update laf module * Fix error message when attempting to delete layer in a group (fix #4083) If the sprite contained only one layer group, and we tried to delete one child, we got an error message about "You cannot delete all layers". This fixes this (the error message is only when we delete the last top level layer). * Minor comment in AppOptions::VerboseLevel * Log UUID when -debug option is specified (fix #4104) In this way, in some cases, we could ask to the user for the -debug report and match some Sentry crash report with the user. * Possible fix for crash reports re-opening IntEntry popup when it's already open (fix #4124) * Fixed unnecessary scrollbar in X dimension for dithering selector dropdown. Added offset to dithering selector dropdown width to avoid X dimension scrollbar obscuring the bottom of the dropdown. This also removes the need for a vertical scrollbar for the generic number of dithering options. Related to Issue #4001 * Minor refactor to set DitheringSelector combobox size hint (#4001, #4075) Changed the required size to its minimum (6 instead of 8). Minor refactor from 1c3224a71649b86b2784e8c537af26ff004374d3 All these values are hard-coded in DitherItem (so we cannot use theme-related values yet for this). * Fix export sprite sheet to RGB is not exporting the palette (fix #3881) * New tile flags meaning (x/y/diagonal flip) + serialize then correctly * Changed the "90cw" flag to "diagonal flip" (the tile should be rendered with X/Y axis switched in this case) * Each time we read/write an .aseprite file we have to convert the mask/shift from the file to the values expected in memory (tile_f_xflip/yflip/dflip) * Add simple rendering of tiles w/flags (x/y/d flip) * [lua] Add test about saving/loading/modifying tilemap w/flags Something interesting is that Image:drawPixel() must ask for a rehash to the tileset when the tile is modified, maybe we can find a better way to handle this in the future. * Fix eyedropper to pick colors/tiles correctly from flipped tiles * Added a new app::Color type for tiles, to store the flags of the picked tile. * Fixed color bar/status bar with a new draw_tile() to draw tiles with flip flags. * Fix painting on flipped tiles in manual mode * Fix eyedropper for tiles w/flags when picking colors from "Current Layer" * Fix tile information (index/flags) in StandbyState * Fix painting with tiles and flags * Add support to flip/rotate tiles to ChangeBrush command (like #1222) * Fix assert converting Color{index} to a tile from tilemap.lua test We must be able to convert a app::Color::IndexType to a tile index. * Remove unused variable in lambda function * Show tile flags in the editor canvas when we use Ctrl key/move tool Added build_tile_flags_string() utility to create the string used in to show the tile flags (XYD) on the status bar, the editor canvas, etc. * Add Space+X and Space+Y alternatives to flip brush/tile flags We already have Space+H and Space+V, but as the flags are XYD probably Space+X/Y makes more sense. * Fix bug w/auto tileset mode adjusting tiles when we replace a unique instance of a tile+flag with a new tile The assert() in remove_unused_tiles_from_tileset() checking for the tiles histograms was failing because we weren't adjusting the histogram correctly when a tile w/a flag is replaced w/another without flags. * Add support to match flipped tiles automatically in Auto/Stack modes By default Aseprite will not try to match flipped versions of the tiles (as it requires more CPU), but when we create a tileset we can specify which flips can be matched automatically (new Tileset::matchFlags() property). These flags are just for the Auto mode, if we manually insert a flipped tile, that is always supported, even when the matchFlags() are not specified. * Fix eyedropper in Tiles mode to pick tiles that are flipped and have masked areas Sprite::pickCels() wasn't taking care of the tile flags to pick tilemap layers correctly with flipped tiles. * Add a workflow to close spammy PRs First attempt, not sure if this will be useful at all. * Remap tiles with flags correctly * Move the timeline button in the toolbar to the bottom * Add "Advanced Options" checkbox in Tileset selector To hide "Base Index" & "Allowed Flips" options by default. * Fix possible crash adding reference layer (fix #3949) * [osx] Fix mouse misalignment and show tabs area again when Screen Scaling=100% (fix #4142) Originally reported here: https://steamcommunity.com/app/431730/discussions/0/3954784199573459745/ * Add option to enable the Snap to Grid option for the brush preview (fix #4137) * Update About dialog copyright year * Fix crash making a tileset bigger and pressing Remap (fix #4144) This happens only if the tilemap already has tile references outside the valid range of the tileset (and even bigger than the new tileset size). * Fix typo in en.ini file: extra " char (fix #4148) * [lua] Fix crash calling io.open() without argument (fix #4159) * Use configured dynamics of active tool w/o opening dynamics popup (fix #4151) * Add option to disable Snap to Grid by default when we move the selection (fix #4153) --------- Co-authored-by: Michał Janiszewski Co-authored-by: Martín Capello Co-authored-by: Gaspar Capello Co-authored-by: Andrés Colón Co-authored-by: David Capello Co-authored-by: Ashray Shah Co-authored-by: Rowan Douglas Co-authored-by: Akylzhan Co-authored-by: Nicolás Pinochet Co-authored-by: Dariy Guzairov <0quokka0@gmail.com> Co-authored-by: ChikenUni <70973373+ChikenUni@users.noreply.github.com> --- .editorconfig | 3 + .github/workflows/build.yml | 4 +- .github/workflows/close_spam.yml | 13 + INSTALL.md | 258 ++++++++++++++++++ data/extensions/aseprite-theme/dark/sheet.png | Bin 16908 -> 16942 bytes data/extensions/aseprite-theme/dark/theme.xml | 1 + data/extensions/aseprite-theme/sheet.png | Bin 16194 -> 16231 bytes data/extensions/aseprite-theme/theme.xml | 1 + data/gui.xml | 6 + data/pref.xml | 5 +- data/strings/en.ini | 13 +- data/widgets/about.xml | 2 +- data/widgets/options.xml | 16 +- data/widgets/tileset_selector.xml | 18 +- docs/ase-file-specs.md | 7 +- laf | 2 +- src/app/CMakeLists.txt | 2 + src/app/check_update.cpp | 8 +- src/app/cli/app_options.h | 4 +- src/app/cmd/set_tileset_match_flags.cpp | 45 +++ src/app/cmd/set_tileset_match_flags.h | 40 +++ src/app/color.cpp | 37 ++- src/app/color.h | 5 + src/app/color_picker.cpp | 60 ++-- src/app/color_utils.cpp | 8 +- src/app/commands/cmd_cel_properties.cpp | 1 - src/app/commands/cmd_change_brush.cpp | 31 ++- src/app/commands/cmd_layer_properties.cpp | 10 +- src/app/commands/cmd_new_layer.cpp | 21 +- .../cmd_new_sprite_from_selection.cpp | 15 +- src/app/commands/cmd_options.cpp | 39 ++- src/app/commands/cmd_remove_layer.cpp | 27 +- src/app/commands/filters/filter_preview.h | 1 - .../filters/filter_target_buttons.cpp | 9 +- src/app/crash/data_recovery.cpp | 9 +- src/app/doc_exporter.cpp | 26 +- src/app/file/ase_format.cpp | 18 +- src/app/file/bmp_format.cpp | 8 +- src/app/file/file.cpp | 14 +- src/app/file/file.h | 3 + src/app/file/file_data.cpp | 21 +- src/app/file/file_tests.cpp | 13 +- src/app/filename_formatter.cpp | 16 +- src/app/ini_file.cpp | 18 +- src/app/modules/gfx.cpp | 51 +++- src/app/modules/gfx.h | 2 +- src/app/render/shader_renderer.h | 1 - src/app/resource_finder.cpp | 16 +- src/app/script/color_class.cpp | 12 +- src/app/script/dialog_class.cpp | 46 ++-- src/app/script/docobj.h | 10 +- src/app/script/engine.cpp | 15 +- src/app/script/engine.h | 5 +- src/app/script/graphics_context.cpp | 63 ++++- src/app/script/graphics_context.h | 19 +- src/app/script/image_class.cpp | 61 ++++- src/app/script/luacpp.h | 8 +- src/app/script/pixel_color_object.cpp | 6 + src/app/script/security.cpp | 2 +- src/app/script/sprite_class.cpp | 13 +- src/app/script/tile_class.cpp | 6 +- src/app/script/tileset_class.cpp | 8 +- src/app/shade.cpp | 4 +- src/app/tools/controllers.h | 76 +++--- src/app/tools/ink_processing.h | 4 +- src/app/ui/color_bar.cpp | 8 +- src/app/ui/context_bar.cpp | 25 +- src/app/ui/dithering_selector.cpp | 18 +- src/app/ui/dithering_selector.h | 4 +- src/app/ui/editor/brush_preview.cpp | 9 +- src/app/ui/editor/editor.cpp | 36 ++- src/app/ui/editor/editor_state.h | 7 +- src/app/ui/editor/moving_pixels_state.cpp | 3 +- src/app/ui/editor/standby_state.cpp | 8 +- .../ui/editor/state_with_wheel_behavior.cpp | 6 + src/app/ui/editor/state_with_wheel_behavior.h | 3 +- src/app/ui/editor/tool_loop_impl.cpp | 19 +- src/app/ui/status_bar.cpp | 11 +- src/app/ui/tileset_selector.cpp | 107 ++++++-- src/app/ui/tileset_selector.h | 14 +- src/app/ui/timeline/timeline.cpp | 47 ++-- src/app/ui/toolbar.cpp | 83 ++++-- src/app/ui/toolbar.h | 3 + src/app/ui/zoom_entry.cpp | 8 +- src/app/util/cel_ops.cpp | 197 ++++++++++++- src/app/util/conversion_to_surface.cpp | 14 +- src/app/util/readable_time.cpp | 13 +- src/app/util/tile_flags_utils.cpp | 23 ++ src/app/util/tile_flags_utils.h | 22 ++ src/app/xml_exception.cpp | 15 +- src/clip | 2 +- src/dio/aseprite_common.h | 3 + src/dio/aseprite_decoder.cpp | 48 +++- src/doc/CMakeLists.txt | 1 + src/doc/algo.cpp | 5 +- src/doc/color_scales.h | 23 +- src/doc/color_scales_tests.cpp | 33 +-- src/doc/image_io.cpp | 2 - src/doc/palette.cpp | 16 ++ src/doc/palette.h | 3 + src/doc/playback.cpp | 1 + src/doc/primitives.cpp | 4 +- src/doc/sprite.cpp | 105 ++++--- src/doc/sprite.h | 8 + src/doc/tile.h | 10 +- src/doc/tile_primitives.cpp | 85 ++++++ src/doc/tile_primitives.h | 58 ++++ src/doc/tileset.h | 6 + src/gen/ui_class.cpp | 5 +- src/render/render.cpp | 165 +++++++++-- src/render/render.h | 12 +- src/tga | 2 +- src/ui/alert.cpp | 2 +- src/ui/entry.cpp | 2 +- src/ui/int_entry.cpp | 7 + src/ui/manager.cpp | 4 +- src/ui/slider.cpp | 2 +- src/ui/widget.cpp | 2 +- tests/scripts/image.lua | 23 ++ tests/scripts/import_sprite_sheet_command.lua | 4 +- tests/scripts/palette.lua | 2 +- tests/scripts/test_utils.lua | 2 +- tests/scripts/tilemap.lua | 109 +++++++- tests/scripts/tileset.lua | 26 +- tests/sprites/2x2tilemap2x2tile.aseprite | Bin 0 -> 744 bytes tests/sprites/README.md | 2 + 126 files changed, 2198 insertions(+), 575 deletions(-) create mode 100644 .github/workflows/close_spam.yml create mode 100644 INSTALL.md create mode 100644 src/app/cmd/set_tileset_match_flags.cpp create mode 100644 src/app/cmd/set_tileset_match_flags.h create mode 100644 src/app/util/tile_flags_utils.cpp create mode 100644 src/app/util/tile_flags_utils.h create mode 100644 src/doc/tile_primitives.cpp create mode 100644 src/doc/tile_primitives.h create mode 100644 tests/sprites/2x2tilemap2x2tile.aseprite diff --git a/.editorconfig b/.editorconfig index 572a2ce90d..ec75353e95 100644 --- a/.editorconfig +++ b/.editorconfig @@ -18,6 +18,9 @@ indent_style = space indent_style = space indent_size = 2 +[*.md] +indent_style = space + [*.sh] indent_style = space indent_size = 4 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 97928141c0..e040715591 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,9 +19,9 @@ jobs: submodules: 'recursive' - name: ccache uses: hendrikmuhs/ccache-action@v1 - if: runner.os == 'Linux' + if: ${{ runner.os == 'Linux' || runner.os == 'macOS' }} with: - key: ${{ matrix.os }}-${{ matrix.enable_ui }} + key: ${{ matrix.os }}-${{ matrix.enable_ui }}-${{ matrix.build_type }} - uses: turtlesec-no/get-ninja@main - uses: ilammy/msvc-dev-cmd@v1 if: runner.os == 'Windows' diff --git a/.github/workflows/close_spam.yml b/.github/workflows/close_spam.yml new file mode 100644 index 0000000000..fe9f8810bc --- /dev/null +++ b/.github/workflows/close_spam.yml @@ -0,0 +1,13 @@ +name: Close Spam PR +on: + pull_request_target: + types: [opened, reopened] + paths: + - '.github/workflows/**' +jobs: + run: + runs-on: ubuntu-latest + steps: + - uses: superbrothers/close-pull-request@v3 + with: + comment: "We do not accept PRs to modify GitHub actions. Contact david@igara.com directly with patches for this." diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 0000000000..e7b538a949 --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,258 @@ +# Table of contents + +* [Platforms](#platforms) +* [Get the source code](#get-the-source-code) +* [Dependencies](#dependencies) + * [Windows dependencies](#windows-dependencies) + * [macOS dependencies](#macos-dependencies) + * [Linux dependencies](#linux-dependencies) +* [Compiling](#compiling) + * [Windows details](#windows-details) + * [MinGW](#mingw) + * [macOS details](#macos-details) + * [Issues with Retina displays](#issues-with-retina-displays) + * [Linux details](#linux-details) +* [Using shared third party libraries](#using-shared-third-party-libraries) + +# Platforms + +You should be able to compile Aseprite successfully on the following +platforms: + +* Windows 11 + [Visual Studio Community 2022 + Windows 10.0 SDK (the latest version available)](https://imgur.com/a/7zs51IT) (we don't support [MinGW](#mingw)) +* macOS 13.0.1 Ventura + Xcode 14.1 + macOS 11.3 SDK (older version might work) +* Linux Ubuntu Bionic 18.04 + clang 10.0 + +# Get the source code + +You can get the source code downloading a `Aseprite-v1.x-Source.zip` +file from the latest Aseprite release (*in that case please follow the +compilation instructions inside the `.zip` file*): + +https://github.com/aseprite/aseprite/releases + +Or you can clone the repository and all its submodules using the +following command: + + git clone --recursive https://github.com/aseprite/aseprite.git + +To update an existing clone you can use the following commands: + + cd aseprite + git pull + git submodule update --init --recursive + +You can use [Git for Windows](https://git-for-windows.github.io/) to +clone the repository on Windows. + +# Dependencies + +To compile Aseprite you will need: + +* The latest version of [CMake](https://cmake.org) (3.16 or greater) +* [Ninja](https://ninja-build.org) build system +* And a compiled version of the `aseprite-m102` branch of + the [Skia library](https://github.com/aseprite/skia#readme). + There are [pre-built packages available](https://github.com/aseprite/skia/releases). + You can get some extra information in + the [*laf* dependencies](https://github.com/aseprite/laf#dependencies) page. + +## Windows dependencies + +* Windows 10 (we don't support cross-compiling) +* [Visual Studio Community 2022](https://visualstudio.microsoft.com/downloads/) (we don't support [MinGW](#mingw)) +* The [Desktop development with C++ item + Windows 10.0.18362.0 SDK](https://imgur.com/a/7zs51IT) + from the Visual Studio installer + +## macOS dependencies + +On macOS you will need macOS 11.3 SDK and Xcode 13.1 (older versions +might work). + +## Linux dependencies + +You will need the following dependencies on Ubuntu/Debian: + + sudo apt-get install -y g++ clang libc++-dev libc++abi-dev cmake ninja-build libx11-dev libxcursor-dev libxi-dev libgl1-mesa-dev libfontconfig1-dev + +Or use clang-10 packages (or newer) in case that clang in your distribution is older than clang 10.0: + + sudo apt-get install -y clang-10 libc++-10-dev libc++abi-10-dev + +On Fedora: + + sudo dnf install -y gcc-c++ clang libcxx-devel cmake ninja-build libX11-devel libXcursor-devel libXi-devel mesa-libGL-devel fontconfig-devel + +On Arch: + + sudo pacman -S gcc clang libc++ cmake ninja libx11 libxcursor mesa-libgl fontconfig + +On SUSE: + + sudo zypper install gcc-c++ clang libc++-devel libc++abi-devel cmake ninja libX11-devel libXcursor-devel libXi-devel Mesa-libGL-devel fontconfig-devel + +# Compiling + +1. [Get Aseprite code](#get-the-source-code), put it in a folder like + `C:\aseprite`, and create a `build` directory inside to leave all + the files that are result of the compilation process (`.exe`, + `.lib`, `.obj`, `.a`, `.o`, etc). + + cd C:\aseprite + mkdir build + + In this way, if you want to start with a fresh copy of Aseprite + source code, you can remove the `build` directory and start again. + +2. Enter in the new directory and execute `cmake`: + + cd C:\aseprite\build + cmake -G Ninja -DLAF_BACKEND=skia .. + + Here `cmake` needs different options depending on your + platform. You must check the details for + [Windows](#windows-details), [macOS](#macos-details), and + [Linux](#linux-details). Some `cmake` options can be modified using tools like + [`ccmake`](https://cmake.org/cmake/help/latest/manual/ccmake.1.html) + or [`cmake-gui`](https://cmake.org/cmake/help/latest/manual/cmake-gui.1.html). + +3. After you have executed and configured `cmake`, you have to compile + the project: + + cd C:\aseprite\build + ninja aseprite + +4. When `ninja` finishes the compilation, you can find the executable + inside `C:\aseprite\build\bin\aseprite.exe`. + +## Windows details + +Open a command prompt window (`cmd.exe`) and call: + + call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat" -arch=x64 + +The command above is required while using the 64-bit version of skia. When compiling with the 32-bit version, it is possible to open a [developer command prompt](https://docs.microsoft.com/en-us/dotnet/framework/tools/developer-command-prompt-for-vs) instead. + +And then + + cd aseprite + mkdir build + cd build + cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLAF_BACKEND=skia -DSKIA_DIR=C:\deps\skia -DSKIA_LIBRARY_DIR=C:\deps\skia\out\Release-x64 -DSKIA_LIBRARY=C:\deps\skia\out\Release-x64\skia.lib -G Ninja .. + ninja aseprite + +In this case, `C:\deps\skia` is the directory where Skia was compiled +or uncompressed. + +### MinGW + +We don't support MinGW compiler and it might bring some problems into +the compilation process. If you see that the detected C++ compiler by +cmake is `C:\MinGW\bin\c++.exe` or something similar, you have to get +rid of MinGW path (`C:\MinGW\bin`) from the `PATH` environment +variable and run cmake again from scratch, so the Visual Studio C++ +compiler (`cl.exe`) is used instead. + +You can define the `CMAKE_IGNORE_PATH` variable when running cmake for +the first time in case that you don't know or don't want to modify the +`PATH` variable, e.g.: + + cmake -DCMAKE_IGNORE_PATH=C:\MinGW\bin ... + +More information in [issue #2449](https://github.com/aseprite/aseprite/issues/2449) + +## macOS details + +Run `cmake` with the following parameters and then `ninja`: + + cd aseprite + mkdir build + cd build + cmake \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_OSX_ARCHITECTURES=x86_64 \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 \ + -DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk \ + -DLAF_BACKEND=skia \ + -DSKIA_DIR=$HOME/deps/skia \ + -DSKIA_LIBRARY_DIR=$HOME/deps/skia/out/Release-x64 \ + -DSKIA_LIBRARY=$HOME/deps/skia/out/Release-x64/libskia.a \ + -G Ninja \ + .. + ninja aseprite + +In this case, `$HOME/deps/skia` is the directory where Skia was +compiled or downloaded. Make sure that `CMAKE_OSX_SYSROOT` is +pointing to the correct SDK directory (in this case +`/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk`), +but it could be different in your Mac. + +### Apple Silicon + +If you running macOS on an ARM64/AArch64/Apple Silicon Mac (e.g. M1), +you can compile a native ARM64 version of Aseprite following similar +steps as above but when we call `cmake`, we have some differences: + + cd aseprite + mkdir build + cd build + cmake \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_OSX_ARCHITECTURES=arm64 \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 \ + -DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk \ + -DLAF_BACKEND=skia \ + -DSKIA_DIR=$HOME/deps/skia \ + -DSKIA_LIBRARY_DIR=$HOME/deps/skia/out/Release-arm64 \ + -DSKIA_LIBRARY=$HOME/deps/skia/out/Release-arm64/libskia.a \ + -DPNG_ARM_NEON:STRING=on \ + -G Ninja \ + .. + ninja aseprite + +### Issues with Retina displays + +If you have a Retina display, check the following issue: + + https://github.com/aseprite/aseprite/issues/589 + +## Linux details + +You need to use clang and libc++ to compile Aseprite: + + cd aseprite + mkdir build + cd build + export CC=clang + export CXX=clang++ + cmake \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_CXX_FLAGS:STRING=-stdlib=libc++ \ + -DCMAKE_EXE_LINKER_FLAGS:STRING=-stdlib=libc++ \ + -DLAF_BACKEND=skia \ + -DSKIA_DIR=$HOME/deps/skia \ + -DSKIA_LIBRARY_DIR=$HOME/deps/skia/out/Release-x64 \ + -DSKIA_LIBRARY=$HOME/deps/skia/out/Release-x64/libskia.a \ + -G Ninja \ + .. + ninja aseprite + +In this case, `$HOME/deps/skia` is the directory where Skia was +compiled or uncompressed. + +### GCC compiler + +In case that you are using the pre-compiled Skia version, you must use +the clang compiler and libc++ to compile Aseprite. Only if you compile +Skia with GCC, you will be able to compile Aseprite with GCC, and this +is not recommended as you will have a performance penalty doing so. + +# Using shared third party libraries + +If you don't want to use the embedded code of third party libraries +(i.e. to use your installed versions), you can disable static linking +configuring each `USE_SHARED_` option. + +After running `cmake -G`, you can edit `build/CMakeCache.txt` file, +and enable the `USE_SHARED_` flag (set its value to `ON`) of the +library that you want to be linked dynamically. diff --git a/data/extensions/aseprite-theme/dark/sheet.png b/data/extensions/aseprite-theme/dark/sheet.png index 26907dd686066aea8ff95050b084bedba92be99e..cba0df3fa8d3038c27c2affc77010d850dcf25c2 100644 GIT binary patch delta 16254 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 F{~t4q-JAdb delta 16235 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 diff --git a/data/extensions/aseprite-theme/dark/theme.xml b/data/extensions/aseprite-theme/dark/theme.xml index a01425cdde..bc91481e1f 100644 --- a/data/extensions/aseprite-theme/dark/theme.xml +++ b/data/extensions/aseprite-theme/dark/theme.xml @@ -416,6 +416,7 @@ + diff --git a/data/extensions/aseprite-theme/sheet.png b/data/extensions/aseprite-theme/sheet.png index ff9712253fcb3804a0a20329b55a9f61ccbe2155..5354fd1a310618cbc2b31949bd49ed3553b5b794 100644 GIT binary patch delta 15744 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 + diff --git a/data/gui.xml b/data/gui.xml index ac89a36855..b4afc7a922 100644 --- a/data/gui.xml +++ b/data/gui.xml @@ -227,9 +227,15 @@ + + + + + + diff --git a/data/pref.xml b/data/pref.xml index 7f70beb2a4..7c7d223a4e 100644 --- a/data/pref.xml +++ b/data/pref.xml @@ -201,7 +201,7 @@