cvs: gd /libgd/src gdxpm.c /libgd/tests/xpm CMakeLists.txt Makefile.am color_name.c color_name.xpm
[email protected] ("Takeshi Abe") Thu, 21 Aug 2008 11:34:05 -0000
| Newsgroups | php.gd.cvs |
|---|---|
| Message-ID | <cvstabe1219318445@cvsserver> |
tabe Thu Aug 21 11:34:05 2008 UTC
Added files:
/gd/libgd/tests/xpm color_name.c color_name.xpm
Modified files:
/gd/libgd/src gdxpm.c
/gd/libgd/tests/xpm CMakeLists.txt Makefile.am
Log:
* recognize the color names like 'AliceBlue' in gdImageCreateFromXpm()
* deleted unused codes
http://cvs.php.net/viewvc.cgi/gd/libgd/src/gdxpm.c?r1=1.11&r2=1.12&diff_format=u
Index: gd/libgd/src/gdxpm.c
diff -u gd/libgd/src/gdxpm.c:1.11 gd/libgd/src/gdxpm.c:1.12
--- gd/libgd/src/gdxpm.c:1.11 Thu Aug 14 10:41:57 2008
+++ gd/libgd/src/gdxpm.c Thu Aug 21 11:34:05 2008
@@ -14,6 +14,7 @@
#include <string.h>
#include "gd.h"
#include "gdhelpers.h"
+#include "gd_color_map.h"
#ifndef HAVE_LIBXPM
BGD_DECLARE(gdImagePtr) gdImageCreateFromXpm(char *filename)
@@ -58,92 +59,94 @@
}
for(i = 0; i < number; i++) {
- if(strcmp(image.colorTable[i].c_color, "None") == 0) {
+ char *c_color = image.colorTable[i].c_color;
+ if(strcmp(c_color, "None") == 0) {
colors[i] = gdImageGetTransparent(im);
if(colors[i] == -1) colors[i] = gdImageColorAllocate(im, 0, 0, 0);
if(colors[i] != -1) gdImageColorTransparent(im, colors[i]);
continue;
}
- len = strlen(image.colorTable[i].c_color);
- if(len < 1 || image.colorTable[i].c_color[0] != '#') continue;
- switch(len) {
+ len = strlen(c_color);
+ if(len < 1) continue;
+ if(c_color[0] == '#') {
+ switch(len) {
case 4:
buf[2] = '\0';
- buf[0] = buf[1] = image.colorTable[i].c_color[1];
+ buf[0] = buf[1] = c_color[1];
red = strtol(buf, NULL, 16);
- buf[0] = buf[1] = image.colorTable[i].c_color[2];
+ buf[0] = buf[1] = c_color[2];
green = strtol(buf, NULL, 16);
- buf[0] = buf[1] = image.colorTable[i].c_color[3];
+ buf[0] = buf[1] = c_color[3];
blue = strtol(buf, NULL, 16);
- break;
+ break;
case 7:
buf[2] = '\0';
- buf[0] = image.colorTable[i].c_color[1];
- buf[1] = image.colorTable[i].c_color[2];
+ buf[0] = c_color[1];
+ buf[1] = c_color[2];
red = strtol(buf, NULL, 16);
- buf[0] = image.colorTable[i].c_color[3];
- buf[1] = image.colorTable[i].c_color[4];
+ buf[0] = c_color[3];
+ buf[1] = c_color[4];
green = strtol(buf, NULL, 16);
- buf[0] = image.colorTable[i].c_color[5];
- buf[1] = image.colorTable[i].c_color[6];
+ buf[0] = c_color[5];
+ buf[1] = c_color[6];
blue = strtol(buf, NULL, 16);
- break;
+ break;
case 10:
buf[3] = '\0';
- buf[0] = image.colorTable[i].c_color[1];
- buf[1] = image.colorTable[i].c_color[2];
- buf[2] = image.colorTable[i].c_color[3];
+ buf[0] = c_color[1];
+ buf[1] = c_color[2];
+ buf[2] = c_color[3];
red = strtol(buf, NULL, 16);
red /= 64;
- buf[0] = image.colorTable[i].c_color[4];
- buf[1] = image.colorTable[i].c_color[5];
- buf[2] = image.colorTable[i].c_color[6];
+ buf[0] = c_color[4];
+ buf[1] = c_color[5];
+ buf[2] = c_color[6];
green = strtol(buf, NULL, 16);
green /= 64;
- buf[0] = image.colorTable[i].c_color[7];
- buf[1] = image.colorTable[i].c_color[8];
- buf[2] = image.colorTable[i].c_color[9];
+ buf[0] = c_color[7];
+ buf[1] = c_color[8];
+ buf[2] = c_color[9];
blue = strtol(buf, NULL, 16);
blue /= 64;
- break;
+ break;
case 13:
buf[4] = '\0';
- buf[0] = image.colorTable[i].c_color[1];
- buf[1] = image.colorTable[i].c_color[2];
- buf[2] = image.colorTable[i].c_color[3];
- buf[3] = image.colorTable[i].c_color[4];
+ buf[0] = c_color[1];
+ buf[1] = c_color[2];
+ buf[2] = c_color[3];
+ buf[3] = c_color[4];
red = strtol(buf, NULL, 16);
red /= 256;
- buf[0] = image.colorTable[i].c_color[5];
- buf[1] = image.colorTable[i].c_color[6];
- buf[2] = image.colorTable[i].c_color[7];
- buf[3] = image.colorTable[i].c_color[8];
+ buf[0] = c_color[5];
+ buf[1] = c_color[6];
+ buf[2] = c_color[7];
+ buf[3] = c_color[8];
green = strtol(buf, NULL, 16);
green /= 256;
- buf[0] = image.colorTable[i].c_color[9];
- buf[1] = image.colorTable[i].c_color[10];
- buf[2] = image.colorTable[i].c_color[11];
- buf[3] = image.colorTable[i].c_color[12];
+ buf[0] = c_color[9];
+ buf[1] = c_color[10];
+ buf[2] = c_color[11];
+ buf[3] = c_color[12];
blue = strtol(buf, NULL, 16);
blue /= 256;
- break;
+ break;
+ }
+ } else if(!gdColorMapLookup(GD_COLOR_MAP_X11, c_color, &red, &green, &blue)) {
+ continue;
}
colors[i] = gdImageColorResolve(im, red, green, blue);
- if(colors[i] == -1) {
- fprintf(stderr, "ARRRGH\n");
- }
}
pointer = (int *)image.data;
http://cvs.php.net/viewvc.cgi/gd/libgd/tests/xpm/CMakeLists.txt?r1=1.1&r2=1.2&diff_format=u
Index: gd/libgd/tests/xpm/CMakeLists.txt
diff -u gd/libgd/tests/xpm/CMakeLists.txt:1.1 gd/libgd/tests/xpm/CMakeLists.txt:1.2
--- gd/libgd/tests/xpm/CMakeLists.txt:1.1 Thu Aug 14 10:45:42 2008
+++ gd/libgd/tests/xpm/CMakeLists.txt Thu Aug 21 11:34:05 2008
@@ -1,6 +1,7 @@
SET(TESTS_FILES
bug00166
+ color_name
)
FOREACH(test_name ${TESTS_FILES})
http://cvs.php.net/viewvc.cgi/gd/libgd/tests/xpm/Makefile.am?r1=1.1&r2=1.2&diff_format=u
Index: gd/libgd/tests/xpm/Makefile.am
diff -u gd/libgd/tests/xpm/Makefile.am:1.1 gd/libgd/tests/xpm/Makefile.am:1.2
--- gd/libgd/tests/xpm/Makefile.am:1.1 Thu Aug 14 10:45:42 2008
+++ gd/libgd/tests/xpm/Makefile.am Thu Aug 21 11:34:05 2008
@@ -1,3 +1,3 @@
## Process this file with automake to produce Makefile.in -*-Makefile-*-
-EXTRA_DIST = CMakeLists.txt bug00166.c bug00166.xpm
+EXTRA_DIST = CMakeLists.txt bug00166.c bug00166.xpm color_name.c color_name.xpm
http://cvs.php.net/viewvc.cgi/gd/libgd/tests/xpm/color_name.c?view=markup&rev=1.1
Index: gd/libgd/tests/xpm/color_name.c
+++ gd/libgd/tests/xpm/color_name.c
/* $Id: color_name.c,v 1.1 2008/08/21 11:34:05 tabe Exp $ */
#include "gd.h"
#include <stdio.h>
#include <stdlib.h>
#include "gdtest.h"
int
main(int argc, char *argv[])
{
gdImagePtr im;
char path[1024];
int c, result;
sprintf(path, "%s/xpm/color_name.xpm", GDTEST_TOP_DIR);
im = gdImageCreateFromXpm(path);
if (!im) {
return 2;
}
c = gdImageGetPixel(im, 2, 2);
if (gdImageRed(im, c) == 0xFF
&& gdImageGreen(im, c) == 0xFF
&& gdImageBlue(im, c) == 0x0) {
result = 0;
} else {
result = 1;
}
gdImageDestroy(im);
return result;
}
http://cvs.php.net/viewvc.cgi/gd/libgd/tests/xpm/color_name.xpm?view=markup&rev=1.1
Index: gd/libgd/tests/xpm/color_name.xpm
+++ gd/libgd/tests/xpm/color_name.xpm
/* XPM */
static char *color_name = {
"3 5 6 1",
" c None",
"A c AliceBlue",
"b c blue",
"c c cyan",
"w c wheat",
"y c yellow",
" A ",
"AbA",
"yby",
"ycy",
"wcw",
};