[babl] babl: get rid of RGB_LUMINANCE constants
- From: Øyvind Kolås <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [babl] babl: get rid of RGB_LUMINANCE constants
- Date: Sat, 19 Aug 2017 01:19:10 +0000 (UTC)
commit 65275eca3af4fb4bdd646ce152bfca25fbdbea9e
Author: Øyvind Kolås <pippin gimp org>
Date: Sat Aug 19 03:18:29 2017 +0200
babl: get rid of RGB_LUMINANCE constants
babl/babl-format.c | 2 +-
babl/babl-space.c | 5 +++++
babl/babl.h | 4 ++++
babl/base/model-gray.c | 23 ++++++++++++++++++++++-
babl/base/rgb-constants.h | 32 --------------------------------
extensions/grey.c | 22 +++++++++++++++-------
6 files changed, 47 insertions(+), 41 deletions(-)
---
diff --git a/babl/babl-format.c b/babl/babl-format.c
index a2c8e17..6a7ebb2 100644
--- a/babl/babl-format.c
+++ b/babl/babl-format.c
@@ -104,7 +104,7 @@ format_new (const char *name,
if (space == babl_space ("sRGB"))
babl->format.model = model;
else
- babl->format.model = babl_remodel_with_space (model, space);
+ babl->format.model = (void*)babl_remodel_with_space ((void*)model, space);
memcpy (babl->format.component, component, sizeof (BablComponent *) * components);
memcpy (babl->format.type, type, sizeof (BablType *) * components);
diff --git a/babl/babl-space.c b/babl/babl-space.c
index 2d51d54..e6ef5ed 100644
--- a/babl/babl-space.c
+++ b/babl/babl-space.c
@@ -329,3 +329,8 @@ void babl_space_from_xyz (const Babl *space, const double *xyz, double *rgb)
{
_babl_space_from_xyz (space, xyz, rgb);
}
+
+double * babl_space_get_rgbtoxyz (const Babl *space)
+{
+ return space->space.RGBtoXYZ;
+}
diff --git a/babl/babl.h b/babl/babl.h
index c227703..e24640e 100644
--- a/babl/babl.h
+++ b/babl/babl.h
@@ -122,6 +122,10 @@ const Babl * babl_space_rgb_chromaticities (const char *name,
const Babl *trc_green,
const Babl *trc_blue);
+double * babl_space_get_rgbtoxyz (const Babl *space);
+void babl_space_to_xyz (const Babl *space, const double *rgb, double *xyz);
+void babl_space_from_xyz (const Babl *space, const double *xyz, double *rgb);
+
/**
* babl_format:
*
diff --git a/babl/base/model-gray.c b/babl/base/model-gray.c
index 16b1811..36eff16 100644
--- a/babl/base/model-gray.c
+++ b/babl/base/model-gray.c
@@ -22,7 +22,6 @@
#include "babl-classes.h"
#include "babl.h"
#include "babl-ids.h"
-#include "rgb-constants.h"
#include "math.h"
#include "babl-base.h"
@@ -114,6 +113,11 @@ rgba_to_graya (Babl *conversion,
char *dst,
long n)
{
+ const Babl *space = babl_conversion_get_source_space (conversion);
+ double RGB_LUMINANCE_RED = space->space.RGBtoXYZ[3];
+ double RGB_LUMINANCE_GREEN = space->space.RGBtoXYZ[4];
+ double RGB_LUMINANCE_BLUE = space->space.RGBtoXYZ[5];
+
while (n--)
{
double red, green, blue;
@@ -143,6 +147,11 @@ rgba_to_gray (Babl *conversion,
char *dst,
long n)
{
+ const Babl *space = babl_conversion_get_source_space (conversion);
+ double RGB_LUMINANCE_RED = space->space.RGBtoXYZ[3];
+ double RGB_LUMINANCE_GREEN = space->space.RGBtoXYZ[4];
+ double RGB_LUMINANCE_BLUE = space->space.RGBtoXYZ[5];
+
while (n--)
{
double red, green, blue;
@@ -176,6 +185,10 @@ rgb_to_gray_2_2 (Babl *conversion,
{
const Babl *space = babl_conversion_get_destination_space (conversion);
const Babl *trc = space->space.trc[0];
+ double RGB_LUMINANCE_RED = space->space.RGBtoXYZ[3];
+ double RGB_LUMINANCE_GREEN = space->space.RGBtoXYZ[4];
+ double RGB_LUMINANCE_BLUE = space->space.RGBtoXYZ[5];
+
BABL_PLANAR_SANITY
while (n--)
{
@@ -352,6 +365,11 @@ rgba_to_gray_alpha_premultiplied (Babl *conversion,
int *dst_pitch,
long n)
{
+ const Babl *space = babl_conversion_get_source_space (conversion);
+ double RGB_LUMINANCE_RED = space->space.RGBtoXYZ[3];
+ double RGB_LUMINANCE_GREEN = space->space.RGBtoXYZ[4];
+ double RGB_LUMINANCE_BLUE = space->space.RGBtoXYZ[5];
+
BABL_PLANAR_SANITY;
assert (src_bands == 4);
assert (dst_bands == 2);
@@ -450,6 +468,9 @@ rgba2gray_gamma_2_2_premultiplied (Babl *conversion,
{
const Babl *space = babl_conversion_get_destination_space (conversion);
const Babl *trc = space->space.trc[0];
+ double RGB_LUMINANCE_RED = space->space.RGBtoXYZ[3];
+ double RGB_LUMINANCE_GREEN = space->space.RGBtoXYZ[4];
+ double RGB_LUMINANCE_BLUE = space->space.RGBtoXYZ[5];
while (n--)
{
diff --git a/extensions/grey.c b/extensions/grey.c
index b394064..f997dd8 100644
--- a/extensions/grey.c
+++ b/extensions/grey.c
@@ -22,7 +22,6 @@
#include "babl.h"
#include "base/util.h"
-#include "base/rgb-constants.h"
#include "extensions/util.h"
/* There was some debate on #gimp about whether these constants
@@ -32,18 +31,17 @@
*/
/* Float versions of the double constants in rgb-constants.h */
-static const float RGB_LUMINANCE_RED_FLOAT = RGB_LUMINANCE_RED;
-static const float RGB_LUMINANCE_GREEN_FLOAT = RGB_LUMINANCE_GREEN;
-static const float RGB_LUMINANCE_BLUE_FLOAT = RGB_LUMINANCE_BLUE;
static long
conv_rgbaF_linear_y8_linear (const Babl *conversion,unsigned char *src,
unsigned char *dst,
long samples)
{
- static const float RGB_LUMINANCE_RED_FLOAT = RGB_LUMINANCE_RED;
- static const float RGB_LUMINANCE_GREEN_FLOAT = RGB_LUMINANCE_GREEN;
- static const float RGB_LUMINANCE_BLUE_FLOAT = RGB_LUMINANCE_BLUE;
+ const Babl *space = babl_conversion_get_source_space (conversion);
+ double *rgbtoxyz = babl_space_get_rgbtoxyz (space);
+ const float RGB_LUMINANCE_RED_FLOAT = rgbtoxyz[3];
+ const float RGB_LUMINANCE_GREEN_FLOAT = rgbtoxyz[4];
+ const float RGB_LUMINANCE_BLUE_FLOAT = rgbtoxyz[5];
float *s = (float *) src;
long n = samples;
@@ -69,6 +67,11 @@ conv_rgbaF_linear_yF_linear (const Babl *conversion,unsigned char *src,
unsigned char *dst,
long samples)
{
+ const Babl *space = babl_conversion_get_source_space (conversion);
+ double *rgbtoxyz = babl_space_get_rgbtoxyz (space);
+ const float RGB_LUMINANCE_RED_FLOAT = rgbtoxyz[3];
+ const float RGB_LUMINANCE_GREEN_FLOAT = rgbtoxyz[4];
+ const float RGB_LUMINANCE_BLUE_FLOAT = rgbtoxyz[5];
float *s = (float *) src;
float *d = (float *) dst;
@@ -92,6 +95,11 @@ conv_rgbaF_linear_yaF_linear (const Babl *conversion,unsigned char *src,
unsigned char *dst,
long samples)
{
+ const Babl *space = babl_conversion_get_source_space (conversion);
+ double *rgbtoxyz = babl_space_get_rgbtoxyz (space);
+ const float RGB_LUMINANCE_RED_FLOAT = rgbtoxyz[3];
+ const float RGB_LUMINANCE_GREEN_FLOAT = rgbtoxyz[4];
+ const float RGB_LUMINANCE_BLUE_FLOAT = rgbtoxyz[5];
float *s = (float *) src;
float *d = (float *) dst;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]