Skip to content

anotherTestTitle

Latest
Compare
Choose a tag to compare
@mohamedAdhamc mohamedAdhamc released this 04 Nov 17:25
· 43 commits to master since this release

✨ New Features

  • Added ability to set colors for a dark theme for curves (synfig#3346)

  • Add WebM video format to ffmpeg codecs list (synfig#3330)

  • Add Magick++ as possible importer too (synfig#3323)

  • Add Magick++ as possible importer too

  • Add missing scroll bar to Paste Layer dialog (synfig#3310)

  • Allow to change resource filepath in Canvas Dependencies dialog (synfig#3105)

  • Support synfig files as external resources on Canvas Dependencies

  • Allow to change a resource filepath from Dialog CanvasDependencies

  • (Canvas dependencies Related) Shows if a file does not exist

  • Layers and parameters trees can now be styled with even/odd rows (synfig#3242)

  • Added presets to canvas resize window (synfig#3213)

  • Add Layers, Parameters and Timetrack treeviews styles for even/odd rows (synfig#3245)

  • Add "invert" parameter to ChromaKey layer (synfig#3240)

  • Workaround to allow to alternate even/odd row colors for Timetrack (synfig#3231)

  • Widget Timetrack now can have its own color for selected row (synfig#3232)

  • Add CSS classes and id to widgets/panels to allow visual customization (synfig#3230)

  • Layer Motion Blur now can create an non blurred trail (synfig#3173)

  • Added path and button to open plugin folder in Preferences window (synfig#3162)

  • Double clicking guides opens edit dialog (synfig#3152)

  • Plugins can have simple dialog and receive current time and selected layer xpath (synfig#2996)

  • Always show "Add Waypoint" menu item for animatable parameters (synfig#3006)

  • Added the ability to rotate guides in the canvas (synfig#2777)

  • Add handles to Bevel layer parameters (synfig#3044)

  • New Chroma Key layer (synfig#2553)

  • Add Desaturate parameter to ChromaKey Layer

  • Add SuperSample parameters to ChromaKey Layer

  • Add new Chroma Key layer

  • Cleaner cli render progress output (synfig#3024)

  • Added ability to choose render engine from command line (synfig#2970)

  • Add a CLI flag(--set-repeats) for rendering the same target multiple times (synfig#3018)

  • Simplified canvas resize (synfig#1895)

  • Added hotkey for duplicate layer button (synfig#2895)

  • Added missing icons and more (synfig#2955)

  • Include new icons in iconcontroller.cpp and activate them

  • Create an unique icon for the Sound panel

  • New ghost group icon

  • New free time icon

  • New skeleton deformation icon

  • New filter group icon

  • Added support for Ctr+<num> hotkey to change animation tabs (synfig#2731)

  • Eyedropper tool now takes fill color instead of outline color by default (synfig#2908)

  • New and updated icons for "width interpolation" (synfig#2882)

  • Add Show Canvas External Dependencies dialog (synfig#2472)

  • (Studio Related) Added buttons to change interpolation for selected waypoints (synfig#2615)

  • Added support for scrolling through text in text paragraph dialog (synfig#2810)

  • Reduced displayed floating point precision (synfig#2809)

  • Ico format added to mod_imagemagick list of exported formats (synfig#2820)

  • Added ability to show/hide rulers (synfig#2634)

  • Added support for SVG image sequence with lst files (synfig#2795)

  • Added support for Ctr+Enter to complete text input in Text tool dialog (synfig#2689)

  • Reproducible build (synfig#2613)

🐞 Bug Fixes

  • Regression of disc blur

  • Build on OSX 10.9 (synfig#3353)

  • (MotionBlur Related) Undefined behavior when subsample range is 0 (synfig#3347)

  • Importing via magick++ for version >= 7.0.1 (synfig#3332)

  • Undo didn't work properly after deleting last guide line (synfig#3304)

  • Adjust minimum panel size (synfig#3296)

  • Trying to fix support to Magick++ 7

  • Add fill-color instead of outline-color to palette (synfig#3314)

  • Guide lines ignored on loading from old files (synfig#3303)

  • Synfig::OS::RunPipeWin32::is_open() return on fail (synfig#3298)

  • OS::RunPipeWin32 return for is_open() on fail

  • Properly show plural strings in CanvasDependencies dialog

  • No need to show "Icon" header text to Layers Panel (synfig#3244)

  • Mingw cross-build (synfig#3291)

  • Use u8_str() instead of c_str() for filesystem::Path (synfig#3287)

  • Mouse clicks while dragging ducks prevent DRAG from resetting (synfig#3268)

  • Dropped image file doesn't load (broken conversion URI to file path on Win32) (synfig#3280)

  • Memory leak when the load default palette button is repeatedly pressed (synfig#2633)

  • Store a more precise distance value on settings file (synfig#3278)

  • Prevent accessing invalid index while parsing Distance string (synfig#3277)

  • Units in Tool Options panel didn't follow app settings (regression) (synfig#3276)

  • ListImporter was not able to fetch the right files on synfig CLI (synfig#3275)

  • Memory leak on Layer_Freetype (synfig#3269)

  • Prevent cache a null FT_Face

  • (Layer_Freetype Related) Font cache caused memory leak and 'duplicate'

  • Missing OS namespace for MSVC compiler code (synfig#3253)

  • Build on Debian 9 (synfig#3169)

  • Unable to open file paths longer than 23 characters on Windows (synfig#3265)

  • Recent file list is reversing every time Synfig Studio launches (synfig#3256)

  • Restore the tools hotkeys (synfig#3262)

  • Update Solid Color layer name in Lottie exporter (synfig#3252)

  • Restore icons for Tools menu (synfig#3248)

  • Column 'name' of Layers panel should be the largest one (synfig#3243)

  • File ETL/clock was moved to synfig-core (synfig#3228)

  • Drag and drop file into CanvasView to import don't handle UTF-8

  • Issues when importing with absolute paths from different root path (synfig#3214)

  • Widget_Filename didn't resolve correct filepath with absolute files

  • Issues with importing with absolute paths from different root path

  • (Windows Related) Plugins fail to execute for files with non-latin characters (synfig#3220)

  • Fixed macOS Info.plist file (synfig#3223)

  • Scale value of transformation on Parameters Panel is dimensionless (synfig#3208)

  • Preview window not showing when there is a Layer_Sound (synfig#3211)

  • Revert Custom Workspaces Editor button labels to GTK ones (synfig#3175)

  • Not (or bad) translatable strings in Target_Scanline

  • Avoid parser error of focus point on loading malformed synfig file (synfig#3206)

  • Selecting a handle while the Graphs window tooltip is open crashes the GUI (synfig#3207)

  • New MotionBLur subsampling None used wrong blend method (synfig#3201)

  • Toolbox isn't updated when switching document tabs (synfig#3170)

  • Dock_Toolbox does not update selected tool when switching open docs

  • (Plugin Related) Requesting current_time invalidates JSON data (synfig#3194)

  • Uninitialized value in ValueNode_DynamicList::ListEntry::amount_at_time() (synfig#3081)

  • Timetrack toolbar disappears when closing a file (synfig#3188)

  • Missing cstring header in png_trgt (synfig#3171)

  • (Plugins Related) Crash when selected layers are optional and there is none (synfig#3178)

  • Current time widget color in dark theme (synfig#3163)

  • Wrong Copy and Cut icon names (synfig#3166)

  • Filesystem::Path::relative_to() didn't work for empty paths (synfig#3135)

  • Filesystem::Path::relative_to() didn't work for empty paths

  • Preferences dialog should list only themes with index.theme file (synfig#3140)

  • Build on Debian 9 (synfig#3164)

  • Fixed icons in Preferences dialog in Windows (synfig#3156)

  • Brush tool crashes synfig if no layer is selected in the dialog (synfig#3157)

  • Prevent memory leak on importing PNG files (synfig#3144)

  • Restore shortcuts for edit cut/copy/paste and app quit (synfig#3133)

  • Find the second closest guide no matter the guide list order (synfig#3090)

  • Filename was shown truncated in Render dialog (synfig#3129)

  • Tool tooltip didn't show the shortcut/hotkey (synfig#3127)

  • Properly report failure on pipe creation on POSIX systems (synfig#3045)

  • Make delete icon name independent of old Gtk (synfig#3120)

  • Restore Save All shortcut missing since synfig#3072 (synfig#3110)

  • Some icons didn't follow icon theme (synfig#3109)

  • Some icons in top toolbar don't follow icon theme

  • Some icons in Layers and History Panels don't follow icon theme

  • Canvas icon in Canvas Panel doesn't follow icon theme

  • Some Actions tool buttons don't follow icon theme

  • Toolbox icons don't follow icon theme

  • Avoid crash if icon theme does not provide type_bool_icon file (synfig#3107)

  • Button Open With History is enabled only for .sfg files (synfig#3101)

  • Allow string to be properly translated (synfig#3089)

  • Add missing items in future menubar and rename dynamic menu items

  • Toolbox panel wasn't updated on switching tools via shortcuts (synfig#3067)

  • Update Tool tip when user changes its shortcut at runtime (synfig#3066)

  • Width handles must be visible with Skeleton layer (synfig#3061)

  • Fix dependencies script for ALT Linux (synfig#3056)

  • Crash with a bline containing only 2 points that are too close (synfig#2855)

  • (Path Related) POSIX OSes should support path \host too

  • (Path Related) On MS Windows, drives may only have one single letter

  • (Path Related) Filename offset when path has root name but no root dir

  • Pasting of external exported valuenodes (synfig#2086)

  • Crash when clicking on rows of "Library Panel" (synfig#3046)

  • Don't try to close stderr if using SmartFILE

  • Possible invalid memory access on replacing valuenodes (synfig#3050)

  • (Canvas-dependencies Related) Properly identify the file to avoid clash (synfig#3048)

  • Test not working on Windows

  • Layerduplicate test

  • MacOS clang build

  • A crash on program exit if bones were used (synfig#3037)

  • Added a missing init_children_vocab() call in ValueNode constructors (synfig#3027)

  • Sigsegv when LANGUAGE/LANG environment variable is not set (synfig#3033)

  • Missing translation for plugin names in main menu (synfig#2998)

  • Inconsequential fixes regarding synfig::rendering::Tokens (synfig#3000)

  • Fix constness issue with synfig::ConstRef::as

  • Parent of task tokens was incorrectly set to the global parent

  • Tasklayer token was incorrectly named

  • Drawing tablet didn't work on Wayland (synfig#2991)

  • Crash occurs under Wayland when using tablet (synfig#2988)

  • Missing CanvasResize files in POTFILES.in (synfig#2992)

  • Build on Ubuntu 16.04 (synfig#2965)

  • Vectorizer not working when Switch layer uses Layer Depth, not Name (synfig#2981)

  • Preview dialog now shows the correct start and end times (synfig#2974)

  • Crash on moving a layer following a bline reference (synfig#2971)

  • Support FontConfig older than version 2.11.91 (synfig#2917)

  • Improve Skeleton Deformation icon when using dark themes

  • Apply the new Sound icon to the Sound panel

  • Change the filter icon for a switch button

  • Show/hide main window toolbar should affect both toolbars (synfig#2947)

  • Get_binary_path() for FreeBSD, DragonFlyBSD, NetBSD and OpenBSD (synfig#2950)

  • No context menu when right-clicking on waypoint (synfig#2877)

  • Typo in future menubar (synfig#2948)

  • Missing array element initialization in gaussian_blur_3x3()

  • Use format string instead of string concatenation (synfig#2938)

  • Allow to open external editor for tiff, ppm (& variations) and webp (synfig#2934)

  • Wrong Papagayo file extension in Canvas Dependencies dialog (synfig#2936)

  • (Ffmpeg Related) Logic for detection of image-only videos was inverted (synfig#2918)

  • Missing last frame for ffmpeg target (synfig#2912)

  • After exporting audio via ffmpeg, SoundProcessor wasn't stopped (synfig#2914)

  • (Ffmpeg Related) Do not try to export audio for gif or mng (synfig#2915)

  • Canvas dependencies dialog crashes with empty filenames or without extension (synfig#2904)

  • Don't list empty filenames on Canvas Dependencies dialog (synfig#2905)

  • (Lang Related) Spanish translation typo (synfig#2879)

  • Etl::generic_pen::put_block_clip doesn't clip

  • Added ImageMagick 7.1 library initialization (synfig#2876)

  • Fixes issue synfig#2857 when changing interpolation of Canvas parameter changes interpolation for other waypoints

  • Hide bone width handles when they are meaningless (synfig#2778)

  • Use correct abs() function for integer variable (synfig#2852)

  • Restore broken synfig::OS::RunPipe::scanf() on MS Windows

  • Add etl::affine_combo<double,float> and <float,float> specializations

  • Comparison of integer expressions of different signedness

  • Use runtime check of openGL availability, instead of compile-time (synfig#2835)

  • Broken opengl build (due to ETL_DIRECTORY_SEPARATOR) and typos (synfig#2834)

  • Replaced deprecated ETL_DIRECTORY_SEPARATOR

  • Prevent crash or hang when frame cannot be imported (synfig#2830)

  • Synfig CLI does not open file if path contains non-Latin characters (Windows) (synfig#2819)

  • "rule of two" : copy constructor and copy assignment operator (synfig#2823)

  • (Trgt_magickpp Related) The previous row pointer was always the current one

  • Pressing the cancel button still adds the text layer (synfig#2814)

  • (Msvc Related) Fixed debug build in MSVC (synfig#2812)

  • Params panel doesn't update after layer switch (synfig#2811)

  • Avoid rebuild ParamTreeStore when animating a parameter (synfig#2729)

  • Hit_check for gradient & paste_canvas layers with BEHIND and ONTO blends (synfig#2804)

  • Fixed issue with incorrect ffmpeg search on Windows (synfig#2797)

  • Check whether iterator is valid before dereferencing (synfig#2798)

  • Using invalid iterator in ValueNode_Bone (synfig#2793)

  • Right-clicking a layer on a just opened file shows empty menu (synfig#2781)

  • Interface background became white after clicking OK in Preferences dialog (synfig#2732)

  • Fixed broken synfig.dll debugging in MSVC build (synfig#2764)

  • Alpha channel always resets when changing color in HSV wheel (synfig#2690)

  • Null targets create method signature: missing TargetParam parameter

  • Fix cross-compilation with MinGW on Debian 11 (synfig#2772)

  • Fixed a bug when saving a file to a Windows drive root path and then reusing the file dialog (synfig#2762)

  • Fixed build when MLT library not found (synfig#2760)

  • Synfig studio was not saving synfigapp settings on quit (synfig#2751)

  • Setting filename parameter of Layer Sound corrupts file (synfig#2758)

  • Small memory leak with Mlt++ (synfig#2752)

  • Spline tool blocks hotkey presses (synfig#2748)

  • Missing menu in Synfig when path to plugins contains non-Latin symbols (Windows) (synfig#2652)

  • Parameter & Library Panels now draw discrete animated times as TimeTrack Panel do

  • Parameter & Library Panels now show ActivePoints as TimeTrack Panel do

  • Mod_libavcodec didn't compile with MinGW (synfig#2737)

  • (Mod_libavcodec Related) Fixed build with FFMPEG 5.0 (synfig#2734)

  • Synfig hangs when importing palette (synfig#2730)

  • Avoid object slicing in SpiralGradient

  • Indicate segments where points are disabled in Timetrack Panel (regression) (synfig#2719)

  • (FreeType Related) Duplicating Text Layer resets Font Family parameter (synfig#2728)

  • Layers parameter 'filename' does not accept backslash as directory separator (synfig#2727)

  • Loading Gimp palette does not hang anymore

  • Loading Synfig palette does not hang anymore

  • Synfig does not start if the OS username contains non-Latin characters (Windows) (synfig#2650)

  • (Angle Related) Proper operator overload

  • Don't allow to Connect to exported value node if it has wrong type (synfig#2694)

  • Synfig hanging after right-click on sub-sub-parameter (synfig#2693)

  • Wrong color in HSV wheel when color was changed with paint bucket (synfig#2679)

  • (Bone-tool Related) New bone position when active bone is invalid (synfig#2673)

  • No context menu shown for Transformation parameter of Group Layer (synfig#2674)

📚 Documentation

  • Add to App::dialog_export_file()

  • Added docs to synfig/blur/gaussian.h and synfig/blur/boxblur.h

  • Add some docs to etl::generic_pen and etl::alpha_pen

  • Add some documentation to synfig::surface

  • Add documentation comments to etl::bezier and etl::hermite

💎 Styles

  • Use override rather simple virtual

  • Remove commented-out and unused code

  • Cleanup #include in bevel layer

  • Use of eof() and override for filesystem (synfig#3381)

  • Prefer explicit C++ eof() than C EOF

  • Explicitly tag as override streambuf methods

  • Prefer nullptr rather 0

  • Indentation inconsistencies in state_circle.cpp (synfig#3183)

  • Prefer override rather virtual, spaces surrounding const (synfig#3130)

  • If brackets in some target start_frame methods

  • Prefer false rather 0

  • Better variable name

  • (Reference_counter Related) Brackets and *& position, prefer nullptr

  • Some indentation inconsistencies in app.cpp (synfig#2946)

  • Prefer nullptr rather 0

  • Reduce scope of iterator var in for loops

  • Fix synfig/bezier.h header docs and guard name

  • Remove some tabs used for alignment

  • Typo and indentation

  • (Angle Related) Change comment style

♻️ Code Refactoring

  • Clean up Bevel layer (synfig#3394)

  • Simplify sub_renddesc computation

  • (Bevel Related) Disc uses same size as FastGaussian

  • Pw means pixel width not pixel per unit

  • Avoid recomputation of coords in bevel layer

  • (Blur Related) Use halfsizex/y wherever we can

  • (Blur Related) Use pw,ph wherever we can

  • Use synfig::clamp()

  • Use std::vector instead of direct memory allocation

  • Avoid switch-case fallthrough

  • Remove commented-out code since 2005

  • Make surface[_etl]::blit_to() const (synfig#3369)

  • Remove broken (and unused) symlink (synfig#3365)

  • Port CurveWarp to Cobra renderer engine (synfig#3329)

  • Remove unused variable (synfig#3322)

  • Reduce scope of two variables (synfig#3321)

  • Port layer to Cobra renderer: Metaballs (synfig#3305)

  • Create close_and_invalidate_handle to OS::RunPipeWin32

  • Avoid lambda function for signal slot

  • Drop SIF file in Toolbox now uses filesystem::Path (synfig#3284)

  • Remove unused #include (synfig#3285)

  • Remove unused #include segment.h (synfig#3281)

  • Prefer synfig::filesystem::Path rather than synfig::String or std::string (synfig#3273)

  • FileSystemTemporary::FileInfo uses filesystem::Path

  • FileSystemTemporary::open_temporary() uses filesystem::Path

  • Scan_temporary_directory() uses filesystem::Path

  • FileSystemTemporary constructor uses filesystem::Path

  • Generate_system_temporary_filename() uses filesystem::Path

  • Get_temporary_filename_base() uses filesystem::Path

  • Get_temporary_directory() uses filesystem::Path

  • FileSystemTemporary::temporary_directory uses filesystem::Path

  • Get_system_temporary_directory() uses filesystem::Path

  • Renderer::DebugOptions and log uses filesystem::Path

  • DebugSurface::save_to_file() uses filesystem::Path

  • Generate_indexed_temporary_filename() uses filesystem::Path

  • Avoid unneeded #include in synfigapp/instance.h

  • (Layer_Freetype Related) Join both cache into one single cache class

  • (Layer_Freetype Related) Simplify font cache

  • (Layer_Freetype Related) Split new_face() implementation code

  • Cleanup an old debug line (synfig#3266)

  • Icon controller now uses synfig::filesystem::Path (synfig#3254)

  • Create load_interface() on ResourceHelper (synfig#3258)

  • App::brushes_path now uses synfig::filesystem::Path (synfig#3250)

  • Remove unneeded macro stratof (synfig#3257)

  • Replace unsafe sprintf() with snprintf() (synfig#3263)

  • OS::launch_file_async() now uses synfig::filesystem::Path (synfig#3249)

  • Dialogs for document opening now use filesystem::Path (synfig#3246)

  • Delete commented-out method declaration since 2005

  • App::get_temporary_directory() now uses filesystem::Path

  • App::open_from_temporary_filesystem() now uses filesystem::Path

  • App::dialog_open_folder() now uses filesystem::Path

  • App::open() now uses filesystem::Path

  • App::dialog_open() now uses filesystem::Path

  • Filesystem::Path on App::open_from_plugin() and dialog_open_file_with_history_button()

  • Dialogs for saving and exporting now uses filesystem::Path (synfig#3234)

  • App::dialog_save_file_render() now uses filesystem::Path

  • App::dialog_export_file() now uses synfig::filesystem::Path

  • App::dialog_save_file() now uses synfig::filesystem::Path

  • Studio::Instance::dialog_save_as() now uses filesystem::Path

  • Prefer RELEASE_VERSION_CURRENT rather RELEASE_VERSION_END-1

  • Use map instead of chained if statements

  • Synfig::OS::get_binary_path() doesn't require a fallback anymore (synfig#3236)

  • Avoid compiler warning: missing parentheses around assignment (synfig#3238)

  • Remove unused #include (somehow missed in synfig#3141) (synfig#3235)

  • Remove compiler warning about missing override keyword (synfig#3237)

  • Clean etl::handle and alike (synfig#3233)

  • Don't expose internals front_ and back_ of rshared_object

  • It doesn't need anymore to return bool in shared_object::ref()

  • Remove unnecessary macro def ETL_SELF_DELETING_SHARED_OBJECT

  • Add noexcept to some handle, rhandle and loose_handle methods

  • Rename count() to use_count() for shared_object, handle & alike

  • Handle, rhandle and loose_handle now use reset() not detach()

  • Prefer explicit operator bool() rather implicit and oper.!()

  • Remove unused methods on etl::loose_handle

  • Remove commented-out (and some debug) code of ETL/handle

  • Prefer synfig::filesystem::Path rather std::string (synfig#3229)

  • App::get_config_file now uses filesystem::Path

  • Synfigapp::Main::get_user_app_directory now uses filesystem::Path

  • App::open_recent() now uses synfig::filesystem::Path

  • App::dialog_open_file() now uses synfig::filesystem::Path

  • CanvasInterface::import_sequence() now uses filesystem::Path

  • CanvasInterface::import() now uses synfig::filesystem::Path

  • App::dialog_open_image now uses synfig::filesystem::Path

  • Widget_SoundWave now uses synfig::filesystem::Path

  • Use synfig:filesystem::Path for sketch, palette & others (synfig#3219)

  • Synfigapp::Settings now uses synfig::filesystem::Path

  • Studio::WorkspaceHandler now uses synfig::filesystem::Path

  • Sketch now uses synfig::filesystem::Path

  • Palette now uses synfig::filesystem::Path

  • Prefer range-based for loop and avoid direct etl::handle (synfig#3227)

  • Avoid direct use of etl::handle (synfig#3226)

  • Prefer Target::Handle instead of etl::handle

  • Prefer LinkableValueNode::Handle instead of etl::handle

  • Prefer Layer_PasteCanvas::Handle instead of etl::handle

  • Prefer Duck::Handle instead of etl::handle

  • Create and use Bezier::Handle instead of etl::handle

  • Prefer Duck::Handle instead of etl::handle

  • Prefer Layer_Bitmap::Handle instead of etl::handle

  • Prefer explicit use of etl namespace

  • Prefer explicit etl namespace for CanvasInterface and Instance

  • Remove not-needed 'using namespace etl' (synfig#3221)

  • Make Filesystem::filename a filesystem::Path object (synfig#3209)

  • Increase the pixels per frame without render split in Target_Scanline (synfig#3205)

  • Reduce scope of some variables and remove unused one

  • (Target_Scanline Related) Increase pixel rendering limit to 4k UHD

  • Make maximum pixel number per frame configurable

  • Make use of const for constant stuff

  • Avoid build warning due to unused parameter (synfig#3202)

  • Port more layers to Cobra renderer: some Gradient layers (synfig#2562)

  • Port SpiralGradient to Cobra render engine

  • Port ConicalGradient to Cobra render engine

  • Port RadialGradient to Cobra render engine

  • Port LinearGradient to Cobra render engine

  • CheckerBoard render now uses TaskPaintPixelSW

  • Add new software-only pseudo rendering task for easier Cobra ports

  • Remove the now unneeded 'mutex' variable in Dock_Toolbox

  • Avoid double call of change_state_()

  • Remove old macOS specific code (synfig#3192)

  • Avoid g++ 13 compiler warning (synfig#3193)

  • Remove unneeded special XML encoding for subtract valuenode (synfig#3141)

  • Remove unnecessary const in internal typedef (synfig#3168)

  • Use pseudo iterator for filesystem::Path::relative_to()

  • Replaced Gtk::StockID in tool labels with custom implementation (synfig#3134)

  • Sketch filename now uses filesystem::Path (synfig#3138)

  • Add missing fallthrough mark in other switch cases (synfig#3151)

  • Add fallthrough mark in switch cases to avoid unneeded warning (synfig#3143)

  • Make argument name consistent in method declaration and definition (synfig#3122)

  • Remove unused actions (synfig#3132)

  • Remove unneeded variable in state_normal.cpp (synfig#3123)

  • Prefer icon names rather deprecated Gtk::StockID (synfig#3125)

  • More icon names instead of deprecated Gtk::StockID

  • Reduce use of Gtk::StockID by using icon names

  • Use equivalent icon names for gtk-add, gtk-remove & gtk-close

  • Remove unused cursor methods in studio::IconController class (synfig#3126)

  • Brush size increase/decrease buttons now use theme icons (synfig#3091)

  • (Time Related) Change epsilon_() method to constant; remove c_str() (synfig#3079)

  • Remove unused ParamDesc constructor argument (synfig#3092)

  • Delete old debug envvars that aren't needed anymore (synfig#3108)

  • Remove unused macro (synfig#3111)

  • Remove unneeded target_names variable from RenderSettings dialog (synfig#3096)

  • Minor cleanup in synfig-core/tool/main.cpp (synfig#3102)

  • Use a common function as base to App::dialog_open_*() and simplify methods (synfig#3103)

  • Pass preference string as const reference, not by value

  • Use a common function as base to App::dialog_save_*() methods

  • Use filesystem::absolute()

  • Import dialog now uses common dialog base

  • App::dialog_open_file_with_history_button() uses create_dialog_open_file()

  • Use a common function as base to App::dialog_open_*() methods

  • Create filesystem::current_path() and filesystem::absolute() (synfig#3100)

  • Prefer initialization list on constructor (synfig#3099)

  • Avoid malloc() (synfig#3098)

  • Synfig-cli job now uses filesystem::Path (synfig#3095)

  • Cleanup Target::BookEntry (synfig#3093)

  • Rename field filename in Target::BookEntry to file_extension

  • Remove unused field target_param in Target::BookEntry

  • Minor cleanup in state Lasso and Draw (synfig#3088)

  • Render settings dialog now uses synfig::filesystem::Path (synfig#3094)

  • Use initialization list instead of std::make_pair

  • Render dialog uses synfig::filesystem::Path

  • Update studio_menubar.xml (synfig#3075)

  • Map document-related action to doc in the future menubar

  • Map window-related action to MainWindow in the future menubar

  • Prefer initialization list rather constructor body (synfig#3086)

  • Throw exception itself, not a copy (synfig#3087)

  • Prefer prefix ++ operators for non-primitive types (part 2) (synfig#3085)

  • Prefer prefix ++ operators for non-primitive types (synfig#3077)

  • Add missing const to Duckmatic::add_to_ducks() parameter (synfig#3082)

  • List document actions in a std::vector to better readability (synfig#3076)

  • Add missing const on some synfig::ParamDesc methods (synfig#3080)

  • Prefer Layer_*::Handle and alike rather etl::handle (synfig#3041)

  • Move save_all() (documents) from CanvasView to MainWindow (synfig#3072)

  • Prefer CanvasView::Handle & others instead of etl::handle (synfig#3073)

  • Prefer CanvasView::Handle instead of etl::handle

  • Prefer CanvasView::LooseHandle instead of etl::loose_handle

  • Remove unused synfig::rendering::Resource (synfig#3074)

  • Rename method to get_link_description(...) to avoid ambiguity (synfig#3060)

  • Avoid mutable vars in Layer (synfig#3059)

  • Remove unused #include ETL/stringf

  • Move all ETL/stringf functions to synfig::filesystem::Path

  • Move synfig::get_binary_path to synfig::OS and return Path

  • Remove ETL POPEN_BINARY_WRITE_TYPE

  • Reduce to #include synfig/filesystem_path.h where possible

  • Add Path type to synfigapp::Settings methods

  • Prefer synfig::filesystem::Path::is_separator rather etl:: one

  • (Path Related) Add methods from_native() and add_suffix()

  • (Path Related) Add convenient methods: relative_to() and cleanup()

  • (Path Related) Add concat methods

  • (Path Related) Add method lexically_relative()

  • (Path Related) Add append() and modifier methods

  • (Path Related) Add lexically_normal() method

  • (Path Related) Add comparison methods to Path

  • (Path Related) Add remaining decomposition and query methods

  • Move synfig::filesystem::Path class to its own source files

  • Removed unused members of CanvasView (synfig#3052)

  • Code cleanup in Targets (synfig#3043)

  • Add error message to jpeg, png and ppm targets on open error

  • Add support to stdout to bmp and jpeg targets

  • Add a static method "open_file" to SmartFILE for convenience

  • Make more use of SmartFILE instead of g_fopen

  • Avoid direct allocation; prefer std::vector rather array

  • Remove unused method in CanvasFileNaming (synfig#3047)

  • Remove unused #include (synfig#3040)

  • Joblistprocessor code split into smaller functions (synfig#3032)

  • Made new functions static

  • Fixed warnings

  • Extracted set_target_engine_and_threads(...)

  • Extracted set_canvas_quality_and_alpha_mode(...)

  • Extracted create_target(...)

  • Extracted check_permissions(...)

  • Extracted create_output_filename(...)

  • Extracted set_default_target(...)

  • Extracted try_to_determine_target_from_outfile(...)

  • Extracted render_job(...)

  • Extracted save_canvas_to_file(...)

  • Extracted print_job_info(...)

  • Simplified target_scanline.cpp (synfig#3025)

  • Create function for duplicated alpha processing code

  • Remove useless return statement at the end of a function (synfig#3020)

  • Remove deprecated Widget::override_color() (synfig#3015)

  • Use RadioToolButton instead of ToggleToolButton for tools dock (synfig#3012)

  • Replace deprecated Gtk::HBox with Gtk::Box (synfig#3002)

  • Prefer ::Handle rather etl::handle (synfig#2990)

  • Prioritize use of Layer::Handle/ConstHandle/LooseHandle

  • Prioritize use of ValueNode::Handle/ConstHandle/LooseHandle

  • (Studio Related) Prioritize use of Canvas::Handle/ConstHandle/LooseHandle

  • (Core Related) Prioritize usage of Canvas::Handle/ConstHandle/LooseHandle

  • Change VectorizerSettings dialog to use Glade and Builder (synfig#2080)

  • (Valuenodes Related) Remove some unused #include (synfig#2989)

  • (Instance Related) Cleanup in add_special_layer_actions_to_group (synfig#2983)

  • (Iconcontroller Related) List icons in std::vector to better readability (synfig#2982)

  • Cleanup module.cpp (synfig#2960)

  • Replaced deprecated hvseparator include by separator (synfig#2984)

  • Use camelcase for MotionBlur and SolidColor layer names (synfig#2978)

  • Micro cleanup in iconcontroller (synfig#2979)

  • Create methods strtolower() and strtoupper() to change cases (synfig#2977)

  • Rename CanvasView::toggle_show_toolbar() to set_show_toolbars() (synfig#2975)

  • Remove unused #define POPEN_BINARY_READ_TYPE (synfig#2925)

  • Move etl::reference_counter to synfig namespace (synfig#2949)

  • Move etl::ReferenceCounter to synfig folder

  • Rename class to ReferenceCounter (CamelCase)

  • (Reference_counter Related) Add move constructor and assignment

  • No need to pass bool argument by const reference

  • Replaced deprecated signal_pressed() with signal_clicked() (synfig#2962)

  • Remove useless initialization in blur (synfig#2922)

  • Removed deprecated Gtk::VBox and get_vbox() (synfig#2967)

  • Remove commented-out methods since march 2005 (synfig#2956)

  • Added internal escape_underline() in MainWindow (synfig#2952)

  • Move workspace methods from App to MainWindow (synfig#2942)

  • Rename load_file_window_size() to load_recent_files() (synfig#2945)

  • Move etl::boxblur and etl::gaussian to synfig namespace

  • Move etl::boxblur and etl::gaussian to synfig/blur

  • Switched MainWindow to Gtk::ApplicationWindow (synfig#2935)

  • No need to change locale on saving accel map (synfig#2937)

  • Remove unneeded using namespace etl and Action (synfig#2923)

  • Removed unused #includes (synfig#2920)

  • Cleanup etl blur files (synfig#2910)

  • Remove commented-out code in gaussian

  • Remove unused #include in gaussian.h

  • Remove unused boxblur and gaussian methods

  • Move pen classes from ETL to synfig-core (synfig#2888)

  • (Pen Related) Add explicit to operator bool() methods

  • Move etl::generic_pen and etl::alpha_pen to synfig namespace

  • Move ETL/pen to synfig/pen.h

  • (UI Related) Rename Eyedrop Tool to Eyedropper Tool (synfig#2902)

  • Use some current C++-11 or gtkmm-3 methods (synfig#2903)

  • Avoid std::iterator_traits in ETL/gaussian (synfig#2889)

  • (NoiseDistort Related) Remove useless method, argument, intermediate var (synfig#2887)

  • Cleanup on ETL/pen (synfig#2881)

  • Remove unused etl::generic_pen_row_iterator::iterator_category

  • Simplify etl::generic_pen::operator->()

  • Uniform the alpha_value argument type: const reference, not value

  • Remove unused method in etl::alpha_pen

  • Makes data private in generic_pen_row_iterator<>

  • Minor cleanup in ETL box_blur (synfig#2873)

  • Removed unused Gtk::IconSIze (synfig#2878)

  • Remove some unused methods and add docs to synfig::surface (synfig#2871)

  • Remove surface<>::zero_pos_ property after flip_v() is removed

  • Remove some not-used methods in surface_etl.h

  • Move ETL/misc to synfig/misc.h (synfig#2874)

  • Remove unused class debugclass (synfig#2865)

  • Remove useless ValueNode_DIList::set/get_bline()

  • Remove unused alternative clamping functions (synfig#2845)

  • Remove some unused #include directives (synfig#2851)

  • Remove Accumulator type for etl::pen and etl::surface (synfig#2854)

  • Remove double typedefs to same type now accumulator is gone

  • Remove Accumulator type for etl::pen and etl::surface

  • Remove unused methods in blur.cpp (synfig#2848)

  • Move non-portable popen code to one place (synfig#2491)

  • On MS Windows, use Win32 API for pipes

  • ImageMagick importer now uses new synfig::OS::run_sync()

  • Move non-portable popen code to one place

  • Added vocab update for list valuenodes

  • Vocabulary initialization moved to init_children_vocab method

  • Add synfig::bezier converter to synfig::hermite (constructor)

  • Cleanup, add docs and merge ETL/hermite with ETL/bezier (synfig#2808)

  • Merge ETL/hermite into ETL/bezier

  • Remove unused and unimplemented method

  • Remove unused #include <ETL/bezier>

  • Remove unused #include <ETL/hermite>

  • Reduce scope of bezier internal macro constants

  • Removed code from bezier and hermite commented out from 2005

  • Replaced deprecated Gtk::Arrow with Gtk::Button with icon (synfig#2824)

  • Clean up Magick++ target a bit (synfig#2822)

  • (Trgt_magickpp Related) Check if it is rendering a GIF file

  • (Trgt_magickpp Related) No need to start loop if it is first frame

  • (Trgt_magickpp Related) Rename pointer variables

  • (Trgt_magickpp Related) Avoid direct allocation

  • Removed boost dependency (synfig#2792)

  • Simplify runge kutta method

  • Use runge kutta method as described in original paper

  • Remove boost dependency

  • Removed code from ImageMagick module commented out from 2005 (synfig#2783)

  • Prefer FileSystemNative rather GLib (synfig#2780)

  • Remove deprecated Gtk::StockID used by some Gtk::Image constructors (synfig#2776)

  • Create icons for splitting and merging spline tangents

  • Append "_icon" to set_fill_color and set_outline_color filenames

  • Remove deprecated Gtk::StockID used by some Gtk::Image constructors

  • Clean synfig::Target a bit (synfig#2775)

  • Prefer override rather virtual when overriding...

  • Remove unneeded headers

  • Minor cleanup in synfig::Keyframe

  • Removed unused Widget_CompSelect (synfig#2753)

  • Remove #include <ETL/stringf> where it is not needed

  • Replaced deprecated Gtk::StockID in Sets panel (synfig#2683)

  • Delete now unneeded etl_config.h; use etl_profile.h directly

  • Move ETL_DIRECTORY_SEPARATOR constant to stringf header

  • (Test Related) Synfig::Angle ported to our test_base.h

  • Remove unneeded #include <ETL/misc> directives (synfig#2713)

  • Make use of synfig::clamp instead of std::max(std::min()) (synfig#2714)

  • Replaced deprecated Gtk::StockID in ResolutionDial (synfig#2697)

  • Remove unused code supporting wrapped angles

  • Remove unused etl::angle::operator~

  • Remove unused macro HALF_PI

  • Remove commented out code in etl::angle

  • Replaced deprecated Gtk::StockID in Palette Editor (synfig#2685)

  • Remove ETL_DIRECTORY_SEPARATORS; use them directly (synfig#2706)

  • (Core Related) Rename ValueNode::is_descendant() to is_ancestor_of() (synfig#2702)

  • Use etl::is_separator() instead of directory separator chars (synfig#2704)

  • Use / as directory separator where a fixed folder name is used (synfig#2703)

  • Replaced deprecated Gtk::StockID (non-visual) (synfig#2668)

  • Remove unused header/class synfig::Protocol (synfig#2698)

  • Removed deprecated std::unary_function and std::binary_function classes (synfig#2696)

  • (ETL Related) Remove unused macros in ETL/etl_config.h

  • (Core Related) Prefer nullptr rather NULL -part 4

  • (Core Related) Prefer nullptr rather NULL -part 3

  • (Core Related) Prefer nullptr rather NULL -part 2

  • (Core Related) Prefer nullptr rather NULL -part 1

  • (Studio Related) Prefer nullptr rather than NULL or 0

  • (Etl Related) Prefer nullptr rather than NULL or 0

  • (Synfigapp Related) Prefer nullptr rather than NULL

  • Replaced deprecated Gtk::StockID in WidgetLink (synfig#2665)

  • Replaced deprecated Gtk::StockID in Widget Interpolation (synfig#2666)

  • Replaced deprecated Gtk::StockID in Filename widget (synfig#2682)

  • Replaced deprecated Gtk::StockID in Parameters panel (synfig#2670)

  • Replaced deprecated Gtk::StockID in Jack widget (synfig#2664)

  • Replaced deprecated Gtk::StockID in Layers panel (synfig#2669)

  • (Core Related) Cleaned up registration function (synfig#2622)

🚀 Performance Improvements

  • Minor optimization of Bevel layer (synfig#3384)

  • Avoid multiple surface allocation on Cross Blur

  • Avoid multiple surface allocation on Blur

  • (GUI Related) Don't render frame thumbnails if disabled (synfig#3356)

  • Avoid canvas introspection when DockInfo is not shown (synfig#3328)

  • Optimized Action_System so that the canvas only renders once during an action (synfig#3200)

  • Use reference, not copy, on range-based for loops (synfig#3147)

  • Don't iterate the whole Canvas if index is negative (synfig#2980)

  • Avoid repeated memory reallocation in gaussian_blur_3x3()

  • Avoid double computation (synfig#2849)

  • Only needs to check type when setting the bline value node

  • Avoid computing the same value twice

  • Improved performance by reducing memory copying when working with valuenodes (synfig#2831)

  • Improved performance by reducing memory copying when working with valuenodes

✔️ Tests

  • (Handle Related) Rename variable to differentiate from that of ancestor class

  • Add tests for etl::shared_object, etl::handle, etl::loose_handle

  • Use CamelCase style for internal test class names

  • Etl::handle now uses our test suite

  • Move etl::handle tests to synfig-core folder

  • Use preset variable of AutoTools to some directories (synfig#3068)

  • (Path Related) Add more tests

  • (Path Related) Add more basic tests

  • Marking_node_as_changed_changes_the_last_time_changed fails on AppVeyor (synfig#3053)

  • Add ReferenceCounter tests & add missing pen tests to CMake build

  • (Pen Related) Add some basic tests

  • Port pen tests to our test 'framework'

  • Remove unused function and empty tests in test/pen

  • Fix compilation warning in test/pen

  • Remove unneeded headers in test/pen

  • Fix synfig/benchmark test build (synfig#2890)

  • Create surface_etl tests

  • (Hermite Related) Add new basic tests

  • (Hermite Related) Use our test style

  • Missing keyframe test in CMake (synfig#2784)

  • Disabled failing test of synfig::Node class for now (synfig#2769)

  • Create tests for synfig::KeyframeList

  • Create tests for synfig/string_helper.h (synfig#2738)

  • Define ‘operator<<’ for operands std::string and std::nullptr_t (synfig#2742)

  • Move smach test from ETL to synfig-studio

  • (Etl Related) Remove unused methods for etl::angle (synfig#2705)

  • (Etl Related) Remove unused methods for etl::hermite (synfig#2707)

  • (Studio Related) As in synfig-core, separate test_base.h (synfig#2701)

📦 Builds

  • (Github Actions Related) Fix macOS build (synfig#3404)

  • Fix macos build (synfig#3396)

  • Unify cmake build shell scripts (synfig#3370)

  • Update script for building with cmake (synfig#3355)

  • Add cmake to linux install script (synfig#3338)

  • Fix typos on magickpp module (synfig#3333)

  • CMake sets wrong Synfig Studio/ETL versions (synfig#3315)

  • (Autotools Related) Suppress warnings from libxml++ (synfig#3290)

  • Fix make distcheck build (synfig#3069)

  • (Cmake Related) Enabled layerduplicate/smach tests

  • Patch for autoconf 2.72 h/t Frédéric Bérat (synfig#3011)

  • Change exported cmake targets and provide a way to find deps (synfig#2999)

  • (Autotools Related) Patch for autoconf 2.72 h/t Frédéric Bérat (synfig#2930)

  • (Appveyor Related) Added missing libpcre2 (synfig#2886)

  • (Autotools Related) Allow to compile release build with debug info (synfig#2838)

  • Updated dependencies for Debian 11 based distros (synfig#2837)

  • (Cmake Related) Fixed build when path contains non-Latin characters (MSYS2) (synfig#2821)

  • (Autotools Related) Fix MSYS2 build (synfig#2818)

  • (Vcpkg Related) cmake --install now also installs required dependencies (synfig#2816)

  • Use vcpkg to build synfig (synfig#2725)

  • Use vcpkg to build synfig

  • Remove nonexistent files listed in synfig-core/po/POTFILES.in (synfig#2794)

  • (Autotools Related) Include UI files created via PR synfig#2638 (synfig#2786)

  • Remove unused .cpp files (virtually empty)

  • (CMake Related) Moved synfig-core tests to bin/test folder (synfig#2746)

  • (Autotools Related) Removed Apple G5-specific flags (synfig#2745)

  • (Autotools Related) Fixed node test build (synfig#2744)

  • (CMake Related) Added synfig tests to CMake (synfig#2741)

  • (CMake Related) Enabled mod_libavcodec build in CMake (synfig#2736)

  • (CMake Related) Small refactoring and code cleanup (synfig#2684)

  • Added Jack audio support to CMake (synfig#2681)

  • Use CMake's PkgConfig imported targets (synfig#2676)

⚙️ Continuous Integrations

🔧 Chores