This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project wmaker-crm.git.
The branch, next has been updated
via 1e06e1e29bb47dbffc31910d45f01e7d55ea3b39 (commit)
via 4005557bb3d1c46fd67bc190d2927d1ebec7a14a (commit)
from 556b0d77a1414f47b3dbf467de2841ee79db3b04 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://repo.or.cz/w/wmaker-crm.git/commit/1e06e1e29bb47dbffc31910d45f01e7d55ea3b39
commit 1e06e1e29bb47dbffc31910d45f01e7d55ea3b39
Author: David Maciejak <[email protected]>
Date: Tue Aug 26 23:02:35 2014 +0800
wrlib: remove duplicate code from xpm support
This patch is removing the duplicate code by
using functions create_rimage_xpm and is_xpm_error
previously created.
diff --git a/wrlib/load_xpm.c b/wrlib/load_xpm.c
index 8f32bee1..8f3592d1 100644
--- a/wrlib/load_xpm.c
+++ b/wrlib/load_xpm.c
@@ -146,241 +146,33 @@ static int is_xpm_error(int status)
}
return 1;
}
-RImage *RGetImageFromXPMData(RContext * context, char **xpmData)
+
+RImage *RGetImageFromXPMData(RContext *context, char **xpmData)
{
- Display *dpy = context->dpy;
- Colormap cmap = context->cmap;
RImage *image;
XpmImage xpm;
- unsigned char *color_table[4];
- unsigned char *data;
- int *p;
- int i;
+ int status;
- i = XpmCreateXpmImageFromData(xpmData, &xpm, (XpmInfo *) NULL);
- if (i != XpmSuccess) {
- switch (i) {
- case XpmOpenFailed:
- RErrorCode = RERR_OPEN;
- break;
- case XpmFileInvalid:
- RErrorCode = RERR_BADIMAGEFILE;
- break;
- case XpmNoMemory:
- RErrorCode = RERR_NOMEMORY;
- break;
- default:
- RErrorCode = RERR_BADIMAGEFILE;
- break;
- }
+ status = XpmCreateXpmImageFromData(xpmData, &xpm, (XpmInfo *) NULL);
+ if (is_xpm_error(status))
return NULL;
- }
- if (xpm.height < 1 || xpm.width < 1) {
- RErrorCode = RERR_BADIMAGEFILE;
- XpmFreeXpmImage(&xpm);
- return NULL;
- }
- if (xpm.colorTable == NULL) {
- RErrorCode = RERR_BADIMAGEFILE;
- XpmFreeXpmImage(&xpm);
- return NULL;
- }
- image = RCreateImage(xpm.width, xpm.height, True);
- if (!image) {
- XpmFreeXpmImage(&xpm);
- return NULL;
- }
-
- /* make color table */
- for (i = 0; i < 4; i++) {
- color_table[i] = malloc(xpm.ncolors * sizeof(unsigned char));
- if (!color_table[i]) {
- for (i = i - 1; i >= 0; i--) {
- if (color_table[i])
- free(color_table[i]);
- }
- RReleaseImage(image);
- RErrorCode = RERR_NOMEMORY;
- XpmFreeXpmImage(&xpm);
- return NULL;
- }
- }
-
- for (i = 0; i < xpm.ncolors; i++) {
- XColor xcolor;
- char *color = NULL;
-
- if (xpm.colorTable[i].c_color)
- color = xpm.colorTable[i].c_color;
- else if (xpm.colorTable[i].g_color)
- color = xpm.colorTable[i].g_color;
- else if (xpm.colorTable[i].g4_color)
- color = xpm.colorTable[i].g4_color;
- else if (xpm.colorTable[i].m_color)
- color = xpm.colorTable[i].m_color;
- else if (xpm.colorTable[i].symbolic)
- color = xpm.colorTable[i].symbolic;
-
- if (!color) {
- color_table[0][i] = 0xbe;
- color_table[1][i] = 0xbe;
- color_table[2][i] = 0xbe;
- color_table[3][i] = 0xff;
- continue;
- }
-
- if (strncmp(color, "None", 4) == 0) {
- color_table[0][i] = 0;
- color_table[1][i] = 0;
- color_table[2][i] = 0;
- color_table[3][i] = 0;
- continue;
- }
- if (XParseColor(dpy, cmap, color, &xcolor)) {
- color_table[0][i] = xcolor.red >> 8;
- color_table[1][i] = xcolor.green >> 8;
- color_table[2][i] = xcolor.blue >> 8;
- color_table[3][i] = 0xff;
- } else {
- color_table[0][i] = 0xbe;
- color_table[1][i] = 0xbe;
- color_table[2][i] = 0xbe;
- color_table[3][i] = 0xff;
- }
- }
- /* convert pixmap to RImage */
- p = (int *)xpm.data;
- data = image->data;
- for (i = 0; i < xpm.width * xpm.height; i++) {
- *(data++) = color_table[0][*p];
- *(data++) = color_table[1][*p];
- *(data++) = color_table[2][*p];
- *(data++) = color_table[3][*p];
- p++;
- }
- for (i = 0; i < 4; i++) {
- free(color_table[i]);
- }
+ image = create_rimage_from_xpm(context, xpm);
XpmFreeXpmImage(&xpm);
return image;
}
-RImage *RLoadXPM(RContext * context, const char *file)
+RImage *RLoadXPM(RContext *context, const char *file)
{
- Display *dpy = context->dpy;
- Colormap cmap = context->cmap;
RImage *image;
XpmImage xpm;
- unsigned char *color_table[4];
- unsigned char *data;
- int *p;
- int i;
+ int status;
- i = XpmReadFileToXpmImage((char *)file, &xpm, (XpmInfo *) NULL);
- if (i != XpmSuccess) {
- switch (i) {
- case XpmOpenFailed:
- RErrorCode = RERR_OPEN;
- break;
- case XpmFileInvalid:
- RErrorCode = RERR_BADIMAGEFILE;
- break;
- case XpmNoMemory:
- RErrorCode = RERR_NOMEMORY;
- break;
- default:
- RErrorCode = RERR_BADIMAGEFILE;
- break;
- }
- return NULL;
- }
- if (xpm.height < 1 || xpm.width < 1) {
- RErrorCode = RERR_BADIMAGEFILE;
- XpmFreeXpmImage(&xpm);
+ status = XpmReadFileToXpmImage((char *)file, &xpm, (XpmInfo *) NULL);
+ if (is_xpm_error(status))
return NULL;
- }
- if (xpm.colorTable == NULL) {
- RErrorCode = RERR_BADIMAGEFILE;
- XpmFreeXpmImage(&xpm);
- return NULL;
- }
- image = RCreateImage(xpm.width, xpm.height, True);
- if (!image) {
- XpmFreeXpmImage(&xpm);
- return NULL;
- }
-
- /* make color table */
- for (i = 0; i < 4; i++) {
- color_table[i] = malloc(xpm.ncolors * sizeof(unsigned char));
- if (!color_table[i]) {
- for (i = i - 1; i >= 0; i--) {
- if (color_table[i])
- free(color_table[i]);
- }
- RReleaseImage(image);
- RErrorCode = RERR_NOMEMORY;
- XpmFreeXpmImage(&xpm);
- return NULL;
- }
- }
-
- for (i = 0; i < xpm.ncolors; i++) {
- XColor xcolor;
- char *color = NULL;
-
- if (xpm.colorTable[i].c_color)
- color = xpm.colorTable[i].c_color;
- else if (xpm.colorTable[i].g_color)
- color = xpm.colorTable[i].g_color;
- else if (xpm.colorTable[i].g4_color)
- color = xpm.colorTable[i].g4_color;
- else if (xpm.colorTable[i].m_color)
- color = xpm.colorTable[i].m_color;
- else if (xpm.colorTable[i].symbolic)
- color = xpm.colorTable[i].symbolic;
-
- if (!color) {
- color_table[0][i] = 0xbe;
- color_table[1][i] = 0xbe;
- color_table[2][i] = 0xbe;
- color_table[3][i] = 0xff;
- continue;
- }
-
- if (strncmp(color, "None", 4) == 0) {
- color_table[0][i] = 0;
- color_table[1][i] = 0;
- color_table[2][i] = 0;
- color_table[3][i] = 0;
- continue;
- }
- if (XParseColor(dpy, cmap, color, &xcolor)) {
- color_table[0][i] = xcolor.red >> 8;
- color_table[1][i] = xcolor.green >> 8;
- color_table[2][i] = xcolor.blue >> 8;
- color_table[3][i] = 0xff;
- } else {
- color_table[0][i] = 0xbe;
- color_table[1][i] = 0xbe;
- color_table[2][i] = 0xbe;
- color_table[3][i] = 0xff;
- }
- }
- /* convert pixmap to RImage */
- p = (int *)xpm.data;
- data = image->data;
- for (i = 0; i < xpm.width * xpm.height; i++, p++) {
- *(data++) = color_table[0][*p];
- *(data++) = color_table[1][*p];
- *(data++) = color_table[2][*p];
- *(data++) = color_table[3][*p];
- }
- for (i = 0; i < 4; i++) {
- free(color_table[i]);
- }
+ image = create_rimage_from_xpm(context, xpm);
XpmFreeXpmImage(&xpm);
return image;
}
http://repo.or.cz/w/wmaker-crm.git/commit/4005557bb3d1c46fd67bc190d2927d1ebec7a14a
commit 4005557bb3d1c46fd67bc190d2927d1ebec7a14a
Author: David Maciejak <[email protected]>
Date: Tue Aug 26 22:58:57 2014 +0800
wrlib: add merged code for xpm support in 2 distinct functions
This patch is adding some merged code in
create_rimage_from_xpm and is_xpm_error fonctions.
diff --git a/wrlib/load_xpm.c b/wrlib/load_xpm.c
index 35adbb12..8f32bee1 100644
--- a/wrlib/load_xpm.c
+++ b/wrlib/load_xpm.c
@@ -3,6 +3,7 @@
* Raster graphics library
*
* Copyright (c) 1997-2003 Alfredo K. Kojima
+ * Copyright (c) 2014 Window Maker Team
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -31,6 +32,120 @@
#include "wraster.h"
#include "imgformat.h"
+static RImage *create_rimage_from_xpm(RContext *context, XpmImage xpm)
+{
+ Display *dpy = context->dpy;
+ Colormap cmap = context->cmap;
+ RImage *image;
+ unsigned char *color_table[4];
+ unsigned char *data;
+ int i;
+ int *p;
+
+ if (xpm.height < 1 || xpm.width < 1) {
+ RErrorCode = RERR_BADIMAGEFILE;
+ return NULL;
+ }
+
+ if (xpm.colorTable == NULL) {
+ RErrorCode = RERR_BADIMAGEFILE;
+ return NULL;
+ }
+ image = RCreateImage(xpm.width, xpm.height, True);
+ if (!image)
+ return NULL;
+
+ /* make color table */
+ for (i = 0; i < 4; i++) {
+ color_table[i] = malloc(xpm.ncolors * sizeof(unsigned char));
+ if (!color_table[i]) {
+ for (i = i - 1; i >= 0; i--) {
+ if (color_table[i])
+ free(color_table[i]);
+ }
+ RReleaseImage(image);
+ RErrorCode = RERR_NOMEMORY;
+ return NULL;
+ }
+ }
+
+ for (i = 0; i < xpm.ncolors; i++) {
+ XColor xcolor;
+ char *color = NULL;
+
+ if (xpm.colorTable[i].c_color)
+ color = xpm.colorTable[i].c_color;
+ else if (xpm.colorTable[i].g_color)
+ color = xpm.colorTable[i].g_color;
+ else if (xpm.colorTable[i].g4_color)
+ color = xpm.colorTable[i].g4_color;
+ else if (xpm.colorTable[i].m_color)
+ color = xpm.colorTable[i].m_color;
+ else if (xpm.colorTable[i].symbolic)
+ color = xpm.colorTable[i].symbolic;
+
+ if (!color) {
+ color_table[0][i] = 0xbe;
+ color_table[1][i] = 0xbe;
+ color_table[2][i] = 0xbe;
+ color_table[3][i] = 0xff;
+ continue;
+ }
+
+ if (strncmp(color, "None", 4) == 0) {
+ color_table[0][i] = 0;
+ color_table[1][i] = 0;
+ color_table[2][i] = 0;
+ color_table[3][i] = 0;
+ continue;
+ }
+ if (XParseColor(dpy, cmap, color, &xcolor)) {
+ color_table[0][i] = xcolor.red >> 8;
+ color_table[1][i] = xcolor.green >> 8;
+ color_table[2][i] = xcolor.blue >> 8;
+ color_table[3][i] = 0xff;
+ } else {
+ color_table[0][i] = 0xbe;
+ color_table[1][i] = 0xbe;
+ color_table[2][i] = 0xbe;
+ color_table[3][i] = 0xff;
+ }
+ }
+ /* convert pixmap to RImage */
+ p = (int *)xpm.data;
+ data = image->data;
+ for (i = 0; i < xpm.width * xpm.height; i++, p++) {
+ *(data++) = color_table[0][*p];
+ *(data++) = color_table[1][*p];
+ *(data++) = color_table[2][*p];
+ *(data++) = color_table[3][*p];
+ }
+ for (i = 0; i < 4; i++)
+ free(color_table[i]);
+ return image;
+}
+
+static int is_xpm_error(int status)
+{
+ if (status == XpmSuccess)
+ return 0;
+
+ switch (status) {
+ case XpmOpenFailed:
+ RErrorCode = RERR_OPEN;
+ break;
+ case XpmFileInvalid:
+ RErrorCode = RERR_BADIMAGEFILE;
+ break;
+ case XpmNoMemory:
+ RErrorCode = RERR_NOMEMORY;
+ break;
+ default:
+ RErrorCode = RERR_BADIMAGEFILE;
+ break;
+ }
+ return 1;
+}
RImage *RGetImageFromXPMData(RContext * context, char **xpmData)
{
Display *dpy = context->dpy;
-----------------------------------------------------------------------
Summary of changes:
wrlib/load_xpm.c | 183 +++++++++++++----------------------------------------
1 files changed, 45 insertions(+), 138 deletions(-)
repo.or.cz automatic notification. Contact project admin [email protected]
if you want to unsubscribe, or site admin [email protected] if you receive
no reply.
--
wmaker-crm.git ("The Window Maker window manager")
--
To unsubscribe, send mail to [email protected].