Øyvind Kolås [Wed, 19 Jun 2019 12:06:52 +0000 (14:06 +0200)]
tests: rename from transparent_symmetry to alpha_symmetric_transform
Øyvind Kolås [Wed, 19 Jun 2019 12:04:26 +0000 (14:04 +0200)]
docs: add section about symmetric alpha transforms
Øyvind Kolås [Wed, 19 Jun 2019 11:20:43 +0000 (13:20 +0200)]
docs: update
Øyvind Kolås [Wed, 19 Jun 2019 09:35:30 +0000 (11:35 +0200)]
babl/base: use symmetric alpha transformations for CMYK
Øyvind Kolås [Thu, 13 Jun 2019 15:12:36 +0000 (17:12 +0200)]
meson: add transparent_symmetry test
Øyvind Kolås [Thu, 13 Jun 2019 15:08:57 +0000 (17:08 +0200)]
extensions: fix up some lingering references to babl_alpha_avoid_zero
Øyvind Kolås [Thu, 13 Jun 2019 15:00:23 +0000 (17:00 +0200)]
babl: symmetric conversions between associated and separate alpha.
Provide symmetric, color data preserving conversions between associated and
separate alpha for alpha values near and equal to 0.0 at single precision
floating point. Thus these symmetric conversions also augment associated alpha
to always maintain color information.
This is achieved by clamping the alpha used when computing the color
components when multiplying/dividing components between separate and
associated alpha to BABL_ALPHA_FLOOR and -BABL_ALPHA_FLOOR for values
near 0.0, the alpha value is copied unmodified between pixels; the main
improvement of this commit.
In the implementation BABL_ALPHA_FLOOR is 1/65536 = 0.
00001526.. small
enough that it vanishing in rounding for 16bit integer alpha but large
enough to retain color data.
The following table illustrates what corresponding values are between the
two alpha encodings supported. We here usea BABL_ALPHA_FLOOR of 0.01 instead
of 0.
00001526 to make it easier to see what happens.
```
"RGBA float" "RaGaBaA float"
separate alpha associated alpha
non-premultiplied pre-multiplied alpha
R G B A Ra Ga Ba A
10.000 1.000 0.100 0.000 0.100 0.010 0.001 0.000
10.000 1.000 0.100 0.005 0.100 0.010 0.001 0.005
__10.000___1.000__0.100__0.010_____0.100__0.010__0.001__0.010__
10.000 1.000 0.100 0.020 0.200 0.020 0.002 0.020
10.000 1.000 0.100 0.200 2.000 0.200 0.020 0.200
10.000 1.000 0.100 0.400 4.000 0.400 0.040 0.400
1000.000 100.000 10.000 0.000 10.000 1.000 0.100 0.000
1000.000 100.000 10.000 0.005 10.000 1.000 0.100 0.005
1000.000_100.000_10.000__0.010____10.000__1.000__0.100__0.010___
500.000 50.000 5.000 0.020 10.000 1.000 0.100 0.020
50.000 5.000 0.500 0.200 10.000 1.000 0.100 0.200
25.000 2.500 0.250 0.400 10.000 1.000 0.100 0.400
```
GEGL lets each operation compute with it's preferred encoding - for some
operations like blurs this is associated alpha, for others like color
adjustments it is separate alpha, perhaps even in CIE Lab based encodings
rather than RGB. An earlier iteration of this approach was already in use in
babl making un-erase mode and similar features in GIMP-2.10 work correctly
after blurring, the previous implementation did not preserve the
alpha value.
Just the core of the implementation follows:
```
#define BABL_ALPHA_FLOOR_F (1.0f/65536.0f)
static inline float
babl_epsilon_for_zero_float (float value)
{
if (value <= BABL_ALPHA_FLOOR_F)
{
/* for performance one could directly retun BABL_ALPHA_FLOOR_F here
and dropping handling negative values consistently. */
if (value >= 0.0f)
return BABL_ALPHA_FLOOR_F;
else if (value >= -BABL_ALPHA_FLOOR_F)
return -BABL_ALPHA_FLOOR_F;
}
return value; /* most common case, return input value */
}
static inline void
separate_to_associated_rgba (const float *separate_rgba,
float *associated_rgba)
{
float alpha = babl_epsilon_for_zero_float (separate_rgba[3]);
associated_rgba[0] = separate_rgba[0] * alpha;
associated_rgba[1] = separate_rgba[1] * alpha;
associated_rgba[2] = separate_rgba[2] * alpha;
associated_rgba[3] = separate_rgba[3]; /* direct copy */
}
static inline void
associated_to_separate_rgba (const float *associated_rgba,
float *separate_rgba)
{
float alpha = babl_epsilon_for_zero_float (associated_rgba[3]);
float reciprocal_alpha = 1.0f / alpha; /* the conditional normally in
this conversion to avoid
division by zero is handled by
epsilon_for_zero */
separate_rgba[0] = associated_rgba[0] * reciprocal_alpha;
separate_rgba[1] = associated_rgba[1] * reciprocal_alpha;
separate_rgba[2] = associated_rgba[2] * reciprocal_alpha;
separate_rgba[3] = associated_rgba[3]; /* direct copy */
}
```
Øyvind Kolås [Wed, 12 Jun 2019 17:45:50 +0000 (19:45 +0200)]
post release version bump
Øyvind Kolås [Wed, 12 Jun 2019 17:44:28 +0000 (19:44 +0200)]
release 0.1.66
Øyvind Kolås [Wed, 12 Jun 2019 13:31:47 +0000 (15:31 +0200)]
remove unused/unexported API to access internal matrices
Øyvind Kolås [Thu, 30 May 2019 15:50:10 +0000 (17:50 +0200)]
babl: always intialize encoding pointer during format construction
This fixes issue #35, we initialize with NULL which will cause
babl_format_get_encoding to itself call babl_get_name rather.
Øyvind Kolås [Tue, 28 May 2019 23:58:30 +0000 (01:58 +0200)]
babl: implement babl_space_get_rgb_luminance
This provides the factors often found as defines hard-coded for sRGB
with values that are adapted to the primaries of the RGB family of
pixel encodings for a given babl space.
Øyvind Kolås [Tue, 28 May 2019 21:32:34 +0000 (23:32 +0200)]
remove unused file conversions-type.c
Really resolving merge request !12 this time.
Jan Vesely [Sun, 26 May 2019 16:26:44 +0000 (12:26 -0400)]
Revert "meson: fix build for arch:i686 , cc:gcc-7"
This reverts commit
80347ef5b8706ddc0a2854dd5ff545b2d66ede4a.
Adding -march=native is a bad idea as it breaks invalidates individual
extension switches (sse, ...)
Issue #29 was fixed in
e75a27b5346f4c8480180479b7524b1b20ed8321.
Øyvind Kolås [Sat, 25 May 2019 17:06:06 +0000 (19:06 +0200)]
autotools,meson: post release version bump
Øyvind Kolås [Sat, 25 May 2019 17:01:55 +0000 (19:01 +0200)]
release 0.1.64
Øyvind Kolås [Sat, 25 May 2019 16:35:57 +0000 (18:35 +0200)]
meson: fix build for arch:i686 , cc:gcc-7
Fixing issue #29 and merge reuqest !6.
Jan Vesely [Sun, 5 May 2019 02:14:26 +0000 (22:14 -0400)]
gitlab-ci: Consolidate pacman setup and cache downloaded pacman packages
Signed-off-by: Jan Vesely <jano.vesely@gmail.com>
Jan Vesely [Sun, 5 May 2019 02:10:19 +0000 (22:10 -0400)]
gitlab-ci: Consolidate configuraiton into hierarchy of extensible configs
Signed-off-by: Jan Vesely <jano.vesely@gmail.com>
John Marshall [Fri, 3 May 2019 08:56:35 +0000 (09:56 +0100)]
meson build: add missing sse2 compiler flags to babl library build
John Marshall [Mon, 1 Apr 2019 22:08:48 +0000 (23:08 +0100)]
meson build: improve lcms dependency handling
John Marshall [Fri, 29 Mar 2019 09:13:25 +0000 (09:13 +0000)]
meson build: add new tests
John Marshall [Fri, 29 Mar 2019 09:12:24 +0000 (09:12 +0000)]
meson build: use index_html target name for README file generation
John Marshall [Fri, 29 Mar 2019 09:08:07 +0000 (09:08 +0000)]
meson build: implement new copy option with configure_file
John Marshall [Mon, 11 Jun 2018 09:12:24 +0000 (10:12 +0100)]
meson build: only build docs if we can run required objects in build environment
John Marshall [Mon, 11 Jun 2018 09:00:49 +0000 (10:00 +0100)]
meson build: add descriptions for configuration options
John Marshall [Mon, 11 Jun 2018 08:51:27 +0000 (09:51 +0100)]
meson build: clean up library dependency check
John Marshall [Mon, 11 Jun 2018 08:40:45 +0000 (09:40 +0100)]
meson build: improve function checking
John Marshall [Mon, 11 Jun 2018 08:27:33 +0000 (09:27 +0100)]
meson build: try to add -Ofast to CFLAGS
John Marshall [Tue, 16 Apr 2019 08:58:42 +0000 (09:58 +0100)]
git: build cleanup - add missing build objects to .gitignore
John Marshall [Tue, 29 May 2018 14:37:08 +0000 (15:37 +0100)]
tests: remove duplicate extract test
John Marshall [Mon, 1 Apr 2019 10:52:09 +0000 (11:52 +0100)]
build: remove unecessary _la_SOURCE entry from extension makefile
Nuno Ferreira [Sun, 7 Apr 2019 19:38:30 +0000 (20:38 +0100)]
removing conversions-type.c is best done in a different commit
Nuno Ferreira [Sat, 30 Mar 2019 11:15:29 +0000 (11:15 +0000)]
remove 'conversions-type.c' file since it is empty
Nuno Ferreira [Tue, 26 Mar 2019 07:59:15 +0000 (07:59 +0000)]
code style review
fixed style of function headers in the tools folder
hygonsoc [Thu, 2 May 2019 18:36:36 +0000 (02:36 +0800)]
add Hygon Dhyana support in arch_get_vendor
Signed-off-by: hygonsoc <hygonsoc@gmail.com>
Øyvind Kolås [Thu, 9 May 2019 14:26:37 +0000 (16:26 +0200)]
babl: add Y~aA formats - for completeness
In order for higher level code to be abstracted across all available
permutations we need this. This fixes gegl issue no 151
John Marshall [Sat, 13 Apr 2019 13:21:52 +0000 (14:21 +0100)]
build: add meson build files to EXTRA_DIST to include in autotools make dist
Nuno Ferreira [Tue, 26 Feb 2019 19:47:16 +0000 (19:47 +0000)]
code style review
fixed style of function headers in the babl/extensions folder
Øyvind Kolås [Wed, 6 Mar 2019 11:09:47 +0000 (12:09 +0100)]
babl: use inlined lookup functions inside type implementations
This avoids function call stack overhead for some calls that are
in many of our hot-paths.
Jan Vesely [Wed, 20 Feb 2019 21:39:35 +0000 (16:39 -0500)]
gitlab-ci: Replace base/archlinux with archlinux/base
Signed-off-by: Jan Vesely <jano.vesely@gmail.com>
Øyvind Kolås [Sun, 24 Feb 2019 17:25:14 +0000 (18:25 +0100)]
babl: remove some redundant processing in babl_fish_reference
Nuno Ferreira [Fri, 22 Feb 2019 22:29:17 +0000 (22:29 +0000)]
code style review
fixed style of function headers in the babl/base folder
Nuno Ferreira [Thu, 21 Feb 2019 23:03:07 +0000 (23:03 +0000)]
code style review
missed this one
Nuno Ferreira [Thu, 21 Feb 2019 22:57:02 +0000 (22:57 +0000)]
code style review
fixed function headers in .c files
Øyvind Kolås [Sat, 2 Feb 2019 19:46:29 +0000 (20:46 +0100)]
post-release version bump
Øyvind Kolås [Fri, 1 Feb 2019 16:22:50 +0000 (17:22 +0100)]
release 0.1.62
Øyvind Kolås [Fri, 1 Feb 2019 16:21:04 +0000 (17:21 +0100)]
update NEWS
Øyvind Kolås [Fri, 1 Feb 2019 15:11:08 +0000 (16:11 +0100)]
babl.h: reorder and space out BABL_MODEL_FLAG bitmask
This adds a couple spacer slots for additions that might come, like
like coats an ink/paint simulator and spectral bands.
Øyvind Kolås [Fri, 1 Feb 2019 14:25:09 +0000 (15:25 +0100)]
babl: rename new space scRGB
The newly addes space is scRGB, babl is still missing scRGB specific
16bit storage, similar to what already exists for CIE Lab in u8.
Michael Natterer [Tue, 1 Jan 2019 18:15:40 +0000 (19:15 +0100)]
palette: allow a NULL space in babl_new_palette_with_space()
Øyvind Kolås [Tue, 1 Jan 2019 16:10:18 +0000 (17:10 +0100)]
export symbol babl_new_palette_with_space
Øyvind Kolås [Sat, 8 Dec 2018 10:29:21 +0000 (11:29 +0100)]
NEWS: update
Andre Klapper [Sat, 15 Dec 2018 18:09:33 +0000 (19:09 +0100)]
Replace Bugzilla by Gitlab URL in DOAP file
apw [Sat, 28 Jul 2018 06:03:39 +0000 (06:03 +0000)]
Update autogen.sh, typo: intall -> install
Øyvind Kolås [Thu, 6 Dec 2018 22:18:09 +0000 (23:18 +0100)]
Merge branch 'jvesely/babl-master'
Jan Vesely [Thu, 6 Dec 2018 21:57:23 +0000 (16:57 -0500)]
gitlab-ci: Add builds without liblcms2
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Jan Vesely [Thu, 6 Dec 2018 22:08:32 +0000 (17:08 -0500)]
meson: Fix build setup wihtout lcms
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Øyvind Kolås [Thu, 6 Dec 2018 21:53:29 +0000 (22:53 +0100)]
tests: remove context-less debug printfs
Øyvind Kolås [Thu, 6 Dec 2018 21:34:34 +0000 (22:34 +0100)]
babl: fix building reference-fish without lcms2
Øyvind Kolås [Thu, 6 Dec 2018 21:12:09 +0000 (22:12 +0100)]
Merge branch 'jvesely/babl-master'
Øyvind Kolås [Thu, 6 Dec 2018 21:10:02 +0000 (22:10 +0100)]
tests: add code that processes a palette format with changed space
Ján Veselý [Thu, 6 Dec 2018 19:21:27 +0000 (14:21 -0500)]
Add gitlab CI configuration
Build both automake and meson using latest arch
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Ján Veselý [Thu, 6 Dec 2018 20:34:51 +0000 (15:34 -0500)]
meson: Add with-lcms option
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Ján Veselý [Thu, 6 Dec 2018 20:06:27 +0000 (15:06 -0500)]
meson: Remove duplicate rule for config.h
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Jan Vesely [Fri, 30 Nov 2018 02:16:06 +0000 (21:16 -0500)]
meson: Add missing mode-cmyk.c file to source list
Fix meson build.
Signed-off-by: Jan Vesely <jano.vesely@gmail.com>
Øyvind Kolås [Thu, 6 Dec 2018 18:19:40 +0000 (19:19 +0100)]
babl: make babl_format_with_space not crash with palette based formats
Now, both palettes referred to by their string name and palettes passed
directly in with a cast get passed through without modification, for
correct behavior their palette entries should also be re-created
(the only way to read out the palette is currently to do an exhaustive buffer
conversion.)
Øyvind Kolås [Thu, 6 Dec 2018 16:09:47 +0000 (17:09 +0100)]
babl: add babl_new_palette_with_space
Handling of space in palettes is still incomplete.
Øyvind Kolås [Thu, 6 Dec 2018 16:06:28 +0000 (17:06 +0100)]
babl: special case palette formats in babl_format_with_space
For now, re-return the original passed in format, this will as
a starter not crash - while the color management is non-functional;
the special casing will be made more elaborate with space support
in babl-palette.
Øyvind Kolås [Thu, 6 Dec 2018 09:29:01 +0000 (10:29 +0100)]
tests: fix bit-rot in palette tests
Update to use R'G'B' u8 formats, which is what is now used internally
as well well, along with updating to use the current way of creating
formats with/without transparency.
Øyvind Kolås [Wed, 5 Dec 2018 02:36:50 +0000 (03:36 +0100)]
build: do tests last, for better make check output
Øyvind Kolås [Mon, 3 Dec 2018 23:41:56 +0000 (00:41 +0100)]
tests: update cairo hack with final format names
Øyvind Kolås [Mon, 3 Dec 2018 23:18:47 +0000 (00:18 +0100)]
cairo: make mapping of cmyk subset easier
Make the mapping be RGB = CMK and RGB = CYK, only magenta and yellow
vary between them and the order remains the same, making it easier to
spot inconsitencies in code.
Øyvind Kolås [Mon, 3 Dec 2018 23:04:45 +0000 (00:04 +0100)]
cairo: move CMYK extension formats here
This adds new endian-aware formats cairo-ACMK32 and cairo-ACKY32 which are
derived from babl_format("camayakaA u8") - converting succesively with these
two formats to this format or other sharing the model permits rebuilding a
complete CMYKA image.
Øyvind Kolås [Mon, 3 Dec 2018 15:41:39 +0000 (16:41 +0100)]
babl: rename babl_model_get_flags to babl_get_model_flags
Øyvind Kolås [Mon, 3 Dec 2018 18:08:02 +0000 (19:08 +0100)]
babl: do not synthesize missing components
This permits copying to a complete format from a reduced set, only
setting the defined components. Earlier this could be achieved by
using a format with PAD for the components.
Øyvind Kolås [Sun, 2 Dec 2018 22:49:21 +0000 (23:49 +0100)]
add a format for muxing cmyk u8 in and out of rgba u8 buffers
Øyvind Kolås [Sun, 2 Dec 2018 02:09:17 +0000 (03:09 +0100)]
babl-fish-reference: do cmyk to cmyk conversions
Øyvind Kolås [Sun, 2 Dec 2018 22:48:28 +0000 (23:48 +0100)]
base: add more u8 cmyk formats
Øyvind Kolås [Sun, 2 Dec 2018 22:47:14 +0000 (23:47 +0100)]
babl: make babl_model_get_flags also accept format
perhaps it should be renamed to babl_get_model_flags since it
now operates more generically on babl pointers, it could also
work on bablimage.
Øyvind Kolås [Sun, 2 Dec 2018 18:31:45 +0000 (19:31 +0100)]
docs: remove todo item referring to CMYK
Øyvind Kolås [Sun, 2 Dec 2018 16:29:59 +0000 (17:29 +0100)]
docs: update
Øyvind Kolås [Sat, 1 Dec 2018 20:35:46 +0000 (21:35 +0100)]
base: add half version of CMYK formats
Øyvind Kolås [Sat, 1 Dec 2018 20:35:23 +0000 (21:35 +0100)]
babl: remove dead code
Øyvind Kolås [Sat, 1 Dec 2018 20:35:11 +0000 (21:35 +0100)]
babl-fish-reference: keep source/destination space in local variables
Ell [Wed, 28 Nov 2018 10:04:31 +0000 (05:04 -0500)]
*/Makefile.am: add LCMS_CFLAGS to CPPFLAGS
Since babl-space.h includes lcms2.h, we need to include LCMS_CFLAGS
everywhere that includes babl-internal.h.
Øyvind Kolås [Wed, 28 Nov 2018 01:51:51 +0000 (02:51 +0100)]
base: add linear meta-data to relevant gray model
Øyvind Kolås [Wed, 28 Nov 2018 01:17:27 +0000 (02:17 +0100)]
base: ass linear bit to rgb and ragaba models
Øyvind Kolås [Tue, 27 Nov 2018 19:41:23 +0000 (20:41 +0100)]
babl: harmonize order of fields in image/model/format
Øyvind Kolås [Tue, 27 Nov 2018 18:54:55 +0000 (19:54 +0100)]
export-symbols: add babl_model_get_flags
Øyvind Kolås [Tue, 27 Nov 2018 02:53:40 +0000 (03:53 +0100)]
tools: change debug tolerance to avoid segfaults
Øyvind Kolås [Tue, 27 Nov 2018 02:37:10 +0000 (03:37 +0100)]
babl: decrease tolerance
The following conversion is undesirable, going via linear u16 on the
way to a different TRC u16 amount of quantization should be considered
bad enough to be avoided.
chosen RGBA u32 to R'G'B'A u16: steps: 4 error: 0.000005 cost: 876.000000
/usr/local/lib/babl-0.1/u32.so 0: RGBA u32 to RGBA u16
/usr/local/lib/babl-0.1/gggl-table-lies.so 0: RGBA u16 to RGBA float
/usr/local/lib/babl-0.1/sse2-float.so 0: RGBA float to R'G'B'A float
/usr/local/lib/babl-0.1/gggl.so 0: R'G'B'A float to R'G'B'A u16
This is slower but more correct:
chosen RGBA u32 to R'G'B'A u16: steps: 3 error: 0.000000 cost: 1051.000000
/usr/local/lib/babl-0.1/simple.so 0: RGBA u32 to RGBA float
/usr/local/lib/babl-0.1/sse2-float.so 0: RGBA float to R'G'B'A float
/usr/local/lib/babl-0.1/gggl.so 0: R'G'B'A float to R'G'B'A u16
Øyvind Kolås [Mon, 26 Nov 2018 23:42:45 +0000 (00:42 +0100)]
babl.h: reorder BablModelFlag typedef and enum for C++ compatibility
Øyvind Kolås [Mon, 26 Nov 2018 23:28:15 +0000 (00:28 +0100)]
babl: add meta data to RGBA model in core
Øyvind Kolås [Mon, 26 Nov 2018 23:25:19 +0000 (00:25 +0100)]
babl: add linear model meta data
Øyvind Kolås [Mon, 26 Nov 2018 23:24:25 +0000 (00:24 +0100)]
ycbcr: add model alpha meta data
Øyvind Kolås [Mon, 26 Nov 2018 23:24:10 +0000 (00:24 +0100)]
HSV: add alpha model meta data
Øyvind Kolås [Mon, 26 Nov 2018 23:23:59 +0000 (00:23 +0100)]
HSL: add alpha model meta-data
Øyvind Kolås [Mon, 26 Nov 2018 23:22:37 +0000 (00:22 +0100)]
HCY: add alpha meta data for model
Øyvind Kolås [Mon, 26 Nov 2018 23:17:47 +0000 (00:17 +0100)]
CIE: add metadata to models