[Rawstudio-commit] r3204 - trunk/plugins/load-gdk

Anders Brander anders at brander.dk
Sat Feb 13 12:24:00 CET 2010


Author: abrander
Date: 2010-02-13 12:23:59 +0100 (Sat, 13 Feb 2010)
New Revision: 3204

Modified:
   trunk/plugins/load-gdk/load-gdk.c
Log:
Only initialize gamma table once.

Modified: trunk/plugins/load-gdk/load-gdk.c
===================================================================
--- trunk/plugins/load-gdk/load-gdk.c	2010-02-13 11:12:18 UTC (rev 3203)
+++ trunk/plugins/load-gdk/load-gdk.c	2010-02-13 11:23:59 UTC (rev 3204)
@@ -20,6 +20,8 @@
 #include <rawstudio.h>
 #include <math.h> /* pow() */
 
+static gushort gammatable[256];
+
 /**
  * Open an image using the GDK-engine
  * @param filename The filename to open
@@ -33,19 +35,10 @@
 	guchar *pixels;
 	gint rowstride;
 	gint width, height;
-	gint row,col,n,res, src, dest;
-	gdouble nd;
-	gushort gammatable[256];
+	gint row,col, src, dest;
 	gint alpha=0;
 	if ((pixbuf = gdk_pixbuf_new_from_file(filename, NULL)))
 	{
-		for(n=0;n<256;n++)
-		{
-			nd = ((gdouble) n) / 255.0;
-			res = (gint) (pow(nd, GAMMA) * 65535.0);
-			_CLAMP65535(res);
-			gammatable[n] = res;
-		}
 		rowstride = gdk_pixbuf_get_rowstride(pixbuf);
 		pixels = gdk_pixbuf_get_pixels(pixbuf);
 		width = gdk_pixbuf_get_width(pixbuf);
@@ -62,7 +55,7 @@
 				image->pixels[dest++] = gammatable[pixels[src++]];
 				image->pixels[dest++] = gammatable[pixels[src++]];
 				image->pixels[dest++] = gammatable[pixels[src++]];
-				image->pixels[dest++] = gammatable[pixels[src-2]];
+				dest++;
 				src+=alpha;
 			}
 		}
@@ -81,6 +74,17 @@
 G_MODULE_EXPORT void
 rs_plugin_load(RSPlugin *plugin)
 {
+	gint n, res;
+	gdouble nd;
+
+	for(n=0;n<256;n++)
+	{
+		nd = ((gdouble) n) / 255.0;
+		res = (gint) (pow(nd, GAMMA) * 65535.0);
+		_CLAMP65535(res);
+		gammatable[n] = res;
+	}
+
 	rs_filetype_register_loader(".jpg", "JPEG", load_gdk, 10, RS_LOADER_FLAGS_8BIT);
 	rs_filetype_register_loader(".png", "JPEG", load_gdk, 10, RS_LOADER_FLAGS_8BIT);
 	rs_filetype_register_loader(".tif", "JPEG", load_gdk, 20, RS_LOADER_FLAGS_8BIT);




More information about the Rawstudio-commit mailing list