[gimp] app: cache the RGB <-> LAB fishes in gimpimage-convert.c
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: cache the RGB <-> LAB fishes in gimpimage-convert.c
- Date: Wed, 2 May 2012 16:49:21 +0000 (UTC)
commit 99c5830e8425748e7259fa0be996b595ce82af51
Author: Michael Natterer <mitch gimp org>
Date: Mon Apr 30 02:10:30 2012 +0200
app: cache the RGB <-> LAB fishes in gimpimage-convert.c
app/core/gimpimage-convert.c | 16 ++++++++++------
1 files changed, 10 insertions(+), 6 deletions(-)
---
diff --git a/app/core/gimpimage-convert.c b/app/core/gimpimage-convert.c
index 1035c4f..1b4aa39 100644
--- a/app/core/gimpimage-convert.c
+++ b/app/core/gimpimage-convert.c
@@ -304,6 +304,9 @@ ColorFreq* HIST_LIN(ColorFreq *hist_ptr,
#define BRAT (1.0F)
#endif
+static const Babl *rgb_to_lab_fish = NULL;
+static const Babl *lab_to_rgb_fish = NULL;
+
static inline
void rgb_to_unshifted_lin(const unsigned char r,
const unsigned char g,
@@ -314,9 +317,7 @@ void rgb_to_unshifted_lin(const unsigned char r,
float rgb[3] = {r/255.0, g/255.0, b/255.0};
float lab[3];
- babl_process (babl_fish (babl_format ("R'G'B' float"),
- babl_format ("CIE Lab float")),
- rgb, lab, 1);
+ babl_process (rgb_to_lab_fish, rgb, lab, 1);
/* fprintf(stderr, " %d-%d-%d -> %0.3f,%0.3f,%0.3f ", r, g, b, sL, sa, sb);*/
@@ -435,9 +436,7 @@ void lin_to_rgb(const double hr, const double hg, const double hb,
lab[1] = ig;
lab[2] = ib;
- babl_process (babl_fish (babl_format ("CIE Lab float"),
- babl_format ("R'G'B' float")),
- lab, rgb, 1);
+ babl_process (lab_to_rgb_fish, lab, rgb, 1);
*r = RINT(CLAMP(rgb[0]*255, 0.0F, 255.0F));
*g = RINT(CLAMP(rgb[1]*255, 0.0F, 255.0F));
@@ -816,6 +815,11 @@ gimp_image_convert (GimpImage *image,
{
gint i;
+ rgb_to_lab_fish = babl_fish (babl_format ("R'G'B' float"),
+ babl_format ("CIE Lab float"));
+ lab_to_rgb_fish = babl_fish (babl_format ("CIE Lab float"),
+ babl_format ("R'G'B' float"));
+
/* fprintf(stderr, " TO INDEXED(%d) ", num_cols); */
/* don't dither if the input is grayscale and we are simply
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]