[fusion-commits] Jpeg image loader plugin: Changes to 'master' (49c2e054966238e595f34ae567b636c1082591ff)

maniac at server.beryl-project.org maniac at server.beryl-project.org
Sun Aug 5 20:46:03 CEST 2007


New commits:
commit 49c2e054966238e595f34ae567b636c1082591ff
Author: Danny Baumann <dannybaumann at web.de>
Date:   Sun Aug 5 18:25:08 2007 +0200

    Compiz indention style & cleanups.


 imgjpeg.c |  525 ++++++++++++++++++++++++++++++++-----------------------------
 1 files changed, 273 insertions(+), 252 deletions(-)


Modified: fusion/plugins/jpeg/imgjpeg.c
===================================================================
--- fusion/plugins/jpeg/imgjpeg.c
+++ fusion/plugins/jpeg/imgjpeg.c
@@ -19,6 +19,7 @@
  *
  */
 
+#define _GNU_SOURCE
 #include <string.h>
 #include <ctype.h>
 #include <stdio.h>
@@ -32,8 +33,8 @@ static int displayPrivateIndex;
 
 typedef struct _JPEGDisplay
 {
-	FileToImageProc fileToImage;
-	ImageToFileProc imageToFile;
+    FileToImageProc fileToImage;
+    ImageToFileProc imageToFile;
 } JPEGDisplay;
 
 #define GET_JPEG_DISPLAY(d)				    \
@@ -42,343 +43,363 @@ typedef struct _JPEGDisplay
 #define JPEG_DISPLAY(d)			 \
     JPEGDisplay *jd = GET_JPEG_DISPLAY (d)
 
-#define NUM_OPTIONS(d) (sizeof ((d)->opt) / sizeof (CompOption))
-
-static Bool rgbToBGRA(const JSAMPLE * source, void **data, int height,
-					  int width, int alpha)
+static Bool
+rgbToBGRA (const JSAMPLE *source,
+	   void          **data,
+	   int           height,
+	   int           width,
+	   int           alpha)
 {
-	int h, w;
-	char *dest;
+    int  h, w;
+    char *dest;
 
-	dest = malloc(height * width * 4);
-	if (!dest)
-		return FALSE;
+    dest = malloc (height * width * 4);
+    if (!dest)
+	return FALSE;
 
-	*data = dest;
+    *data = dest;
 
-	for (h = 0; h < height; h++)
-		for (w = 0; w < width; w++)
-		{
-			dest[((h * width + w) * 4) + 0] = source[((h * width + w) * 3) + 2];	//B
-			dest[((h * width + w) * 4) + 1] = source[((h * width + w) * 3) + 1];	//G
-			dest[((h * width + w) * 4) + 2] = source[((h * width + w) * 3) + 0];	//R
-			dest[((h * width + w) * 4) + 3] = alpha;
-		}
+    for (h = 0; h < height; h++)
+	for (w = 0; w < width; w++)
+	{
+	    int pos = h * width + w;
+	    dest[(pos * 4) + 0] = source[(pos * 3) + 2];    /* blue */
+	    dest[(pos * 4) + 1] = source[(pos * 3) + 1];    /* green */
+	    dest[(pos * 4) + 2] = source[(pos * 3) + 0];    /* red */
+	    dest[(pos * 4) + 3] = alpha;
+	}
 
-	return TRUE;
+    return TRUE;
 }
 
-static Bool rgbaToRGB(char *source, JSAMPLE ** dest, int height, int width,
-					  int stride)
+static Bool
+rgbaToRGB (char    *source,
+	   JSAMPLE **dest,
+	   int     height,
+	   int     width,
+	   int     stride)
 {
-	int h, w;
-	int ps = stride / width;	/* pixel size */
-	JSAMPLE *d;
+    int     h, w;
+    int     ps = stride / width;	/* pixel size */
+    JSAMPLE *d;
 
-	d = malloc(height * width * 3 * sizeof(JSAMPLE));
-	if (!d)
-		return FALSE;
+    d = malloc (height * width * 3 * sizeof (JSAMPLE));
+    if (!d)
+	return FALSE;
 
-	*dest = d;
+    *dest = d;
 
-	for (h = 0; h < height; h++)
-		for (w = 0; w < width; w++)
-		{
-			d[((h * width + w) * 3) + 0] = source[((h * width + w) * ps) + 0];	//R
-			d[((h * width + w) * 3) + 1] = source[((h * width + w) * ps) + 1];	//G
-			d[((h * width + w) * 3) + 2] = source[((h * width + w) * ps) + 2];	//B
-		}
+    for (h = 0; h < height; h++)
+	for (w = 0; w < width; w++)
+	{
+	    int pos = h * width + w;
+	    d[(pos * 3) + 0] = source[(pos * ps) + 0];	/* red */
+    	    d[(pos * 3) + 1] = source[(pos * ps) + 1];	/* green */
+    	    d[(pos * 3) + 2] = source[(pos * ps) + 2];	/* blue */
+	}
 
-	return TRUE;
+    return TRUE;
 }
 
-static Bool readJPEGFileToImage(FILE * file, int *width, int *height,
-								void **data)
+static Bool
+readJPEGFileToImage (FILE *file,
+		     int  *width,
+		     int  *height,
+		     void **data)
 {
-	struct jpeg_decompress_struct cinfo;
-	struct jpeg_error_mgr jerr;
-	JSAMPLE *buf;
-	JSAMPROW *rows;
-	int i;
+    struct jpeg_decompress_struct cinfo;
+    struct jpeg_error_mgr         jerr;
+    JSAMPLE                       *buf;
+    JSAMPROW                      *rows;
+    int                           i;
+    Bool                          result;
 
-	if (!file)
-		return FALSE;
+    if (!file)
+	return FALSE;
 
-	cinfo.err = jpeg_std_error(&jerr);
+    cinfo.err = jpeg_std_error (&jerr);
 
-	jpeg_create_decompress(&cinfo);
+    jpeg_create_decompress (&cinfo);
 
-	jpeg_stdio_src(&cinfo, file);
-	jpeg_read_header(&cinfo, TRUE);
+    jpeg_stdio_src (&cinfo, file);
+    jpeg_read_header (&cinfo, TRUE);
 
-	cinfo.out_color_space = JCS_RGB;
+    cinfo.out_color_space = JCS_RGB;
 
-	jpeg_start_decompress(&cinfo);
+    jpeg_start_decompress (&cinfo);
 
-	*height = cinfo.output_height;
-	*width = cinfo.output_width;
+    *height = cinfo.output_height;
+    *width = cinfo.output_width;
 
-	buf = malloc(cinfo.output_height * cinfo.output_width *
-				 cinfo.output_components * sizeof(JSAMPLE));
-	if (!buf)
-		return FALSE;
+    buf = malloc (cinfo.output_height * cinfo.output_width *
+ 		  cinfo.output_components * sizeof (JSAMPLE));
+    if (!buf)
+    {
+	jpeg_finish_decompress (&cinfo);
+	jpeg_destroy_decompress (&cinfo);
+	return FALSE;
+    }
 
-	rows = malloc(cinfo.output_height * sizeof(JSAMPROW));
-	if (!rows)
-	{
-		free(buf);
-		return FALSE;
-	}
+    rows = malloc (cinfo.output_height * sizeof (JSAMPROW));
+    if (!rows)
+    {
+	free (buf);
+	jpeg_finish_decompress (&cinfo);
+	jpeg_destroy_decompress (&cinfo);
+	return FALSE;
+    }
 
-	for (i = 0; i < cinfo.output_height; i++)
-		rows[i] = &buf[i * cinfo.output_width * cinfo.output_components];
+    for (i = 0; i < cinfo.output_height; i++)
+	rows[i] = &buf[i * cinfo.output_width * cinfo.output_components];
 
-	while (cinfo.output_scanline < cinfo.output_height)
-		jpeg_read_scanlines(&cinfo, &rows[cinfo.output_scanline],
-							cinfo.output_height - cinfo.output_scanline);
+    while (cinfo.output_scanline < cinfo.output_height)
+	jpeg_read_scanlines (&cinfo, &rows[cinfo.output_scanline],
+			     cinfo.output_height - cinfo.output_scanline);
 
-	jpeg_finish_decompress(&cinfo);
-	jpeg_destroy_decompress(&cinfo);
+    jpeg_finish_decompress (&cinfo);
+    jpeg_destroy_decompress (&cinfo);
 
-	// convert the rgb data into BGRA format
-	if (!rgbToBGRA(buf, data, *height, *width, 255))
-	{
-		free(rows);
-		free(buf);
-		return FALSE;
-	}
+    /* convert the rgb data into BGRA format */
+    result = rgbToBGRA (buf, data, *height, *width, 255);
 
-	free(rows);
-	free(buf);
-	return TRUE;
+    free (rows);
+    free(buf);
+    return result;
 }
 
-static Bool writeJPEG(CompDisplay * d, void *buffer, FILE * file,
-					  int width, int height, int stride)
+static Bool
+writeJPEG (CompDisplay *d,
+	   void        *buffer,
+	   FILE        *file,
+	   int         width,
+	   int         height,
+	   int         stride)
 {
-	struct jpeg_compress_struct cinfo;
-	struct jpeg_error_mgr jerr;
-	JSAMPROW row_pointer[1];
-	JSAMPLE *data;
+    struct jpeg_compress_struct cinfo;
+    struct jpeg_error_mgr       jerr;
+    JSAMPROW                    row_pointer[1];
+    JSAMPLE                     *data;
 
-	// convert the rgb data into BGRA format
-	if (!rgbaToRGB(buffer, &data, height, width, stride))
-		return FALSE;
+    /* convert the rgb data into BGRA format */
+    if (!rgbaToRGB (buffer, &data, height, width, stride))
+	return FALSE;
 
-	cinfo.err = jpeg_std_error(&jerr);
-	jpeg_create_compress(&cinfo);
+    cinfo.err = jpeg_std_error (&jerr);
+    jpeg_create_compress (&cinfo);
 
-	jpeg_stdio_dest(&cinfo, file);
+    jpeg_stdio_dest (&cinfo, file);
 
-	cinfo.image_width = width;
-	cinfo.image_height = height;
-	cinfo.input_components = 3;
-	cinfo.in_color_space = JCS_RGB;
+    cinfo.image_width      = width;
+    cinfo.image_height     = height;
+    cinfo.input_components = 3;
+    cinfo.in_color_space   = JCS_RGB;
 
-	jpeg_set_defaults(&cinfo);
-	jpeg_set_quality(&cinfo, imgjpegGetQuality(d), TRUE);
-	jpeg_start_compress(&cinfo, TRUE);
+    jpeg_set_defaults (&cinfo);
+    jpeg_set_quality (&cinfo, imgjpegGetQuality(d), TRUE);
+    jpeg_start_compress (&cinfo, TRUE);
 
-	while (cinfo.next_scanline < cinfo.image_height)
-	{
-		row_pointer[0] =
-				&data[(cinfo.image_height - cinfo.next_scanline -
-					   1) * width * 3];
-		jpeg_write_scanlines(&cinfo, row_pointer, 1);
-	}
+    while (cinfo.next_scanline < cinfo.image_height)
+    {
+	row_pointer[0] =
+	    &data[(cinfo.image_height - cinfo.next_scanline - 1) * width * 3];
+	jpeg_write_scanlines (&cinfo, row_pointer, 1);
+    }
 
-	jpeg_finish_compress(&cinfo);
-	jpeg_destroy_compress(&cinfo);
+    jpeg_finish_compress (&cinfo);
+    jpeg_destroy_compress (&cinfo);
 
-	free(data);
+    free (data);
 
-	return TRUE;
+    return TRUE;
 }
 
-// Turns the path & name into a real, absolute path
-// No extensions jiggery-pokery here, as JPEGs can be
-// .jpg or .jpeg - or, indeed, whatever.
-// Deals with the path, regardless of what it's passed.
-static char *createFilename(const char *path, const char *name)
+/* Turns the path & name into a real, absolute path
+   No extensions jiggery-pokery here, as JPEGs can be
+   .jpg or .jpeg - or, indeed, whatever.
+   Deals with the path, regardless of what it's passed. */
+static char*
+createFilename (const char *path,
+		const char *name)
 {
-	int len;
-	char *filename = NULL;
-
-	if (path && !name)
-		len = strlen(path) + 2;
-	else if (!path && name)
-		len = strlen(name) + 2;
-	else if (path && name)
-		len = strlen(path) + strlen(name) + 2;
-	else
-		return NULL;
-
-	filename = malloc(len);
-	if (!filename)
-		return NULL;
-
-	if (path && !name)
-		sprintf(filename, "%s", path);
-	else if (!path && name)
-		sprintf(filename, "%s", name);
-	else
-		sprintf(filename, "%s/%s", path, name);
-
-	return filename;
-}
+    char *filename = NULL;
 
-static Bool JPEGImageToFile(CompDisplay * d,
-							const char *path,
-							const char *name,
-							const char *format,
-							int width, int height, int stride, void *data)
-{
-	Bool status = FALSE;
-
-	// Not a JPEG
-	if (strcasecmp(format, "jpeg") != 0 && strcasecmp(format, "jpg") != 0)
-	{
-		JPEG_DISPLAY(d);
-		UNWRAP(jd, d, imageToFile);
-		status = (*d->imageToFile) (d, path, name, format, width, height,
-									stride, data);
-		WRAP(jd, d, imageToFile, JPEGImageToFile);
-		return status;
-	}
+    if (path && !name)
+	asprintf (&filename, "%s", path);
+    else if (!path && name)
+	asprintf (&filename, "%s", name);
+    else
+	asprintf (&filename, "%s/%s", path, name);
 
-	// Is a JPEG
-	char *filename = createFilename(path, name);
-
-	if (!filename)
-		return FALSE;
-
-	FILE *file = fopen(filename, "wb");
-
-	if (file)
-	{
-		status = writeJPEG(d, data, file, width, height, stride);
-		fclose(file);
-	}
+    return filename;
+}
 
-	free(filename);
+static Bool
+JPEGImageToFile (CompDisplay *d,
+		 const char  *path,
+		 const char  *name,
+		 const char  *format,
+		 int         width,
+		 int         height,
+		 int         stride,
+		 void        *data)
+{
+    Bool status = FALSE;
+    char *fileName;
+    FILE *file;
+
+    /* Not a JPEG */
+    if (strcasecmp (format, "jpeg") != 0 && strcasecmp (format, "jpg") != 0)
+    {
+	JPEG_DISPLAY (d);
+	UNWRAP (jd, d, imageToFile);
+	status = (*d->imageToFile) (d, path, name, format,
+				    width, height, stride, data);
+	WRAP (jd, d, imageToFile, JPEGImageToFile);
 	return status;
+    }
+
+    /* Is a JPEG */
+    fileName = createFilename (path, name);
+    if (!fileName)
+	return FALSE;
+
+    file = fopen (fileName, "wb");
+    if (file)
+    {
+	status = writeJPEG (d, data, file, width, height, stride);
+	fclose (file);
+    }
+
+    free (fileName);
+    return status;
 }
 
-static Bool JPEGFileToImage(CompDisplay * d,
-							const char *path,
-							const char *name,
-							int *width, int *height, int *stride, void **data)
+static Bool
+JPEGFileToImage (CompDisplay *d,
+		 const char  *path,
+		 const char  *name,
+		 int         *width,
+		 int         *height,
+		 int         *stride,
+		 void        **data)
 {
-	Bool status = FALSE;
-
-	char *filename = createFilename(path, name);
+    Bool status = FALSE;
+    char *fileName, *extension;
 
-	if (!filename)
-		return FALSE;
+    JPEG_DISPLAY (d);
 
-	// Do some testing here to see if it's got a .jpg or .jpeg extension
-	char *extension = strrchr(filename, '.');
+    fileName = createFilename (path, name);
+    if (!fileName)
+	return FALSE;
 
-	if (extension)
+    /* Do some testing here to see if it's got a .jpg or .jpeg extension */
+    extension = strrchr (fileName, '.');
+    if (extension)
+    {
+	if (strcasecmp (extension, ".jpeg") == 0 ||
+	    strcasecmp (extension, ".jpg") == 0)
 	{
-		if (strcasecmp(extension, ".jpeg") == 0 ||
-			strcasecmp(extension, ".jpg") == 0)
+	    FILE *file;
+	    
+	    file = fopen (fileName, "rb");
+	    if (file)
+	    {
+		status = readJPEGFileToImage (file, width, height, data);
+		fclose (file);
+
+		if (status)		/* Success! */
 		{
-			FILE *file = fopen(filename, "rb");
-
-			if (file)
-			{
-				status = readJPEGFileToImage(file, width, height, data);
-				fclose(file);
-
-				if (status)		// Success!
-				{
-					free(filename);
-					*stride = *width * 4;
-					return TRUE;
-				}
-			}
+		    free (fileName);
+    		    *stride = *width * 4;
+		    return TRUE;
 		}
+	    }
 	}
+    }
+    free (fileName);
 
-	free(filename);
+    /* Isn't a JPEG - pass to the next in the chain. */
+    UNWRAP (jd, d, fileToImage);
+    status = (*d->fileToImage) (d, path, name, width, height, stride, data);
+    WRAP (jd, d, fileToImage, JPEGFileToImage);
 
-	// Isn't a JPEG - pass to the next in the chain.
-	JPEG_DISPLAY(d);
-
-	UNWRAP(jd, d, fileToImage);
-	status = (*d->fileToImage) (d, path, name, width, height, stride, data);
-	WRAP(jd, d, fileToImage, JPEGFileToImage);
-
-	return status;
+    return status;
 }
 
-static Bool JPEGInitDisplay(CompPlugin * p, CompDisplay * d)
+static Bool
+JPEGInitDisplay (CompPlugin  *p,
+		 CompDisplay *d)
 {
-	JPEGDisplay *jd;
+    JPEGDisplay *jd;
 
-	jd = malloc(sizeof(JPEGDisplay));
-	if (!jd)
-		return FALSE;
+    jd = malloc (sizeof (JPEGDisplay));
+    if (!jd)
+	return FALSE;
 
-	WRAP(jd, d, fileToImage, JPEGFileToImage);
-	WRAP(jd, d, imageToFile, JPEGImageToFile);
+    WRAP (jd, d, fileToImage, JPEGFileToImage);
+    WRAP (jd, d, imageToFile, JPEGImageToFile);
 
-	d->privates[displayPrivateIndex].ptr = jd;
+    d->privates[displayPrivateIndex].ptr = jd;
 
-	return TRUE;
+    return TRUE;
 }
 
-static void JPEGFiniDisplay(CompPlugin * p, CompDisplay * d)
+static void
+JPEGFiniDisplay (CompPlugin  *p,
+		 CompDisplay *d)
 {
-	JPEG_DISPLAY(d);
+    JPEG_DISPLAY (d);
 
-	UNWRAP(jd, d, fileToImage);
-	UNWRAP(jd, d, imageToFile);
+    UNWRAP (jd, d, fileToImage);
+    UNWRAP (jd, d, imageToFile);
 
-	free(jd);
+    free (jd);
 }
 
 
-static Bool JPEGInit(CompPlugin * p)
+static Bool
+JPEGInit (CompPlugin *p)
 {
-	displayPrivateIndex = allocateDisplayPrivateIndex();
-	if (displayPrivateIndex < 0)
-		return FALSE;
+    displayPrivateIndex = allocateDisplayPrivateIndex ();
+    if (displayPrivateIndex < 0)
+	return FALSE;
 
-	return TRUE;
+    return TRUE;
 }
 
-static void JPEGFini(CompPlugin * p)
+static void
+JPEGFini (CompPlugin *p)
 {
-	if (displayPrivateIndex >= 0)
-		freeDisplayPrivateIndex(displayPrivateIndex);
+    freeDisplayPrivateIndex (displayPrivateIndex);
 }
 
-static int JPEGGetVersion(CompPlugin * p, int version)
+static int
+JPEGGetVersion (CompPlugin *p,
+		int        version)
 {
-	return ABIVERSION;
+    return ABIVERSION;
 }
 
 CompPluginVTable JPEGVTable = {
-	"imgjpeg",
-	JPEGGetVersion,
-	0,
-	JPEGInit,
-	JPEGFini,
-	JPEGInitDisplay,
-	JPEGFiniDisplay,
-	0,
-	0,
-	0,
-	0,
-	0,
-	0,
-	0,
-	0
+    "imgjpeg",
+    JPEGGetVersion,
+    0,
+    JPEGInit,
+    JPEGFini,
+    JPEGInitDisplay,
+    JPEGFiniDisplay,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0
 };
 
-CompPluginVTable *getCompPluginInfo(void)
+CompPluginVTable*
+getCompPluginInfo (void)
 {
-	return &JPEGVTable;
+    return &JPEGVTable;
 }


More information about the commits mailing list