iliaa Tue Mar 11 20:02:41 2003 EDT
Added files: (Branch: PHP_4_3)
/php4/ext/gd/libgd xbm.c
Modified files:
/php4/ext/gd config.m4 gd_bundled.dsp
/php4/ext/gd/libgd gd.c
Log:
MFH (XBM patch by Marcus B�rger)
Index: php4/ext/gd/config.m4
diff -u php4/ext/gd/config.m4:1.120.2.8 php4/ext/gd/config.m4:1.120.2.9
--- php4/ext/gd/config.m4:1.120.2.8 Thu Jan 23 01:22:42 2003
+++ php4/ext/gd/config.m4 Tue Mar 11 20:02:39 2003
@@ -1,5 +1,5 @@
dnl
-dnl $Id: config.m4,v 1.120.2.8 2003/01/23 06:22:42 sniper Exp $
+dnl $Id: config.m4,v 1.120.2.9 2003/03/12 01:02:39 iliaa Exp $
dnl
dnl
@@ -257,7 +257,8 @@
libgd/gd_io_file.c libgd/gd_ss.c libgd/gd_io_ss.c libgd/gd_png.c
libgd/gd_jpeg.c \
libgd/gdxpm.c libgd/gdfontt.c libgd/gdfonts.c libgd/gdfontmb.c
libgd/gdfontl.c \
libgd/gdfontg.c libgd/gdtables.c libgd/gdft.c libgd/gdcache.c
libgd/gdkanji.c \
- libgd/wbmp.c libgd/gd_wbmp.c libgd/gdhelpers.c libgd/gd_topal.c
libgd/gd_gif_in.c"
+ libgd/wbmp.c libgd/gd_wbmp.c libgd/gdhelpers.c libgd/gd_topal.c
libgd/gd_gif_in.c \
+ libgd/xbm.c"
dnl check for fabsf and floorf which are available since C99
AC_CHECK_FUNCS(fabsf floorf)
@@ -287,6 +288,7 @@
AC_DEFINE(HAVE_GD_WBMP, 1, [ ])
AC_DEFINE(HAVE_GD_GD2, 1, [ ])
AC_DEFINE(HAVE_GD_PNG, 1, [ ])
+ AC_DEFINE(HAVE_GD_XBM, 1, [ ])
AC_DEFINE(HAVE_GD_BUNDLED, 1, [ ])
AC_DEFINE(HAVE_GD_GIF_READ, 1, [ ])
Index: php4/ext/gd/gd_bundled.dsp
diff -u php4/ext/gd/gd_bundled.dsp:1.7.2.4 php4/ext/gd/gd_bundled.dsp:1.7.2.5
--- php4/ext/gd/gd_bundled.dsp:1.7.2.4 Sun Feb 9 01:26:45 2003
+++ php4/ext/gd/gd_bundled.dsp Tue Mar 11 20:02:40 2003
@@ -43,8 +43,8 @@
# PROP Intermediate_Dir "Release_TS"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /I "..\..\main" /I "..\..\Zend" /I
"..\..\..\bindlib_w32" /I "..\..\TSRM" /D ZEND_DEBUG=0 /D "WIN32" /D "NDEBUG" /D
"_WINDOWS" /D "COMPILE_DL_GD" /D ZTS=1 /D "ZEND_WIN32" /D "PHP_WIN32" /D
HAVE_GD_GIF_READ=1 /D HAVE_GDIMAGECOLORRESOLVE=1 /D "HAVE_GD_PNG" /D "HAVE_GD_JPG" /D
"HAVE_GD_WBMP" /D HAVE_LIBGD13=1 /D HAVE_LIBGD=1 /D HAVE_LIBGD15=1 /D HAVE_LIBGD204=1
/FR /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /I "..\..\main" /I "..\..\Zend" /I
"..\..\..\bindlib_w32" /I "..\..\TSRM" /I "libgd" /D ZEND_DEBUG=0 /D HAVE_LIBGD15=1 /D
HAVE_LIBGD204=1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "COMPILE_DL_GD" /D ZTS=1 /D
"ZEND_WIN32" /D "PHP_WIN32" /D HAVE_GD_GIF_READ=1 /D HAVE_GDIMAGECOLORRESOLVE=1 /D
"HAVE_GD_PNG" /D "HAVE_GD_JPG" /D "HAVE_GD_WBMP" /D HAVE_LIBGD=1 /D HAVE_LIBGD13=1 /D
HAVE_LIBGD20=1 /D "USE_GD_IOCTX" /D HAVE_LIBFREETYPE=1 /D "USE_GD_IMGSTRTTF" /D
HAVE_GD_STRINGTTF=1 /D HAVE_GD_BUNDLED=1 /D "MSWIN32" /D "HAVE_LIBPNG" /D
"HAVE_LIBJPEG" /D "HAVE_GD_GD2" /D HAVE_GD_STRINGFTEX=1 /D HAVE_GD_IMAGESETBRUSH=1 /D
HAVE_GD_IMAGESETTILE=1 /FR /FD /c
+# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /I "..\..\main" /I "..\..\Zend" /I
"..\..\..\bindlib_w32" /I "..\..\TSRM" /D ZEND_DEBUG=0 /D "WIN32" /D "NDEBUG" /D
"_WINDOWS" /D "COMPILE_DL_GD" /D ZTS=1 /D "ZEND_WIN32" /D "PHP_WIN32" /D
HAVE_GD_GIF_READ=1 /D HAVE_GDIMAGECOLORRESOLVE=1 /D "HAVE_GD_PNG" /D "HAVE_GD_JPG" /D
"HAVE_GD_WBMP" /D "HAVE_GD_XBM" /D HAVE_LIBGD13=1 /D HAVE_LIBGD=1 /D HAVE_LIBGD15=1 /D
HAVE_LIBGD204=1 /FR /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /I "..\..\main" /I "..\..\Zend" /I
"..\..\..\bindlib_w32" /I "..\..\TSRM" /I "libgd" /D ZEND_DEBUG=0 /D HAVE_LIBGD15=1 /D
HAVE_LIBGD204=1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "COMPILE_DL_GD" /D ZTS=1 /D
"ZEND_WIN32" /D "PHP_WIN32" /D HAVE_GD_GIF_READ=1 /D HAVE_GDIMAGECOLORRESOLVE=1 /D
"HAVE_GD_PNG" /D "HAVE_GD_JPG" /D "HAVE_GD_WBMP" /D "HAVE_GD_XBM" /D HAVE_LIBGD=1 /D
HAVE_LIBGD13=1 /D HAVE_LIBGD20=1 /D "USE_GD_IOCTX" /D HAVE_LIBFREETYPE=1 /D
"USE_GD_IMGSTRTTF" /D HAVE_GD_STRINGTTF=1 /D HAVE_GD_BUNDLED=1 /D "MSWIN32" /D
"HAVE_LIBPNG" /D "HAVE_LIBJPEG" /D "HAVE_GD_GD2" /D HAVE_GD_STRINGFTEX=1 /D
HAVE_GD_IMAGESETBRUSH=1 /D HAVE_GD_IMAGESETTILE=1 /FR /FD /c
# SUBTRACT CPP /YX
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
@@ -515,6 +515,21 @@
# Begin Source File
SOURCE=.\libgd\wbmp.c
+
+!IF "$(CFG)" == "gd_bundled - Win32 Release_TS GD2"
+
+# PROP Intermediate_Dir "Release_TS_bundled"
+
+!ELSEIF "$(CFG)" == "gd_bundled - Win32 Debug_TS GD2"
+
+# PROP Intermediate_Dir "Debug_TS_bundled"
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\libgd\xbm.c
!IF "$(CFG)" == "gd_bundled - Win32 Release_TS GD2"
Index: php4/ext/gd/libgd/gd.c
diff -u php4/ext/gd/libgd/gd.c:1.24.2.5 php4/ext/gd/libgd/gd.c:1.24.2.6
--- php4/ext/gd/libgd/gd.c:1.24.2.5 Wed Mar 5 11:04:20 2003
+++ php4/ext/gd/libgd/gd.c Tue Mar 11 20:02:40 2003
@@ -2857,134 +2857,6 @@
}
/* End Rotate function */
-#if MBO_0
-gdImagePtr
-gdImageCreateFromXbm (FILE * fd)
-{
- gdImagePtr im;
- int bit;
- int w, h;
- int bytes;
- int ch;
- int i, x, y;
- char *sp;
- char s[161];
- if (!fgets (s, 160, fd))
- {
- return 0;
- }
- sp = &s[0];
- /* Skip #define */
- sp = strchr (sp, ' ');
- if (!sp)
- {
- return 0;
- }
- /* Skip width label */
- sp++;
- sp = strchr (sp, ' ');
- if (!sp)
- {
- return 0;
- }
- /* Get width */
- w = atoi (sp + 1);
- if (!w)
- {
- return 0;
- }
- if (!fgets (s, 160, fd))
- {
- return 0;
- }
- sp = s;
- /* Skip #define */
- sp = strchr (sp, ' ');
- if (!sp)
- {
- return 0;
- }
- /* Skip height label */
- sp++;
- sp = strchr (sp, ' ');
- if (!sp)
- {
- return 0;
- }
- /* Get height */
- h = atoi (sp + 1);
- if (!h)
- {
- return 0;
- }
- /* Skip declaration line */
- if (!fgets (s, 160, fd))
- {
- return 0;
- }
- bytes = (w * h / 8) + 1;
- im = gdImageCreate (w, h);
- gdImageColorAllocate (im, 255, 255, 255);
- gdImageColorAllocate (im, 0, 0, 0);
- x = 0;
- y = 0;
- for (i = 0; (i < bytes); i++)
- {
- char h[3];
- unsigned int b;
- /* Skip spaces, commas, CRs, 0x */
- while (1)
- {
- ch = getc (fd);
- if (ch == EOF)
- {
- goto fail;
- }
- if (ch == 'x')
- {
- break;
- }
- }
- /* Get hex value */
- ch = getc (fd);
- if (ch == EOF)
- {
- goto fail;
- }
- h[0] = ch;
- ch = getc (fd);
- if (ch == EOF)
- {
- goto fail;
- }
- h[1] = ch;
- h[2] = '\0';
- sscanf (h, "%x", &b);
- for (bit = 1; (bit <= 128); (bit = bit << 1))
- {
- gdImageSetPixel (im, x++, y, (b & bit) ? 1 : 0);
- if (x == im->sx)
- {
- x = 0;
- y++;
- if (y == im->sy)
- {
- return im;
- }
- /* Fix 8/8/95 */
- break;
- }
- }
- }
- /* Shouldn't happen */
- php_gd_error("Error: bug in gdImageCreateFromXbm\n");
- return 0;
-fail:
- gdImageDestroy (im);
- return 0;
-}
-#endif /* MBO_0 */
-
void
gdImagePolygon (gdImagePtr im, gdPointPtr p, int n, int c)
{
Index: php4/ext/gd/libgd/xbm.c
+++ php4/ext/gd/libgd/xbm.c
/*
+----------------------------------------------------------------------+
| PHP Version 4 |
+----------------------------------------------------------------------+
| Copyright (c) 1997-2003 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 2.02 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available at through the world-wide-web at |
| http://www.php.net/license/2_02.txt. |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| [EMAIL PROTECTED] so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Author: Marcus Boerger <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
/* $Id: xbm.c,v 1.1 2003/02/02 01:34:54 helly Exp $ */
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include "gd.h"
#include "gdhelpers.h"
#include "php.h"
#define MAX_XBM_LINE_SIZE 255
gdImagePtr
gdImageCreateFromXbm (FILE * fd)
{
char fline[MAX_XBM_LINE_SIZE];
char iname[MAX_XBM_LINE_SIZE];
char *type;
int value;
unsigned int width = 0, height = 0;
int fail = 0;
int max_bit = 0;
gdImagePtr im;
int bytes = 0, i;
int bit, x = 0, y = 0;
int ch;
char h[8];
unsigned int b;
rewind(fd);
while (fgets(fline, MAX_XBM_LINE_SIZE, fd)) {
fline[MAX_XBM_LINE_SIZE-1] = '\0';
if (strlen(fline) == MAX_XBM_LINE_SIZE-1) {
return 0;
}
if (sscanf(fline, "#define %s %d", iname, &value) == 2) {
if (!(type = strrchr(iname, '_'))) {
type = iname;
} else {
type++;
}
if (!strcmp("width", type)) {
width = (unsigned int) value;
}
if (!strcmp("height", type)) {
height = (unsigned int) value;
}
} else {
if ( sscanf(fline, "static unsigned char %s = {", iname) == 1
|| sscanf(fline, "static char %s = {", iname) == 1)
{
max_bit = 128;
} else if (sscanf(fline, "static unsigned short %s = {",
iname) == 1
|| sscanf(fline, "static short %s = {", iname)
== 1)
{
max_bit = 32768;
}
if (max_bit) {
bytes = (width * height / 8) + 1;
if (!bytes) {
return 0;
}
if (!(type = strrchr(iname, '_'))) {
type = iname;
} else {
type++;
}
if (!strcmp("bits[]", type)) {
break;
}
}
}
}
if (!bytes || !max_bit) {
return 0;
}
im = gdImageCreate(width, height);
gdImageColorAllocate(im, 255, 255, 255);
gdImageColorAllocate(im, 0, 0, 0);
h[2] = '\0';
h[4] = '\0';
for (i = 0; i < bytes; i++) {
while (1) {
ch = getc(fd);
if (ch == EOF)
{
fail = 1;
break;
}
if (ch == 'x')
{
break;
}
}
if (fail) {
break;
}
/* Get hex value */
if ((ch=getc(fd)) == EOF) break;
h[0] = ch;
if ((ch=getc(fd)) == EOF) break;
h[1] = ch;
if (max_bit == 32768) {
if ((ch=getc(fd)) == EOF) break;
h[2] = ch;
if ((ch=getc(fd)) == EOF) break;
h[3] = ch;
}
sscanf(h, "%x", &b);
for (bit = 1; bit <= max_bit; bit = bit << 1) {
gdImageSetPixel (im, x++, y, (b & bit) ? 1 : 0);
if (x == im->sx)
{
x = 0;
y++;
if (y == im->sy)
{
return im;
}
break;
}
}
}
php_gd_error("EOF before image was complete\n");
gdImageDestroy(im);
return 0;
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php