Skip to content

Releases: mypaint/libmypaint

1.6.1 - libtool `-release` flag no longer used

11 May 17:27
Choose a tag to compare

⚠️ NOTE: This release contains no code changes. If you have already upgraded to 1.6.0, there is no need to upgrade to 1.6.1 for other reasons than avoiding future unnecessary rebuilds of reverse dependencies.

This release marks the end of including the MAJOR.MINOR API version fields in the library names. The abi fields have also been cleared, since they weren't that useful when used in conjunction with the libtool -release flag.

Actual runtime compatibility (for reference)

Where a --> b means that a is backwards abi-compatible with b:

1.6.1 --> 1.6.0 --> 1.5.1 --> 1.5.0 --> 1.3.0

1.4.0 is not abi-compatible with any other release.


29 Apr 20:11
Choose a tag to compare

This minor version release includes:

  • The new mypaint_brush_stroke_to_2_linearsRGB function.
  • Some performance improvements, particularly improved auto-vectorization in the spectral->rgb conversion function (thanks to SleepProgger).
  • Improved documentation (still lacking a comprehensive overview).
  • New translations for Croatian, Portuguese, Valencian, English (UK) and Dutch

Code changes

The new mypaint_brush_stroke_to_2_linearsRGB function only behaves differently to mypaint_brush_stroke_to_2 for brushes with color dynamics (settings that alter the color), where those dynamics need to be handled differently when drawing to a surface that stores/interprets colors as linear sRGB.

This function will (almost certainly) not be part of libmypaint-2, where the aim is to have the library be essentially color agnostic.

Documentation changes

All public headers (except for the gegl headers) are now fully documented, using Qt syntax to avoid conflicts with the GObject introspection scanner. The few introspection comments that were placed in headers have been moved to source files.

The Doxygen+Sphinx+breathe setup has been replaced by using Doxygen directly for generating the documentation. This change might be reverted for future releases.

Note that the documentation is only updated in the 1.x branches and not in master, as the latter may undergo significant changes before release.


23 Feb 12:44
Choose a tag to compare

Bugfix/localization release

Code changes

  • mypaint-brush.c:count_dabs_to calculation changed to be consistent with v1.3.0 / 1.4.0 when called via the old stroke interface, and generally fixed so that there's no need for an additional initial mypaint_brush_stroke_to call to produce a visible stroke.
  • mypaint-brush.c: estimation of dabs per pixel reverted to the old calculation when called via the old stroke interface.

Build system fixes

  • Fixes incorrect versions for the requirements in the libmypaint-gegl pkg-config file (for both gegl and libmypaint)
  • The openmp flags are now actually used when building with --enable-openmp


New translations for:

  • Croatian
  • German
  • Greek
  • Indonesian
  • Korean


Minimal example program adjusted to account for the code changes.


11 Feb 07:18
Choose a tag to compare

The 1.5.0 release includes the following:

Backported functionality

Features from the dev branch are backported in an API-compatible way, under the new MyPaintSurface2 interface (and the MyPaintTiledSurface2 implementation).

  • view zoom & view rotation
  • spectral color blending (pigment mode)
  • new smudge settings: length multiplier, buckets, transparency
  • new symmetry modes: vertical, vertical+horizontal, rotational, snowflake
  • adjustable angle for symmetry modes
  • optional multiple output rectangles (only relevant w. new symmetry modes)

(new symmetry modes only available for MyPaintTiledSurface2)

Changes from 1.4.0

Directional offsets are clamped to a maximum distance of 3 * 1080 pixels.

Some string updates and a lot translated strings.

Gegl build and examples fixed (note that neither MyPaint nor GIMP require or use the gegl-compatible interface or GObject introspection provided by libmypaint).

Compatibility note

For those who mess around with their library installs, note that the 1.5.0 release is ABI-compatible with 1.3.0, but not 1.4.0 (due to a enum reordering).

1.5.0-beta.0 - ABI-compatible with 1.3.0

08 Feb 12:33
Choose a tag to compare

The 1.5.0 release will backport all the functionality and bugfixes of the 2.0.0 beta, but with a backwards compatible API/ABI* with a caveat, see below.

The intention is for the 1.5.0 release to be the dependency for MyPaint 2.0.0 and probably the next few MyPaint releases, reserving the 2.x versions of libmypaint for more fundamental changes to the API. This also means that the 2.0.0 release will be in beta for some time, or possibly even revert to alpha to reflect the stability of the API.

ABI compatibility

The 1.4.0 release broke ABI compatibility with 1.3.0 without setting the abi version fields accordingly. This wasn't noticed until last month. The issue is an enum reordering which will not result in crashes, but buggy/incorrect results if using 1.4.0 with an application compiled using the 1.3.0 headers.

Right now, the 1.5.0 prerelease is ABI compatible with 1.3.0, but if the consensus of package maintainers is that it really should be ABI compatible with 1.4.0 instead (if you think it matters at all), do voice your opinion in an issue.

It should be noted that libmypaint, for better or worse, has always used the libtool -release tag, in addition to -version-info.

Prerelease: v2.0.0-beta.1

31 Dec 11:25
Choose a tag to compare

Edit: 2020-02-22
This beta was created to support distributing the 2.0-beta of MyPaint, before the release and switch to libmypaint 1.5.0. The prerelease is not representative of the final API and should not be considered (not even remotely) stable.

This is the first beta of the libmypaint 2.0.0 release (yes, we'll start at beta.1 for this one, sorry).

API changes since the last alpha:

  • mypaint_tiled_surface_set_symmetry_state now has an additional angle parameter. For users who don't use the mypaint_tiled_surface_x functions, nothing needs to be changed.

  • mypaint_surface_end_atomic now takes a pointer to a struct holding an array of rectangles, instead of a pointer to a single rectangle. This part of the API may be altered before the final release, so be aware of that.


02 Sep 03:16
Choose a tag to compare

This release back-ports a few new features and bug fixes from the 2.0 alpha branch


09 Apr 00:42
Choose a tag to compare
v2.0.0-alpha.2 Pre-release

added a parameter for smudge mode to allow additive vs subtractive (pigment)

Barrel Rotation

11 Feb 21:47
Choose a tag to compare
Barrel Rotation Pre-release

If you have a stylus that supports barrel rotation, you can feed values 0.0-1.0 to libmypaint to enable the setting. To disable the input, send a value of -1.

2.0.0 alpha

26 Jan 23:55
Choose a tag to compare
2.0.0 alpha Pre-release

Loads of new brush settings
Spectral pigment/paint mode
Posterize brush mode
Smudge improvements and features
dynamic dabs-per-xxx instead of static