babl.git
6 years agofloat: add conversions to/from associated alpha for grayscale
Øyvind Kolås [Mon, 19 Aug 2019 23:46:08 +0000 (01:46 +0200)]
float: add conversions to/from associated alpha for grayscale

Further speeds up rotations/scales etc in all grayscale precisions.

6 years agofloat: add grayscale alpha and trc converters
Øyvind Kolås [Mon, 19 Aug 2019 23:07:42 +0000 (01:07 +0200)]
float: add grayscale alpha and trc converters

6 years agogray: add graya to rgba expanders
Øyvind Kolås [Mon, 19 Aug 2019 22:19:32 +0000 (00:19 +0200)]
gray: add graya to rgba expanders

6 years agocairo: remove on of the conversaions added in last commit
Øyvind Kolås [Mon, 19 Aug 2019 18:44:33 +0000 (20:44 +0200)]
cairo: remove on of the conversaions added in last commit

6 years agocairo: add more little endian conversions
Øyvind Kolås [Mon, 19 Aug 2019 15:40:17 +0000 (17:40 +0200)]
cairo: add more little endian conversions

6 years agoavx2, two-table: don't segfault for NaN input
Ell [Mon, 19 Aug 2019 14:33:29 +0000 (17:33 +0300)]
avx2, two-table: don't segfault for NaN input

In the AVX2 and two-table linear-float => gamma-int8 conversions,
tweak the input bounds-check to handle NaN values.  NaN would
previously lead to an out-of-bounds table lookup, and a segfault
(see issue #43).

6 years agobabl: add a lock around creation of new fishes
Øyvind Kolås [Mon, 19 Aug 2019 10:44:19 +0000 (12:44 +0200)]
babl: add a lock around creation of new fishes

This prevents multiple threads from racing in creation of a missing fish.

6 years agoextensions: add a Y' u8 to RGBA float conversion
Øyvind Kolås [Mon, 19 Aug 2019 01:19:39 +0000 (03:19 +0200)]
extensions: add a Y' u8 to RGBA float conversion

6 years agoextensions: add some u8 and u16 conversions for grayscale
Øyvind Kolås [Mon, 19 Aug 2019 00:57:47 +0000 (02:57 +0200)]
extensions: add some u8 and u16 conversions for grayscale

This adds some missing end pieces for building much better than reference
conversions for many useful u8 and u16 code paths.

6 years agobabl: reduce default max path length to 3 (5)
Øyvind Kolås [Sun, 18 Aug 2019 23:00:11 +0000 (01:00 +0200)]
babl: reduce default max path length to 3 (5)

With the space invasion progressing, we're starting to have
many more conversions to search through - in some cases
looking for conversions - when there are no conversions
become too expensive with an exhaustive search of all
conversions up to 7 steps. (it is likely possible to reduce
the amount of conversions tried).

As well re-enable handling of grayscale ICC profiles - since
the formerly patological tests on gimp now pass.

6 years agobabl: add support for grayscale spaces
Øyvind Kolås [Sun, 18 Aug 2019 22:01:13 +0000 (00:01 +0200)]
babl: add support for grayscale spaces

A grayscale space is just like an RGB space, but has a default set
of chromaticities for R,G,B. When ICC profiles are loaded only the TRC
is considered is considered (we could also include the whitepoint),
blackpoint tag is ignored (and should be baked into the used ICC
profile instead.)

This works with GIMP-2.10 but master of GIMP currently hangs when
trying to load a grayscale jpeg with attached grayscale ICC profile,
The if #0 on line 999 of babl/babl-icc.c needs to be turned into a
1 to enable grayscale icc profiles for further testing.

6 years agobabl: use an enum to internally differentiate rgb, cmyk or gray type spaces
Øyvind Kolås [Sun, 18 Aug 2019 19:06:33 +0000 (21:06 +0200)]
babl: use an enum to internally differentiate rgb, cmyk or gray type spaces

6 years agodocs: update alpha docs
Øyvind Kolås [Sun, 18 Aug 2019 13:28:52 +0000 (15:28 +0200)]
docs: update alpha docs

6 years agobabl: simplify logic in babl_epsilon_for_zero
Øyvind Kolås [Fri, 16 Aug 2019 21:45:18 +0000 (23:45 +0200)]
babl: simplify logic in babl_epsilon_for_zero

We do not need to treate positive/negative avoided infinities differently,
the result is the same as long as we are consistent, and only using the
positive epsilon value leads to slightly simpler per-pixel conversion code
in both directions.

6 years agoextensions: add sse2_cflags to CIE
Michael Schumacher [Sun, 4 Aug 2019 17:24:59 +0000 (19:24 +0200)]
extensions: add sse2_cflags to CIE

Fixes #42

6 years agogir: set nsversion to 0.1
Øyvind Kolås [Thu, 8 Aug 2019 08:55:11 +0000 (10:55 +0200)]
gir: set nsversion to 0.1

6 years agomeson: depend on meson 0.50.0
Øyvind Kolås [Thu, 8 Aug 2019 08:54:54 +0000 (10:54 +0200)]
meson: depend on meson 0.50.0

6 years agoci: Add GObject introspection packages
Niels De Graef [Mon, 5 Aug 2019 20:09:21 +0000 (22:09 +0200)]
ci: Add GObject introspection packages

We added GObject introspection in the previous commits, so we need to
make sure the correct binaries are installed for this.

6 years agoAdd some GIR annotations
Niels De Graef [Mon, 5 Aug 2019 19:52:27 +0000 (21:52 +0200)]
Add some GIR annotations

6 years agoFix several GObject Introspection warnings
Niels De Graef [Mon, 5 Aug 2019 17:07:54 +0000 (19:07 +0200)]
Fix several GObject Introspection warnings

6 years agoRemove "Rename to" annotation
Niels De Graef [Mon, 5 Aug 2019 16:56:21 +0000 (18:56 +0200)]
Remove "Rename to" annotation

This is a deprecated gtk-doc construct, so remove it (to rename structs,
we have the identity filter now).

6 years agoAdd GObject Introspection support to babl
Niels De Graef [Mon, 5 Aug 2019 16:55:38 +0000 (18:55 +0200)]
Add GObject Introspection support to babl

This is needed for GIMP to also have proper GIR support for its plugins.

Extra thanks go to Emmanuele Bassi for the identity filter.

6 years agobabl.h: declared BablModelFlag so gobject introspection understands it
Øyvind Kolås [Tue, 6 Aug 2019 18:13:55 +0000 (20:13 +0200)]
babl.h: declared BablModelFlag so gobject introspection understands it

6 years agochange project description to be a bit less cryptic
Øyvind Kolås [Tue, 6 Aug 2019 12:40:28 +0000 (14:40 +0200)]
change project description to be a bit less cryptic

6 years agomeson: move pkgconfig after subdir defining babl
Øyvind Kolås [Tue, 6 Aug 2019 12:35:01 +0000 (14:35 +0200)]
meson: move pkgconfig after subdir defining babl

Use the meson pkgconfig generator after the babl library object has
been defined.

6 years agomeson/pkgconfig: drop remnants of libdir customizations
Øyvind Kolås [Tue, 6 Aug 2019 12:06:02 +0000 (14:06 +0200)]
meson/pkgconfig: drop remnants of libdir customizations

6 years agomeson: stop overriding libdir
Øyvind Kolås [Tue, 6 Aug 2019 11:46:35 +0000 (13:46 +0200)]
meson: stop overriding libdir

Let meson do it's defaults, this mean we get installed in
prefix/lib/x86_64-linux-gnu/ instead of prefix/lib/
apparently which apparently is better - but different from
what autotools used to do; and leads to other paths also
needing potential adjustment.

6 years agopost-release version bump
Øyvind Kolås [Fri, 2 Aug 2019 16:17:49 +0000 (18:17 +0200)]
post-release version bump

6 years agorelase babl 0.1.70
Øyvind Kolås [Fri, 2 Aug 2019 16:16:25 +0000 (18:16 +0200)]
relase babl 0.1.70

6 years agomeson: for issue #41 clean up cflags varials
Øyvind Kolås [Fri, 2 Aug 2019 14:34:28 +0000 (16:34 +0200)]
meson: for issue #41 clean up cflags varials

6 years agobuild: fix typo in previous attempt at fixing issue #41
Øyvind Kolås [Fri, 2 Aug 2019 14:29:20 +0000 (16:29 +0200)]
build: fix typo in previous attempt at fixing issue #41

6 years agobuild: issue #41 set all cflags variables to empty at start
Øyvind Kolås [Fri, 2 Aug 2019 13:49:23 +0000 (15:49 +0200)]
build: issue #41 set all cflags variables to empty at start

Cleaner than previous attempt, possibly fixing builds on non-x86

6 years agobuild: set more of the simd_cflags when not found
Øyvind Kolås [Fri, 2 Aug 2019 13:26:00 +0000 (15:26 +0200)]
build: set more of the simd_cflags when not found

Further attempt at mitigating issue #41.

6 years agobuild: issue #41 builds without mmx/sse etc extensions do not work
Øyvind Kolås [Fri, 2 Aug 2019 11:53:44 +0000 (13:53 +0200)]
build: issue #41 builds without mmx/sse etc extensions do not work

The warnings about the SIMD flags specific variables not being set goes
away with this commit. Setting empty strings do not work since then gcc
ends up looking for input files that are the empty string, thus this patch
re-adds -Wall instead of setting an empty string.

6 years agobuild: don't fail on unknown architecture
Abderrahim Kitouni [Fri, 2 Aug 2019 04:54:26 +0000 (05:54 +0100)]
build: don't fail on unknown architecture

The autotools build ignored unknown architectures silently while the meson
build errors out. This turns the error into a warning.

Fixes #41

6 years agobuild: use meson to find system python instead of assuming it's called python
Abderrahim Kitouni [Fri, 2 Aug 2019 04:51:47 +0000 (05:51 +0100)]
build: use meson to find system python instead of assuming it's called python

some systems only have python3

6 years agomeson: fix AVX2 detection on x86
Ell [Tue, 30 Jul 2019 17:37:18 +0000 (20:37 +0300)]
meson: fix AVX2 detection on x86

s/rax/eax/

6 years agobuild: remove autogen.sh, remnants of autotools
Øyvind Kolås [Tue, 30 Jul 2019 08:03:04 +0000 (10:03 +0200)]
build: remove autogen.sh, remnants of autotools

6 years agobabl: initialize buffer pointers
Øyvind Kolås [Mon, 29 Jul 2019 22:24:17 +0000 (00:24 +0200)]
babl: initialize buffer pointers

This silences a false warning from gcc, where it doesn't recognize the type
of control flow occuring with the pre/post switches in the reference
conversion.

6 years agobuild: remove autotools
Øyvind Kolås [Mon, 29 Jul 2019 20:31:51 +0000 (22:31 +0200)]
build: remove autotools

6 years agoNEWS: formatting :)
Alexandre Prokoudine [Fri, 26 Jul 2019 13:47:02 +0000 (13:47 +0000)]
NEWS: formatting :)

6 years agodocs: fix html tag typo
Øyvind Kolås [Thu, 25 Jul 2019 13:30:47 +0000 (15:30 +0200)]
docs: fix html tag typo

6 years agopost-release version bump
Øyvind Kolås [Wed, 24 Jul 2019 16:36:26 +0000 (18:36 +0200)]
post-release version bump

6 years agorelease 0.1.68
Øyvind Kolås [Wed, 24 Jul 2019 16:35:58 +0000 (18:35 +0200)]
release 0.1.68

6 years agoNEWS: update
Øyvind Kolås [Thu, 25 Jul 2019 12:54:49 +0000 (14:54 +0200)]
NEWS: update

6 years agoINSTALL.in: document meson build instead of autotools build
Øyvind Kolås [Thu, 25 Jul 2019 12:58:17 +0000 (14:58 +0200)]
INSTALL.in: document meson build instead of autotools build

6 years agodocs: remove duplicate files
Øyvind Kolås [Thu, 25 Jul 2019 10:29:39 +0000 (12:29 +0200)]
docs: remove duplicate files

6 years agoextensions: distribute avx2-int8-tables.h
Ell [Wed, 24 Jul 2019 20:52:08 +0000 (23:52 +0300)]
extensions: distribute avx2-int8-tables.h

6 years agoextensions: add AVX2 linear-float -> gamma-u8 conversions
Ell [Wed, 24 Jul 2019 20:24:29 +0000 (23:24 +0300)]
extensions: add AVX2 linear-float -> gamma-u8 conversions

Add AVX2 conversions from Y float, YA float, RGB float, and RGBA
float, to Y' u8, Y'A u8, R'G'B' u8, and R'G'B'A u8, respectively.
The conversions use a lookup table, similarly to the two-table
conversions, indexed using AVX2's 256-bit gather instruction, which
allow us to process 8 floats at once.  Over here, this conversion
is ~5x faster than the SSE conversions.

Note, however, that unlike two-table, we don't use a second
"feedback" table to correct the result, leading to an off-by-one
conversion error with a probability of ~0.1%, using a 2^16-element
table.  This error rate is low enough for babl to use the
conversion, but might still be a bit too high regardless; it can be
further reduced with a bigger table.

6 years agoconfigure.ac, meson, cpu-accel: add AVX2 detection
Ell [Wed, 24 Jul 2019 20:21:01 +0000 (23:21 +0300)]
configure.ac, meson, cpu-accel: add AVX2 detection

Detect AVX2 support during configuration and runtime, in
preperation for next commit.

6 years agodocs: remove wrong refernces to old versions
Øyvind Kolås [Wed, 24 Jul 2019 16:44:47 +0000 (18:44 +0200)]
docs: remove wrong refernces to old versions

6 years agodocs: add a couple of entries to glossary
Øyvind Kolås [Wed, 24 Jul 2019 16:00:56 +0000 (18:00 +0200)]
docs: add a couple of entries to glossary

6 years agomeson: fix mistake in add_dist_script
Øyvind Kolås [Wed, 24 Jul 2019 15:44:06 +0000 (17:44 +0200)]
meson: fix mistake in add_dist_script

6 years agoAUTHORS: update
Øyvind Kolås [Wed, 24 Jul 2019 14:23:23 +0000 (16:23 +0200)]
AUTHORS: update

6 years agoupdate NEWS
Øyvind Kolås [Wed, 24 Jul 2019 14:09:48 +0000 (16:09 +0200)]
update NEWS

6 years agoHCY: convert luminance relative to RGB chromaticities
Øyvind Kolås [Wed, 24 Jul 2019 14:09:01 +0000 (16:09 +0200)]
HCY: convert luminance relative to RGB chromaticities

6 years agodocs: add OldNews page
Øyvind Kolås [Wed, 24 Jul 2019 14:07:11 +0000 (16:07 +0200)]
docs: add OldNews page

6 years agoextensions/HSL: add model doc string
Øyvind Kolås [Wed, 24 Jul 2019 13:28:59 +0000 (15:28 +0200)]
extensions/HSL: add model doc string

6 years agoextensions/HSV: update model docs
Øyvind Kolås [Wed, 24 Jul 2019 13:28:38 +0000 (15:28 +0200)]
extensions/HSV: update model docs

6 years agoforce generate git-version.h before copying
Félix Piédallu [Wed, 24 Jul 2019 11:35:26 +0000 (13:35 +0200)]
force generate git-version.h before copying

6 years agobuild (docs): add Glossary.html to BUILT_EXTRA_DIST
Øyvind Kolås [Wed, 24 Jul 2019 11:49:08 +0000 (13:49 +0200)]
build (docs): add Glossary.html to BUILT_EXTRA_DIST

6 years agomeson: require meson version 0.49.0
Øyvind Kolås [Wed, 24 Jul 2019 11:39:01 +0000 (13:39 +0200)]
meson: require meson version 0.49.0

6 years agoextensions/HSV: add documentation for model
Øyvind Kolås [Wed, 24 Jul 2019 09:47:33 +0000 (11:47 +0200)]
extensions/HSV: add documentation for model

6 years agoFix git-version.h handling
Félix Piédallu [Wed, 24 Jul 2019 10:58:54 +0000 (12:58 +0200)]
Fix git-version.h handling

6 years agoconfigure.ac: clean up SSE config
Ell [Wed, 24 Jul 2019 04:58:00 +0000 (07:58 +0300)]
configure.ac: clean up SSE config

6 years agodocs: start adding a glossary
Øyvind Kolås [Tue, 23 Jul 2019 09:13:20 +0000 (11:13 +0200)]
docs: start adding a glossary

6 years agodocs: refer to Y in generated reference as Luminance
Øyvind Kolås [Mon, 22 Jul 2019 22:59:48 +0000 (00:59 +0200)]
docs: refer to Y in generated reference as Luminance

6 years agobabl-space: do not use universal rgb sse converter for non-sse path
Øyvind Kolås [Mon, 22 Jul 2019 20:37:58 +0000 (22:37 +0200)]
babl-space: do not use universal rgb sse converter for non-sse path

6 years agodocs: s/git.gnome.org/gitlab.gnome.org/
Øyvind Kolås [Mon, 22 Jul 2019 15:25:26 +0000 (17:25 +0200)]
docs: s/git.gnome.org/gitlab.gnome.org/

6 years agoextensions/CIE: add some documentation overrides
Øyvind Kolås [Mon, 22 Jul 2019 15:20:37 +0000 (17:20 +0200)]
extensions/CIE: add some documentation overrides

6 years agodocs: improve generated reference
Øyvind Kolås [Mon, 22 Jul 2019 15:10:08 +0000 (17:10 +0200)]
docs: improve generated reference

When registering types, models, formats and components one can now
specify override "doc" strings that end up in this reference.

6 years agodocs: update meson.build
Øyvind Kolås [Mon, 22 Jul 2019 14:11:07 +0000 (16:11 +0200)]
docs: update meson.build

6 years agodocs: dist Reference.html
Øyvind Kolås [Mon, 22 Jul 2019 14:10:02 +0000 (16:10 +0200)]
docs: dist Reference.html

6 years agodocs: rename vocabulary page to reference
Øyvind Kolås [Mon, 22 Jul 2019 13:59:23 +0000 (15:59 +0200)]
docs: rename vocabulary page to reference

6 years agobase: s/premultiplied/associated_alpha/
Øyvind Kolås [Mon, 22 Jul 2019 13:49:51 +0000 (15:49 +0200)]
base: s/premultiplied/associated_alpha/

6 years agoextensions/sse2-float: s/premul/assoc/ in function names
Øyvind Kolås [Mon, 22 Jul 2019 13:44:58 +0000 (15:44 +0200)]
extensions/sse2-float: s/premul/assoc/ in function names

6 years agoextensions/gimp-8bit: s/premul/assoc/ in function names
Øyvind Kolås [Mon, 22 Jul 2019 13:44:46 +0000 (15:44 +0200)]
extensions/gimp-8bit: s/premul/assoc/ in function names

6 years agoextensions/cairo: s/premul/assoc/ in function names
Øyvind Kolås [Mon, 22 Jul 2019 13:44:30 +0000 (15:44 +0200)]
extensions/cairo: s/premul/assoc/ in function names

6 years agobabl: replace premultiplied with associated in BablModelFlags
Øyvind Kolås [Mon, 22 Jul 2019 13:29:33 +0000 (15:29 +0200)]
babl: replace premultiplied with associated in BablModelFlags

The terminology that babl has settled for - for the different types
of alpha is associated- and separate- alpha.

6 years agodocs: improve the generated reference
Øyvind Kolås [Mon, 22 Jul 2019 12:39:52 +0000 (14:39 +0200)]
docs: improve the generated reference

6 years agomeson: adapt to changes in docs build
Øyvind Kolås [Mon, 22 Jul 2019 02:41:50 +0000 (04:41 +0200)]
meson: adapt to changes in docs build

6 years agodocs: add separate pages for CMYK, ColorManagement and alpha
Øyvind Kolås [Mon, 22 Jul 2019 02:06:26 +0000 (04:06 +0200)]
docs: add separate pages for CMYK, ColorManagement and alpha

6 years agodocs: remove reference to non-existing file build-docs.sh
Øyvind Kolås [Mon, 22 Jul 2019 01:40:42 +0000 (03:40 +0200)]
docs: remove reference to non-existing file build-docs.sh

6 years agobabl-space: add universal convertors between linear and nonlinear
Øyvind Kolås [Mon, 22 Jul 2019 01:22:11 +0000 (03:22 +0200)]
babl-space: add universal convertors between linear and nonlinear

Register conversions for all space pairs between "R'G'B'A float" and
"RGBA float" and vice versa, both SSE2 and non SIMD versions.

6 years agobabl-space: indentation improvements
Øyvind Kolås [Mon, 22 Jul 2019 01:08:09 +0000 (03:08 +0200)]
babl-space: indentation improvements

6 years agobabl-fish: use abstraction for checking if space is cmyk
Øyvind Kolås [Sat, 20 Jul 2019 15:15:29 +0000 (17:15 +0200)]
babl-fish: use abstraction for checking if space is cmyk

6 years agobabl-fish-path: cache a local sRGB space instance
Øyvind Kolås [Sat, 20 Jul 2019 15:15:03 +0000 (17:15 +0200)]
babl-fish-path: cache a local sRGB space instance

6 years agobabl-space: 0 initialize temporary stack allocated BablSpace instances
Øyvind Kolås [Sat, 20 Jul 2019 13:34:15 +0000 (15:34 +0200)]
babl-space: 0 initialize temporary stack allocated BablSpace instances

After the CMYK support was added, we ended up sometimes having the is_cmyk
flag set on RGB matrix profiles, leading to forced reference conversions.

6 years agoextensions/CIE.c: improve handling of near zero values
Øyvind Kolås [Thu, 4 Jul 2019 11:11:05 +0000 (13:11 +0200)]
extensions/CIE.c: improve handling of near zero values

Negative values were treated as near zero, causing more clipping than
neccesary to occur.

6 years agobabl: make model_is_symmetric test adapt tolerance for high values
Øyvind Kolås [Thu, 4 Jul 2019 10:32:07 +0000 (12:32 +0200)]
babl: make model_is_symmetric test adapt tolerance for high values

When the values used are in the billions, the tolerance that originally
was mostly intended for values in the range 0.0-1.0 and its neighborhood
break apart - use 1% of component values as symmetry threshold for such
values.

6 years agoAdd Yu'v' (CIE 1976 UCS) to babl CIE color spaces
Elle Stone [Sat, 29 Jun 2019 16:45:34 +0000 (12:45 -0400)]
Add Yu'v' (CIE 1976 UCS) to babl CIE color spaces

Yu'v' is a linear transform of xyY that is more perceptually
uniform, and well-suited for eg creating chromaticity diagrams
that aren't misleading when comparing various RGB color spaces.

This color space has been recommended by many people as a better
choice than xyY. ACES documentation already uses this color space.

6 years agobabl: performance improvement in model-gray
Thomas Manni [Mon, 24 Jun 2019 10:12:38 +0000 (12:12 +0200)]
babl: performance improvement in model-gray

Use multiplication by the inverse instead of division in
premultiplied to non-premultiplied alpha conversion functions.

6 years agomeson: fix typoed filename
Øyvind Kolås [Wed, 19 Jun 2019 21:41:51 +0000 (23:41 +0200)]
meson: fix typoed filename

6 years agoAUTHORS: add some missing entries
Øyvind Kolås [Wed, 19 Jun 2019 13:28:47 +0000 (15:28 +0200)]
AUTHORS: add some missing entries

6 years agodocs: add tools dir to dir-overview
Øyvind Kolås [Wed, 19 Jun 2019 12:27:11 +0000 (14:27 +0200)]
docs: add tools dir to dir-overview

6 years agotests: rename from transparent_symmetry to alpha_symmetric_transform
Øyvind Kolås [Wed, 19 Jun 2019 12:06:52 +0000 (14:06 +0200)]
tests: rename from transparent_symmetry to alpha_symmetric_transform

6 years agodocs: add section about symmetric alpha transforms
Øyvind Kolås [Wed, 19 Jun 2019 12:04:26 +0000 (14:04 +0200)]
docs: add section about symmetric alpha transforms

6 years agodocs: update
Øyvind Kolås [Wed, 19 Jun 2019 11:20:43 +0000 (13:20 +0200)]
docs: update

6 years agobabl/base: use symmetric alpha transformations for CMYK
Øyvind Kolås [Wed, 19 Jun 2019 09:35:30 +0000 (11:35 +0200)]
babl/base: use symmetric alpha transformations for CMYK

6 years agomeson: add transparent_symmetry test
Øyvind Kolås [Thu, 13 Jun 2019 15:12:36 +0000 (17:12 +0200)]
meson: add transparent_symmetry test