libmypaint, a.k.a. "brushlib", is a library for making brushstrokes which is used by MyPaint and other projects.
Clone or download
briend Merge pull request #107 from briend/xytilt
inputs: x/y independent tilts
Latest commit 0c07191 Jul 23, 2018
Permalink
Failed to load latest commit information.
doc Misc. trivial source comment typos Jun 23, 2018
examples fix minimal.c missing stroke_to arguments Jan 20, 2018
gegl Not all of libmypaint-gegl was versionned. Jul 15, 2017
glib Separate mypaint-config.h and config.h. May 30, 2016
m4macros Don't require m4macros directory Apr 1, 2018
po Merge remote-tracking branch 'origin/master' Jun 26, 2017
tests Sort input file list Sep 23, 2017
.gitignore Version everything that gets installed. Jun 26, 2017
.travis.yml Travis: add gegl May 22, 2016
CODE_OF_CONDUCT.md Add CoC, same as MyPaint's May 22, 2016
CONTRIBUTING.md Update CONTRIBUTING.md. Jun 26, 2017
COPYING Update headers etc. "brushlib" → "libmypaint" May 22, 2016
Makefile.am Don't require m4macros directory Apr 1, 2018
PERFORMANCE Update brushlib/PERFORMANCE Nov 22, 2012
README.md Update README.md for build instructions Jul 21, 2018
TODO brushlib: Update TODO Apr 9, 2013
VERSIONING.md Bump API version more & add VERSIONING.md. Jun 21, 2017
appveyor.bat AppVeyor: add MSYS2 builds May 22, 2016
appveyor.yml AppVeyor: add MSYS2 builds May 22, 2016
autogen.sh autogen: adding support of automake 1.16. Mar 22, 2018
brushmodes.c Misc. trivial source comment typos Jun 23, 2018
brushmodes.h brushlib: Remove static function declaration from header May 19, 2012
brushsettings.json brush inputs- reorder and rename slightly. Push obscure Jun 9, 2018
configure.ac Don't require m4macros directory Apr 1, 2018
fifo.c Separate mypaint-config.h and config.h. May 30, 2016
fifo.h Build with -Wstrict-prototypes -Werror Apr 8, 2014
generate.py py3k: Use new-style division. Jun 28, 2016
helpers.c Separate mypaint-config.h and config.h. May 30, 2016
helpers.h fix rand_gauss() offset Aug 8, 2012
libmypaint.c Remove a lingering ref to mapping.c May 18, 2016
libmypaint.pc.in Version everything that gets installed. Jun 26, 2017
mypaint-brush-settings.c Separate mypaint-config.h and config.h. May 30, 2016
mypaint-brush-settings.h Separate mypaint-config.h and config.h. May 30, 2016
mypaint-brush.c Merge pull request #107 from briend/xytilt Jul 23, 2018
mypaint-brush.h Input Calibration: viewzoom and viewrotation inputs Jun 10, 2017
mypaint-config.h Separate mypaint-config.h and config.h. May 30, 2016
mypaint-fixed-tiled-surface.c Separate mypaint-config.h and config.h. May 30, 2016
mypaint-fixed-tiled-surface.h Separate mypaint-config.h and config.h. May 30, 2016
mypaint-glib-compat.h Separate mypaint-config.h and config.h. May 30, 2016
mypaint-mapping.c Mapping: avoid redundant interpolation and possible errors Jul 16, 2017
mypaint-mapping.h Separate mypaint-config.h and config.h. May 30, 2016
mypaint-rectangle.c Separate mypaint-config.h and config.h. May 30, 2016
mypaint-rectangle.h Separate mypaint-config.h and config.h. May 30, 2016
mypaint-surface.c Separate mypaint-config.h and config.h. May 30, 2016
mypaint-surface.h Separate mypaint-config.h and config.h. May 30, 2016
mypaint-tiled-surface.c Misc. trivial source comment typos Jun 23, 2018
mypaint-tiled-surface.h Misc. trivial source comment typos Jun 23, 2018
mypaint.c Separate mypaint-config.h and config.h. May 30, 2016
mypaint.h Build with -Wstrict-prototypes -Werror Apr 8, 2014
operationqueue.c Misc. trivial source comment typos Jun 23, 2018
operationqueue.h Swap clarity for wider standards compliance May 26, 2016
rng-double.c Separate mypaint-config.h and config.h. May 30, 2016
rng-double.h Separate mypaint-config.h and config.h. May 30, 2016
tiled-surface-private.h brushlib: Add a benchmark/test for implementation details of TiledSur… Jun 8, 2013
tilemap.c Separate mypaint-config.h and config.h. May 30, 2016
tilemap.h Separate mypaint-config.h and config.h. May 30, 2016
utils.c Misc. trivial source comment typos Jun 23, 2018
utils.h brushlib: Add minimal example Apr 9, 2013

README.md

libmypaint - MyPaint brush engine library

Translation Status Travis Build Status Appveyor Build Status

This is the brush library used by MyPaint. A number of other painting programs use it too.

License: ISC, see COPYING for details.

Dependencies

Install dependencies (Debian and derivatives)

On recent Debian-like systems, you can type the following to get started with a standard configuration:

$ sudo apt install -y build-essential
$ sudo apt install -y libjson-c-dev libgirepository1.0-dev libglib2.0-dev

When building from git:

$ sudo apt install -y python2.7 autotools-dev intltool gettext libtool

You might also try using your package manager:

$ sudo apt build-dep mypaint # will get additional deps for MyPaint (GUI)
$ sudo apt build-dep libmypaint  # may not exist; included in mypaint

Install dependencies (Red Hat and derivatives)

The following works on a minimal CentOS 7 installation:

$ sudo yum install -y gcc gobject-introspection-devel json-c-devel glib2-devel

When building from git, you'll want to add:

$ sudo yum install -y git python autoconf intltool gettext libtool

You might also try your package manager:

$ sudo yum builddep libmypaint

Build and install

The traditional setup works just fine.

$ ./autogen.sh    # Only needed when building from git.
$ ./configure
$ sudo make install
$ sudo ldconfig

Maintainer mode

We don't ship a configure script in our git repository. If you're building from git, you have to kickstart the build environment with:

$ git clone https://github.com/mypaint/libmypaint.git
$ cd libmypaint
$ ./autogen.sh

This script generates configure from configure.ac, after running a few checks to make sure your build environment is broadly OK. It also regenerates certain important generated headers if they need it.

Folks building from a release tarball don't need to do this: they will have a configure script from the start.

Configure

$ ./configure
$ ./configure --prefix=/tmp/junk/example

There are several MyPaint-specific options. These can be shown by running

$ ./configure --help

Build

$ make

Once MyPaint is built, you can run the test suite and/or install it.

Test

$ make check

This runs all the unit tests.

Install

$ sudo make install

Uninstall libmypaint with make uninstall.

Check availability

Make sure that pkg-config can see libmypaint before trying to build with it.

$ pkg-config --list-all | grep -i mypaint

If it's not found, you'll need to add the relevant pkgconfig directory to the pkg-config search path. For example, on CentOS, with a default install:

$ sudo sh -c "echo 'PKG_CONFIG_PATH=/usr/local/lib/pkgconfig' >>/etc/environment"

Make sure ldconfig can see libmypaint as well

$ sudo ldconfig -p |grep -i libmypaint

If it's not found, you'll need to add the relevant lib directory to the LD_LIBRARY_PATH:

$ export LD_LIBRARY_PATH=/usr/local/lib
$ sudo sh -c "echo 'LD_LIBRARY_PATH=/usr/local/lib' >>/etc/environment

Alternatively, you may want to enable /usr/local for libraries. Arch and Redhat derivatives:

$ sudo sh -c "echo '/usr/local/lib' > /etc/ld.so.conf.d/usrlocal.conf"
$ sudo ldconfig

Contributing

The MyPaint project welcomes and encourages participation by everyone. We want our community to be skilled and diverse, and we want it to be a community that anybody can feel good about joining. No matter who you are or what your background is, we welcome you.

Please note that MyPaint is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Please see the file CONTRIBUTING.md for details of how you can begin contributing.

Making releases

The distribution release can be generated with:

$ make dist

And it should be checked before public release with:

$ make distcheck

Localization

Contribute translations here: https://hosted.weblate.org/engage/mypaint/.

The list of languages is maintained in po/LINGUAS. Currently this file lists all the languages we have translations for. It can be regenerated with:

$ ls po/*.po | sed 's$^.*po/\([^.]*\).po$\1$' | sort > po/LINGUAS

You can also disable languages by removing them from the list if needed.

A list of files where localizable strings can be found is maintained in po/POTFILES.in.

Strings update

You can update the .po files when translated strings in the code change using:

$ cd po && make update-po

When the results of this are pushed, Weblate translators will see the new strings immediately.

Documentation

Further documentation can be found in the libmypaint wiki: https://github.com/mypaint/libmypaint/wiki.