iliaa Mon Mar 29 13:21:01 2004 EDT
Modified files: (Branch: PHP_4_3)
/php-src NEWS
/php-src/ext/gd gd.c
/php-src/ext/gd/libgd gd.c gd.h gd_gd.c gd_gd2.c gd_io_dp.c
gd_jpeg.c gd_png.c gd_wbmp.c gdfontg.c
gdfontg.h gdfontl.c gdfontl.h gdfontmb.c
gdfontmb.h gdfonts.c gdfonts.h gdfontt.c
gdfontt.h gdft.c
Log:
MFH: Synchronized bundled GD library with GD 2.0.22.
http://cvs.php.net/diff.php/php-src/NEWS?r1=1.1247.2.614&r2=1.1247.2.615&ty=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.1247.2.614 php-src/NEWS:1.1247.2.615
--- php-src/NEWS:1.1247.2.614 Sun Mar 28 19:52:20 2004
+++ php-src/NEWS Mon Mar 29 13:20:59 2004
@@ -1,6 +1,7 @@
PHP 4 NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? 2004, Version 4.3.6
+- Synchronized bundled GD library with GD 2.0.22. (Ilia)
- Fixed bug #27732 (Fixed compilation bug inside php_sab_info.h). (Ilia)
- Fixed bug #27731 (error_reporting() inside @ block fails to set
error_reporting level). (Ilia)
http://cvs.php.net/diff.php/php-src/ext/gd/gd.c?r1=1.221.2.36&r2=1.221.2.37&ty=u
Index: php-src/ext/gd/gd.c
diff -u php-src/ext/gd/gd.c:1.221.2.36 php-src/ext/gd/gd.c:1.221.2.37
--- php-src/ext/gd/gd.c:1.221.2.36 Sun Feb 22 13:03:24 2004
+++ php-src/ext/gd/gd.c Mon Mar 29 13:21:00 2004
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: gd.c,v 1.221.2.36 2004/02/22 18:03:24 iliaa Exp $ */
+/* $Id: gd.c,v 1.221.2.37 2004/03/29 18:21:00 iliaa Exp $ */
/* gd 1.2 is copyright 1994, 1995, Quest Protein Database Center,
Cold Spring Harbor Labs. */
@@ -390,7 +390,7 @@
/* }}} */
#if HAVE_GD_BUNDLED
-#define PHP_GD_VERSION_STRING "bundled (2.0.17 compatible)"
+#define PHP_GD_VERSION_STRING "bundled (2.0.22 compatible)"
#elif HAVE_LIBGD20
#define PHP_GD_VERSION_STRING "2.0 or higher"
#elif HAVE_GDIMAGECOLORRESOLVE
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.c?r1=1.24.2.27&r2=1.24.2.28&ty=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.24.2.27 php-src/ext/gd/libgd/gd.c:1.24.2.28
--- php-src/ext/gd/libgd/gd.c:1.24.2.27 Wed Mar 17 12:25:24 2004
+++ php-src/ext/gd/libgd/gd.c Mon Mar 29 13:21:00 2004
@@ -1823,7 +1823,7 @@
if (y < ((im->sy) - 1)) {
lastBorder = 1;
for (i = leftLimit; i <= rightLimit; i++) {
- int c = gdImageGetPixel(im, i, y + 1);
+ int c = gdImageGetTrueColorPixel(im, i, y + 1);
if (lastBorder) {
if ((c != border) && (c != color)) {
@@ -2292,7 +2292,8 @@
int tmp = gdImageGetPixel (src, x, y);
mapTo = gdImageGetTrueColorPixel (src,
x, y);
if (gdImageGetTransparent (src) ==
tmp) {
- tox++;
+ /* 2.0.21, TK: not tox++ */
+ tox += stx[x - srcX];
continue;
}
} else {
@@ -2300,7 +2301,8 @@
mapTo = gdImageGetTrueColorPixel (src,
x, y);
/* Added 7/24/95: support transparent
copies */
if (gdImageGetTransparent (src) ==
mapTo) {
- tox++;
+ /* 2.0.21, TK: not tox++ */
+ tox += stx[x - srcX];
continue;
}
}
@@ -2356,22 +2358,24 @@
void gdImageCopyResampled (gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int
srcX, int srcY, int dstW, int dstH, int srcW, int srcH)
{
int x, y;
+ double sy1, sy2, sx1, sx2;
if (!dst->trueColor) {
gdImageCopyResized (dst, src, dstX, dstY, srcX, srcY, dstW, dstH,
srcW, srcH);
return;
}
for (y = dstY; (y < dstY + dstH); y++) {
+ sy1 = ((double) y - (double) dstY) * (double) srcH / (double) dstH;
+ sy2 = ((double) (y + 1) - (double) dstY) * (double) srcH / (double)
dstH;
for (x = dstX; (x < dstX + dstW); x++) {
- float sy1, sy2, sx1, sx2;
- float sx, sy;
- float spixels = 0.0f;
- float red = 0.0f, green = 0.0f, blue = 0.0f, alpha = 0.0f;
- float alpha_factor, alpha_sum = 0.0f, contrib_sum = 0.0f;
- sy1 = ((float)(y - dstY)) * (float)srcH / (float)dstH;
- sy2 = ((float)(y + 1 - dstY)) * (float) srcH / (float) dstH;
+ double sx, sy;
+ double spixels = 0;
+ double red = 0.0, green = 0.0, blue = 0.0, alpha = 0.0;
+ double alpha_factor, alpha_sum = 0.0, contrib_sum = 0.0;
+ sx1 = ((double) x - (double) dstX) * (double) srcW / dstW;
+ sx2 = ((double) (x + 1) - (double) dstX) * (double) srcW /
dstW;
sy = sy1;
do {
- float yportion;
+ double yportion;
if (floor_cast(sy) == floor_cast(sy1)) {
yportion = 1.0f - (sy - floor_cast(sy));
if (yportion > sy2 - sy1) {
@@ -2383,12 +2387,10 @@
} else {
yportion = 1.0f;
}
- sx1 = ((float)(x - dstX)) * (float) srcW / dstW;
- sx2 = ((float)(x + 1 - dstX)) * (float) srcW / dstW;
sx = sx1;
do {
- float xportion;
- float pcontribution;
+ double xportion;
+ double pcontribution;
int p;
if (floorf(sx) == floor_cast(sx1)) {
xportion = 1.0f - (sx -
floor_cast(sx));
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.h?r1=1.7.2.7&r2=1.7.2.8&ty=u
Index: php-src/ext/gd/libgd/gd.h
diff -u php-src/ext/gd/libgd/gd.h:1.7.2.7 php-src/ext/gd/libgd/gd.h:1.7.2.8
--- php-src/ext/gd/libgd/gd.h:1.7.2.7 Thu Dec 25 17:33:03 2003
+++ php-src/ext/gd/libgd/gd.h Mon Mar 29 13:21:00 2004
@@ -578,6 +578,7 @@
gdIOCtx* gdNewFileCtx(FILE*);
gdIOCtx* gdNewDynamicCtx(int, void*);
+gdIOCtx *gdNewDynamicCtxEx(int size, void *data, int freeFlag);
gdIOCtx* gdNewSSCtx(gdSourcePtr in, gdSinkPtr out);
void* gdDPExtractData(struct gdIOCtx* ctx, int *size);
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd_gd.c?r1=1.4.2.1&r2=1.4.2.2&ty=u
Index: php-src/ext/gd/libgd/gd_gd.c
diff -u php-src/ext/gd/libgd/gd_gd.c:1.4.2.1 php-src/ext/gd/libgd/gd_gd.c:1.4.2.2
--- php-src/ext/gd/libgd/gd_gd.c:1.4.2.1 Sat Apr 5 12:24:15 2003
+++ php-src/ext/gd/libgd/gd_gd.c Mon Mar 29 13:21:00 2004
@@ -147,6 +147,16 @@
return im;
}
+gdImagePtr gdImageCreateFromGdPtr (int size, void *data)
+{
+ gdImagePtr im;
+ gdIOCtx *in = gdNewDynamicCtxEx(size, data, 0);
+ im = gdImageCreateFromGdCtx(in);
+ in->gd_free(in);
+
+ return im;
+}
+
gdImagePtr gdImageCreateFromGdCtx (gdIOCtxPtr in)
{
int sx, sy;
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd_gd2.c?r1=1.4.2.5&r2=1.4.2.6&ty=u
Index: php-src/ext/gd/libgd/gd_gd2.c
diff -u php-src/ext/gd/libgd/gd_gd2.c:1.4.2.5 php-src/ext/gd/libgd/gd_gd2.c:1.4.2.6
--- php-src/ext/gd/libgd/gd_gd2.c:1.4.2.5 Thu Dec 25 17:33:03 2003
+++ php-src/ext/gd/libgd/gd_gd2.c Mon Mar 29 13:21:00 2004
@@ -237,6 +237,16 @@
return im;
}
+gdImagePtr gdImageCreateFromGd2Ptr (int size, void *data)
+{
+ gdImagePtr im;
+ gdIOCtx *in = gdNewDynamicCtxEx(size, data, 0);
+ im = gdImageCreateFromGd2Ctx(in);
+ in->gd_free(in);
+
+ return im;
+}
+
gdImagePtr gdImageCreateFromGd2Ctx (gdIOCtxPtr in)
{
int sx, sy;
@@ -378,6 +388,16 @@
return 0;
}
+gdImagePtr gdImageCreateFromGd2PartPtr (int size, void *data, int srcx, int srcy, int
w, int h)
+{
+ gdImagePtr im;
+ gdIOCtx *in = gdNewDynamicCtxEx(size, data, 0);
+ im = gdImageCreateFromGd2PartCtx(in, srcx, srcy, w, h);
+ in->gd_free(in);
+
+ return im;
+}
+
gdImagePtr gdImageCreateFromGd2Part (FILE * inFile, int srcx, int srcy, int w, int h)
{
gdImagePtr im;
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd_io_dp.c?r1=1.2.2.1&r2=1.2.2.2&ty=u
Index: php-src/ext/gd/libgd/gd_io_dp.c
diff -u php-src/ext/gd/libgd/gd_io_dp.c:1.2.2.1 php-src/ext/gd/libgd/gd_io_dp.c:1.2.2.2
--- php-src/ext/gd/libgd/gd_io_dp.c:1.2.2.1 Wed Jan 8 13:11:58 2003
+++ php-src/ext/gd/libgd/gd_io_dp.c Mon Mar 29 13:21:00 2004
@@ -33,6 +33,7 @@
int realSize;
int dataGood;
int pos;
+ int freeOK;
}
dynamicPtr;
@@ -52,7 +53,7 @@
static int gdReallocDynamic (dynamicPtr * dp, int required);
static int trimDynamic (dynamicPtr * dp);
static void gdFreeDynamicCtx (struct gdIOCtx *ctx);
-static dynamicPtr *newDynamic (int initialSize, void *data);
+static dynamicPtr *newDynamic (int initialSize, void *data, int freeOKFlag);
static int dynamicPutbuf (struct gdIOCtx *, const void *, int);
static void dynamicPutchar (struct gdIOCtx *, int a);
@@ -67,6 +68,11 @@
gdIOCtx *
gdNewDynamicCtx (int initialSize, void *data)
{
+ return gdNewDynamicCtxEx(initialSize, data, 1);
+}
+
+gdIOCtx * gdNewDynamicCtxEx (int initialSize, void *data, int freeOKFlag)
+{
dpIOCtx *ctx;
dynamicPtr *dp;
@@ -76,7 +82,7 @@
return NULL;
}
- dp = newDynamic (initialSize, data);
+ dp = newDynamic (initialSize, data, freeOKFlag);
if (!dp)
{
gdFree (ctx);
@@ -120,7 +126,7 @@
{
*size = 0;
data = NULL;
- if (dp->data != NULL)
+ if (dp->data != NULL && dp->freeOK)
{
gdFree (dp->data);
}
@@ -177,6 +183,10 @@
bytesNeeded = pos;
if (bytesNeeded > dp->realSize)
{
+ /* 2.0.21 */
+ if (!dp->freeOK) {
+ return FALSE;
+ }
if (!gdReallocDynamic (dp, dp->realSize * 2))
{
dp->dataGood = FALSE;
@@ -199,8 +209,7 @@
}
/* return data as a dynamic pointer */
-static dynamicPtr *
-newDynamic (int initialSize, void *data)
+static dynamicPtr * newDynamic (int initialSize, void *data, int freeOKFlag)
{
dynamicPtr *dp;
dp = (dynamicPtr *) gdMalloc (sizeof (dynamicPtr));
@@ -213,6 +222,7 @@
return NULL;
dp->pos = 0;
+ dp->freeOK = freeOKFlag;
return dp;
}
@@ -348,6 +358,10 @@
if (bytesNeeded > dp->realSize)
{
+ /* 2.0.21 */
+ if (!dp->freeOK) {
+ return FALSE;
+ }
if (!gdReallocDynamic (dp, bytesNeeded * 2))
{
dp->dataGood = FALSE;
@@ -407,5 +421,9 @@
static int
trimDynamic (dynamicPtr * dp)
{
- return gdReallocDynamic (dp, dp->logicalSize);
+ /* 2.0.21: we don't reallocate memory we don't own */
+ if (!dp->freeOK) {
+ return FALSE;
+ }
+ return gdReallocDynamic (dp, dp->logicalSize);
}
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd_jpeg.c?r1=1.4.2.5&r2=1.4.2.6&ty=u
Index: php-src/ext/gd/libgd/gd_jpeg.c
diff -u php-src/ext/gd/libgd/gd_jpeg.c:1.4.2.5 php-src/ext/gd/libgd/gd_jpeg.c:1.4.2.6
--- php-src/ext/gd/libgd/gd_jpeg.c:1.4.2.5 Thu Dec 25 17:33:03 2003
+++ php-src/ext/gd/libgd/gd_jpeg.c Mon Mar 29 13:21:00 2004
@@ -221,8 +221,20 @@
return im;
}
+gdImagePtr gdImageCreateFromJpegPtr (int size, void *data)
+{
+ gdImagePtr im;
+ gdIOCtx *in = gdNewDynamicCtxEx(size, data, 0);
+ im = gdImageCreateFromJpegCtx(in);
+ in->gd_free(in);
+
+ return im;
+}
+
void jpeg_gdIOCtx_src (j_decompress_ptr cinfo, gdIOCtx * infile);
+static int CMYKToRGB(int c, int m, int y, int k, int inverted);
+
/*
* Create a gd-format image from the JPEG-format INFILE. Returns the
* image, or NULL upon error.
@@ -239,6 +251,8 @@
unsigned int i, j;
int retval;
JDIMENSION nrows;
+ int channels = 3;
+ int inverted = 0;
memset (&cinfo, 0, sizeof (cinfo));
memset (&jerr, 0, sizeof (jerr));
@@ -262,6 +276,9 @@
jpeg_gdIOCtx_src (&cinfo, infile);
+ /* 2.0.22: save the APP14 marker to check for Adobe Photoshop CMYK files with
inverted components. */
+ jpeg_save_markers(&cinfo, JPEG_APP0 + 14, 256);
+
retval = jpeg_read_header (&cinfo, TRUE);
if (retval != JPEG_HEADER_OK) {
php_gd_error_ex(E_WARNING, "gd-jpeg: warning: jpeg_read_header
returned %d, expected %d", retval, JPEG_HEADER_OK);
@@ -281,8 +298,14 @@
goto error;
}
- /* Force the image into RGB colorspace, but don't reduce the number of colors
anymore (GD 2.0) */
- cinfo.out_color_space = JCS_RGB;
+ /* 2.0.22: very basic support for reading CMYK colorspace files. Nice for
+ * thumbnails but there's no support for fussy adjustment of the
+ * assumed properties of inks and paper. */
+ if ((cinfo.jpeg_color_space == JCS_CMYK) || (cinfo.jpeg_color_space ==
JCS_YCCK)) {
+ cinfo.out_color_space = JCS_CMYK;
+ } else {
+ cinfo.out_color_space = JCS_RGB;
+ }
if (jpeg_start_decompress (&cinfo) != TRUE) {
php_gd_error("gd-jpeg: warning: jpeg_start_decompress reports
suspended data source");
@@ -301,8 +324,29 @@
gdImageInterlace (im, cinfo.progressive_mode != 0);
#endif
- if (cinfo.output_components != 3) {
- php_gd_error_ex(E_WARNING, "gd-jpeg: error: JPEG color quantization
request resulted in output_components == %d (expected 3)", cinfo.output_components);
+ if (cinfo.out_color_space == JCS_RGB) {
+ if (cinfo.output_components != 3) {
+ php_gd_error_ex(E_WARNING, "gd-jpeg: error: JPEG color
quantization request resulted in output_components == %d (expected 3 for RGB)",
cinfo.output_components);
+ goto error;
+ }
+ channels = 3;
+ } else if (cinfo.out_color_space == JCS_CMYK) {
+ jpeg_saved_marker_ptr marker;
+ if (cinfo.output_components != 4) {
+ php_gd_error_ex(E_WARNING, "gd-jpeg: error: JPEG color
quantization request resulted in output_components == %d (expected 4 for CMYK)",
cinfo.output_components);
+ goto error;
+ }
+ channels = 4;
+ marker = cinfo.marker_list;
+ while (marker) {
+ if ((marker->marker == (JPEG_APP0 + 14)) &&
(marker->data_length >= 12) && (!strncmp((const char *) marker->data, "Adobe", 5))) {
+ inverted = 1;
+ break;
+ }
+ marker = marker->next;
+ }
+ } else {
+ php_gd_error_ex(E_WARNING, "gd-jpeg: error: unexpected colorspace.");
goto error;
}
@@ -311,22 +355,37 @@
goto error;
#endif /* BITS_IN_JSAMPLE == 12 */
- row = safe_emalloc(cinfo.output_width * 3, sizeof(JSAMPLE), 0);
- memset(row, 0, cinfo.output_width * 3 * sizeof(JSAMPLE));
+ row = safe_emalloc(cinfo.output_width * channels, sizeof(JSAMPLE), 0);
+ memset(row, 0, cinfo.output_width * channels * sizeof(JSAMPLE));
rowptr[0] = row;
- for (i = 0; i < cinfo.output_height; i++) {
- register JSAMPROW currow = row;
- register int *tpix = im->tpixels[i];
- nrows = jpeg_read_scanlines (&cinfo, rowptr, 1);
- if (nrows != 1) {
- php_gd_error_ex(E_WARNING, "gd-jpeg: error:
jpeg_read_scanlines returns %u, expected 1", nrows);
- goto error;
+ if (cinfo.out_color_space == JCS_CMYK) {
+ for (i = 0; i < cinfo.output_height; i++) {
+ register JSAMPROW currow = row;
+ register int *tpix = im->tpixels[i];
+ nrows = jpeg_read_scanlines (&cinfo, rowptr, 1);
+ if (nrows != 1) {
+ php_gd_error_ex(E_WARNING, "gd-jpeg: error:
jpeg_read_scanlines returns %u, expected 1", nrows);
+ goto error;
+ }
+ for (j = 0; j < cinfo.output_width; j++, currow += 4, tpix++) {
+ *tpix = CMYKToRGB (currow[0], currow[1], currow[2],
currow[3], inverted);
+ }
}
- for (j = 0; j < cinfo.output_width; j++, currow += 3, tpix++) {
- *tpix = gdTrueColor (currow[0], currow[1], currow[2]);
+ } else {
+ for (i = 0; i < cinfo.output_height; i++) {
+ register JSAMPROW currow = row;
+ register int *tpix = im->tpixels[i];
+ nrows = jpeg_read_scanlines (&cinfo, rowptr, 1);
+ if (nrows != 1) {
+ php_gd_error_ex(E_WARNING, "gd-jpeg: error:
jpeg_read_scanlines returns %u, expected 1", nrows);
+ goto error;
+ }
+ for (j = 0; j < cinfo.output_width; j++, currow += 3, tpix++) {
+ *tpix = gdTrueColor (currow[0], currow[1], currow[2]);
+ }
}
- }
+ }
if (jpeg_finish_decompress (&cinfo) != TRUE) {
php_gd_error("gd-jpeg: warning: jpeg_finish_decompress reports
suspended data source");
@@ -353,8 +412,19 @@
return 0;
}
-/*
+/* A very basic conversion approach, TBB */
+static int CMYKToRGB(int c, int m, int y, int k, int inverted)
+{
+ if (inverted) {
+ c = 255 - c;
+ m = 255 - m;
+ y = 255 - y;
+ k = 255 - k;
+ }
+ return gdTrueColor((255 - c) * (255 - k) / 255, (255 - m) * (255 - k) / 255,
(255 - y) * (255 - k) / 255);
+}
+/*
* gdIOCtx JPEG data sources and sinks, T. Boutell
* almost a simple global replace from T. Lane's stdio versions.
*
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd_png.c?r1=1.4.2.6&r2=1.4.2.7&ty=u
Index: php-src/ext/gd/libgd/gd_png.c
diff -u php-src/ext/gd/libgd/gd_png.c:1.4.2.6 php-src/ext/gd/libgd/gd_png.c:1.4.2.7
--- php-src/ext/gd/libgd/gd_png.c:1.4.2.6 Thu Dec 25 17:33:03 2003
+++ php-src/ext/gd/libgd/gd_png.c Mon Mar 29 13:21:00 2004
@@ -93,6 +93,14 @@
return im;
}
+gdImagePtr gdImageCreateFromPngPtr (int size, void *data)
+{
+ gdImagePtr im;
+ gdIOCtx *in = gdNewDynamicCtxEx(size, data, 0);
+ im = gdImageCreateFromPngCtx(in);
+ in->gd_free(in);
+ return im;
+}
/* This routine is based in part on the Chapter 13 demo code in "PNG: The
* Definitive Guide" (http://www.cdrom.com/pub/png/pngbook.html).
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd_wbmp.c?r1=1.3.2.1&r2=1.3.2.2&ty=u
Index: php-src/ext/gd/libgd/gd_wbmp.c
diff -u php-src/ext/gd/libgd/gd_wbmp.c:1.3.2.1 php-src/ext/gd/libgd/gd_wbmp.c:1.3.2.2
--- php-src/ext/gd/libgd/gd_wbmp.c:1.3.2.1 Wed Mar 5 11:04:20 2003
+++ php-src/ext/gd/libgd/gd_wbmp.c Mon Mar 29 13:21:00 2004
@@ -192,6 +192,15 @@
return (im);
}
+gdImagePtr gdImageCreateFromWBMPPtr (int size, void *data)
+{
+ gdImagePtr im;
+ gdIOCtx *in = gdNewDynamicCtxEx(size, data, 0);
+ im = gdImageCreateFromWBMPCtx(in);
+ in->gd_free(in);
+ return im;
+}
+
/* gdImageWBMP
** -----------
*/
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gdfontg.c?r1=1.1&r2=1.1.4.1&ty=u
Index: php-src/ext/gd/libgd/gdfontg.c
diff -u php-src/ext/gd/libgd/gdfontg.c:1.1 php-src/ext/gd/libgd/gdfontg.c:1.1.4.1
--- php-src/ext/gd/libgd/gdfontg.c:1.1 Fri Apr 12 22:03:08 2002
+++ php-src/ext/gd/libgd/gdfontg.c Mon Mar 29 13:21:00 2004
@@ -4381,4 +4381,9 @@
gdFontPtr gdFontGiant = &gdFontGiantRep;
+gdFontPtr gdFontGetGiant(void)
+{
+ return gdFontGiant;
+}
+
/* This file has not been truncated. */
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gdfontg.h?r1=1.1&r2=1.1.4.1&ty=u
Index: php-src/ext/gd/libgd/gdfontg.h
diff -u php-src/ext/gd/libgd/gdfontg.h:1.1 php-src/ext/gd/libgd/gdfontg.h:1.1.4.1
--- php-src/ext/gd/libgd/gdfontg.h:1.1 Fri Apr 12 22:03:08 2002
+++ php-src/ext/gd/libgd/gdfontg.h Mon Mar 29 13:21:00 2004
@@ -20,6 +20,7 @@
#include "gd.h"
extern gdFontPtr gdFontGiant;
+extern gdFontPtr gdFontGetGiant(void);
#ifdef __cplusplus
}
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gdfontl.c?r1=1.1&r2=1.1.4.1&ty=u
Index: php-src/ext/gd/libgd/gdfontl.c
diff -u php-src/ext/gd/libgd/gdfontl.c:1.1 php-src/ext/gd/libgd/gdfontl.c:1.1.4.1
--- php-src/ext/gd/libgd/gdfontl.c:1.1 Fri Apr 12 22:03:08 2002
+++ php-src/ext/gd/libgd/gdfontl.c Mon Mar 29 13:21:00 2004
@@ -4638,4 +4638,9 @@
gdFontPtr gdFontLarge = &gdFontLargeRep;
+gdFontPtr gdFontGetLarge(void)
+{
+ return gdFontLarge;
+}
+
/* This file has not been truncated. */
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gdfontl.h?r1=1.1&r2=1.1.4.1&ty=u
Index: php-src/ext/gd/libgd/gdfontl.h
diff -u php-src/ext/gd/libgd/gdfontl.h:1.1 php-src/ext/gd/libgd/gdfontl.h:1.1.4.1
--- php-src/ext/gd/libgd/gdfontl.h:1.1 Fri Apr 12 22:03:08 2002
+++ php-src/ext/gd/libgd/gdfontl.h Mon Mar 29 13:21:00 2004
@@ -21,6 +21,7 @@
#include "gd.h"
extern gdFontPtr gdFontLarge;
+extern gdFontPtr gdFontGetLarge(void);
#ifdef __cplusplus
}
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gdfontmb.c?r1=1.1&r2=1.1.4.1&ty=u
Index: php-src/ext/gd/libgd/gdfontmb.c
diff -u php-src/ext/gd/libgd/gdfontmb.c:1.1 php-src/ext/gd/libgd/gdfontmb.c:1.1.4.1
--- php-src/ext/gd/libgd/gdfontmb.c:1.1 Fri Apr 12 22:03:08 2002
+++ php-src/ext/gd/libgd/gdfontmb.c Mon Mar 29 13:21:00 2004
@@ -3868,4 +3868,9 @@
gdFontPtr gdFontMediumBold = &gdFontMediumBoldRep;
+gdFontPtr gdFontGetMediumBold(void)
+{
+ return gdFontMediumBold;
+}
+
/* This file has not been truncated. */
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gdfontmb.h?r1=1.1&r2=1.1.4.1&ty=u
Index: php-src/ext/gd/libgd/gdfontmb.h
diff -u php-src/ext/gd/libgd/gdfontmb.h:1.1 php-src/ext/gd/libgd/gdfontmb.h:1.1.4.1
--- php-src/ext/gd/libgd/gdfontmb.h:1.1 Fri Apr 12 22:03:08 2002
+++ php-src/ext/gd/libgd/gdfontmb.h Mon Mar 29 13:21:00 2004
@@ -19,6 +19,7 @@
#include "gd.h"
extern gdFontPtr gdFontMediumBold;
+extern gdFontPtr gdFontGetMediumBold(void);
#ifdef __cplusplus
}
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gdfonts.c?r1=1.1&r2=1.1.4.1&ty=u
Index: php-src/ext/gd/libgd/gdfonts.c
diff -u php-src/ext/gd/libgd/gdfonts.c:1.1 php-src/ext/gd/libgd/gdfonts.c:1.1.4.1
--- php-src/ext/gd/libgd/gdfonts.c:1.1 Fri Apr 12 22:03:09 2002
+++ php-src/ext/gd/libgd/gdfonts.c Mon Mar 29 13:21:00 2004
@@ -3868,4 +3868,9 @@
gdFontPtr gdFontSmall = &gdFontSmallRep;
+gdFontPtr gdFontGetSmall(void)
+{
+ return gdFontSmall;
+}
+
/* This file has not been truncated. */
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gdfonts.h?r1=1.1&r2=1.1.4.1&ty=u
Index: php-src/ext/gd/libgd/gdfonts.h
diff -u php-src/ext/gd/libgd/gdfonts.h:1.1 php-src/ext/gd/libgd/gdfonts.h:1.1.4.1
--- php-src/ext/gd/libgd/gdfonts.h:1.1 Fri Apr 12 22:03:09 2002
+++ php-src/ext/gd/libgd/gdfonts.h Mon Mar 29 13:21:00 2004
@@ -19,6 +19,7 @@
#include "gd.h"
extern gdFontPtr gdFontSmall;
+extern gdFontPtr gdFontGetSmall(void);
#ifdef __cplusplus
}
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gdfontt.c?r1=1.1&r2=1.1.4.1&ty=u
Index: php-src/ext/gd/libgd/gdfontt.c
diff -u php-src/ext/gd/libgd/gdfontt.c:1.1 php-src/ext/gd/libgd/gdfontt.c:1.1.4.1
--- php-src/ext/gd/libgd/gdfontt.c:1.1 Fri Apr 12 22:03:09 2002
+++ php-src/ext/gd/libgd/gdfontt.c Mon Mar 29 13:21:00 2004
@@ -2589,4 +2589,9 @@
gdFontPtr gdFontTiny = &gdFontTinyRep;
+gdFontPtr gdFontGetTiny(void)
+{
+ return gdFontTiny;
+}
+
/* This file has not been truncated. */
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gdfontt.h?r1=1.1&r2=1.1.4.1&ty=u
Index: php-src/ext/gd/libgd/gdfontt.h
diff -u php-src/ext/gd/libgd/gdfontt.h:1.1 php-src/ext/gd/libgd/gdfontt.h:1.1.4.1
--- php-src/ext/gd/libgd/gdfontt.h:1.1 Fri Apr 12 22:03:09 2002
+++ php-src/ext/gd/libgd/gdfontt.h Mon Mar 29 13:21:00 2004
@@ -20,6 +20,7 @@
#include "gd.h"
extern gdFontPtr gdFontTiny;
+extern gdFontPtr gdFontGetTiny(void);
#ifdef __cplusplus
}
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gdft.c?r1=1.11.2.15&r2=1.11.2.16&ty=u
Index: php-src/ext/gd/libgd/gdft.c
diff -u php-src/ext/gd/libgd/gdft.c:1.11.2.15 php-src/ext/gd/libgd/gdft.c:1.11.2.16
--- php-src/ext/gd/libgd/gdft.c:1.11.2.15 Sat Mar 6 13:26:06 2004
+++ php-src/ext/gd/libgd/gdft.c Mon Mar 29 13:21:00 2004
@@ -79,9 +79,9 @@
/*
* The character (space) used to separate alternate fonts in the
- * fontlist parameter to gdImageStringFT.
+ * fontlist parameter to gdImageStringFT. 2.0.18: space was a oor choice for this.
*/
-#define LISTSEPARATOR " "
+#define LISTSEPARATOR ";"
/*
* DEFAULT_FONTPATH and PATHSEPARATOR are host type dependent and
@@ -473,7 +473,7 @@
encoding = charmap->encoding_id;
/* EAM DEBUG - Newer versions of libfree2 make it easier by defining encodings */
-#ifdef FT_ENCODING_MS_SYMBOL
+#if (defined(FREETYPE_MAJOR) && (FREETYPE_MAJOR >=2 ) && (FREETYPE_MINOR >= 1))
if (charmap->encoding == FT_ENCODING_MS_SYMBOL
|| charmap->encoding == FT_ENCODING_ADOBE_CUSTOM
|| charmap->encoding == FT_ENCODING_ADOBE_STANDARD) {
@@ -482,7 +482,7 @@
a->face->charmap = charmap;
return (void *)a;
}
-#endif /* FT_ENCODING_MS_SYMBOL */
+#endif /* Freetype 2.1 or better */
/* EAM DEBUG */
if ((platform == 3 && encoding == 1) /* Windows Unicode */
@@ -777,6 +777,11 @@
FT_Done_FreeType(library);
}
}
+
+void gdFreeFontCache()
+{
+ gdFontCacheShutdown();
+}
int gdFontCacheSetup(void)
{
@@ -965,7 +970,7 @@
}
/* EAM DEBUG */
-#ifdef FT_ENCODING_MS_SYMBOL
+#if (defined(FREETYPE_MAJOR) && (FREETYPE_MAJOR >=2 ) && (FREETYPE_MINOR >= 1))
if (font->face->charmap->encoding == FT_ENCODING_MS_SYMBOL) {
/* I do not know the significance of the constant 0xf000.
* It was determined by inspection of the character codes
@@ -975,7 +980,7 @@
ch |= 0xf000;
next += len;
} else
-#endif /* FT_ENCODING_MS_SYMBOL */
+#endif /* Freetype 2.1 or better */
/* EAM DEBUG */
switch (m) {
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php