Libmypaint Versions Save

libmypaint, a.k.a. "brushlib", is a library for making brushstrokes which is used by MyPaint and other projects.

v1.6.1

4 years ago

:warning: 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.

v1.6.0

4 years ago

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.

v1.5.1

4 years ago

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

Localization

New translations for:

  • Croatian
  • German
  • Greek
  • Indonesian
  • Korean

Misc.

Minimal example program adjusted to account for the code changes.

v1.5.0

4 years ago

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).

v1.5.0-beta.0

4 years ago

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.

v2.0.0-beta.1

4 years ago

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.

v1.4.0

4 years ago

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

v2.0.0-alpha.2

5 years ago

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

v2.0.0-alpha.1

5 years ago

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.

v2.0.0-alpha.0

5 years ago

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