summaryrefslogtreecommitdiff
path: root/Build/source/libs/gd/gd-2.0.35/gdft.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/gd/gd-2.0.35/gdft.c')
-rw-r--r--Build/source/libs/gd/gd-2.0.35/gdft.c38
1 files changed, 25 insertions, 13 deletions
diff --git a/Build/source/libs/gd/gd-2.0.35/gdft.c b/Build/source/libs/gd/gd-2.0.35/gdft.c
index 27e7d84864b..7db45499af5 100644
--- a/Build/source/libs/gd/gd-2.0.35/gdft.c
+++ b/Build/source/libs/gd/gd-2.0.35/gdft.c
@@ -22,11 +22,13 @@
#include <unistd.h>
#else
#include <io.h>
+#ifndef R_OK
#define R_OK 04 /* Needed in Windows */
#endif
+#endif
/* number of antialised colors for indexed bitmaps */
-#define NUMCOLORS 8
+#define gd_NUMCOLORS 8
static int fontConfigFlag = 0;
@@ -537,7 +539,7 @@ tweenColorTest (void *element, void *key)
/*
* Computes a color in im's color table that is part way between
* the background and foreground colors proportional to the gray
- * pixel value in the range 0-NUMCOLORS. The fg and bg colors must already
+ * pixel value in the range 0-gd_NUMCOLORS. The fg and bg colors must already
* be in the color table for palette images. For truecolor images the
* returned value simply has an alpha component and gdImageAlphaBlend
* does the work so that text can be alpha blended across a complex
@@ -564,14 +566,14 @@ tweenColorFetch (char **error, void *key)
/* if fg is specified by a negative color idx, then don't antialias */
if (fg < 0)
{
- if ((pixel + pixel) >= NUMCOLORS)
+ if ((pixel + pixel) >= gd_NUMCOLORS)
a->tweencolor = -fg;
else
a->tweencolor = bg;
}
else
{
- npixel = NUMCOLORS - pixel;
+ npixel = gd_NUMCOLORS - pixel;
if (im->trueColor)
{
/* 2.0.1: use gdImageSetPixel to do the alpha blending work,
@@ -584,20 +586,20 @@ tweenColorFetch (char **error, void *key)
gdTrueColorGetBlue (fg),
gdAlphaMax -
(gdTrueColorGetAlpha (fg) *
- pixel / NUMCOLORS));
+ pixel / gd_NUMCOLORS));
}
else
{
a->tweencolor = gdImageColorResolve (im,
(pixel * im->red[fg] +
npixel * im->red[bg]) /
- NUMCOLORS,
+ gd_NUMCOLORS,
(pixel * im->green[fg] +
npixel * im->green[bg]) /
- NUMCOLORS,
+ gd_NUMCOLORS,
(pixel * im->blue[fg] +
npixel * im->blue[bg]) /
- NUMCOLORS);
+ gd_NUMCOLORS);
}
}
return (void *) a;
@@ -734,23 +736,23 @@ gdft_draw_bitmap (gdCache_head_t * tc_cache, gdImage * im, int fg,
if (bitmap.pixel_mode == ft_pixel_mode_grays)
{
/*
- * Round to NUMCOLORS levels of antialiasing for
+ * Round to gd_NUMCOLORS levels of antialiasing for
* index color images since only 256 colors are
* available.
*/
- tc_key.pixel = ((bitmap.buffer[pc] * NUMCOLORS)
+ tc_key.pixel = ((bitmap.buffer[pc] * gd_NUMCOLORS)
+ bitmap.num_grays / 2)
/ (bitmap.num_grays - 1);
}
else if (bitmap.pixel_mode == ft_pixel_mode_mono)
{
tc_key.pixel = ((bitmap.buffer[pc / 8]
- << (pc % 8)) & 128) ? NUMCOLORS : 0;
+ << (pc % 8)) & 128) ? gd_NUMCOLORS : 0;
/* 2.0.5: mode_mono fix from Giuliano Pochini */
tc_key.pixel =
((bitmap.
buffer[(col >> 3) +
- pcr]) & (1 << (~col & 0x07))) ? NUMCOLORS : 0;
+ pcr]) & (1 << (~col & 0x07))) ? gd_NUMCOLORS : 0;
}
else
{
@@ -766,7 +768,7 @@ gdft_draw_bitmap (gdCache_head_t * tc_cache, gdImage * im, int fg,
continue;
/* get pixel location in gd buffer */
pixel = &im->pixels[y][x];
- if (tc_key.pixel == NUMCOLORS)
+ if (tc_key.pixel == gd_NUMCOLORS)
{
/* use fg color directly. gd 2.0.2: watch out for
negative indexes (thanks to David Marwood). */
@@ -1561,6 +1563,16 @@ static char * font_path(char **fontpath, char *name_list)
*/
*fontpath = NULL;
fontsearchpath = getenv ("GDFONTPATH");
+#ifdef WIN32
+ if (!fontsearchpath) {
+ char *ffptr = getenv ("SYSTEMROOT");
+ if (ffptr) {
+ fontsearchpath = malloc (strlen(ffptr) + strlen("\\fonts") + 1);
+ strcpy(fontsearchpath, ffptr);
+ strcat(fontsearchpath, "\\fonts");
+ }
+ }
+#endif
if (!fontsearchpath)
fontsearchpath = DEFAULT_FONTPATH;
fontlist = strdup (name_list);