✨ 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 simplevirtual
-
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 chainedif
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) fromCanvasView
toMainWindow
(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
withGtk::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 byseparator
(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()
withsignal_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
toGtk::ApplicationWindow
(synfig#2935) -
No need to change locale on saving accel map (synfig#2937)
-
Remove unneeded
using namespace etl
andAction
(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
tooperator 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
rathervirtual
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
andstd::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
-
Build source tarballs on self-hosted CI runner (synfig#3395)
-
Add CI action for OSX packaging script (synfig#3368)
-
Caching logic changed (synfig#3319)
-
Bump github actions version (synfig#3318)
-
(Commitlint Related) Disabled rules for
subject-case
(synfig#3317) -
(Github Actions Related) Bump macOS version (synfig#3259)
-
Added backtrace output in case of build crash (synfig#3241)
-
Enabled tests on GitHub Actions (synfig#2740)
-
Enabled tests on CI
-
Enabled ImageMagick (synfig#2986)
-
Added
synchronize
to the list of processed events (synfig#2913) -
Bump Ubuntu version (synfig#2839)
-
Bump GitHub actions (synfig#2907)
-
Added conventional commits style check for PR titles (synfig#2909)
-
Disabled
mod_magickpp
in macOS builds (synfig#2790) -
Updated ChangeLog generator script (synfig#2782)
-
Bump macOS version (synfig#2761)
-
(AppVeyor Related) Bump artifact version (synfig#2749)
🔧 Chores
-
Fix synfig#3398 - Missing install-sh script on MacOS (synfig#3408)
-
Make sure to update vcpkg.json on every release (synfig#3406)
-
Typo transfRomation -> transfoRmation (synfig#3397)
-
Fix generation of source packages using Autotools (again) (synfig#3400)
-
Fix generation of source packages using Autotools (synfig#3399)
-
Update Change Log for 1.4.5 (synfig#3359)
-
Avoid installation of unused sdl2_mixer (synfig#3367)
-
Update ChangeLog for version 1.4.5 (synfig#3348)
-
Removed zh-Hant locale as it has zero translations (synfig#3354)
-
Update Transifex config to APIv3 (synfig#3349)
-
Add CONTRIBUTING.md and CODE_OF_CONDUCT.md (synfig#3335)
-
Script version-bump.sh must update CMake files (synfig#3316)
-
Bump year to 2024 (synfig#3299)
-
(Build Related) Add support for installing build dependencies in Red OS (synfig#3289)
-
PVS-Studio has been added to the list of organizations (synfig#3267)
-
Add .cache folder to .gitignore (synfig#3145)
-
Update changelog (synfig#3065)
-
Fix various typos (synfig#3031)
-
Fix typo in comment in valuedescset.h (synfig#3005)
-
Bump year to 2023 (synfig#2966)
-
Update ChangeLog (synfig#2929)
-
Added
build-cmake/
folder to .gitignore (synfig#2898) -
Added license description in readme (synfig#2916)
-
Fix typos (synfig#2863)
-
Updated changelog (synfig#2774)
-
Fix source typos (synfig#2803)
-
Fix various typos (synfig#2799)
-
Typo in comment (synfig#2785)
-
Fixed a typo in Preferences->Language dropdown (synfig#2770)
-
Enabled some strings for translation (synfig#2768)
-
Update license statement for test_base.h (synfig#2700)
-
Missing files in POTFILES.in for synfig-studio (synfig#2675)