libmypaint, a.k.a. "brushlib", is a library for making brushstrokes which is used by MyPaint and other projects.
: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.
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.
This minor version release includes:
mypaint_brush_stroke_to_2_linearsRGB
function.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.
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.
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.New translations for:
Minimal example program adjusted to account for the code changes.
The 1.5.0
release includes the following:
Features from the dev branch are backported in an API-compatible way, under the new MyPaintSurface2 interface (and the MyPaintTiledSurface2 implementation).
(new symmetry modes only available for MyPaintTiledSurface2
)
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).
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).
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.
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
.
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.
This release back-ports a few new features and bug fixes from the 2.0 alpha branch
added a parameter for smudge mode to allow additive vs subtractive (pigment)
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.
Loads of new brush settings Spectral pigment/paint mode Posterize brush mode Smudge improvements and features dynamic dabs-per-xxx instead of static