cvs: gd(GD_2_0) /libgd/src gdft.c

[email protected] ("Guenter Knauf") Sat, 06 Oct 2007 22:19:37 -0000
Newsgroups php.gd.cvs
Message-ID <cvsguenter1191709177@cvsserver>
guenter		Sat Oct  6 22:19:37 2007 UTC

  Modified files:              (Branch: GD_2_0)
    /gd/libgd/src	gdft.c 
  Log:
  fixed FS#83 — re-defines within gdft.c when compiled with MingW32;
  added int casts for the gdft_draw_bitmap() pen params.
  
http://cvs.php.net/viewvc.cgi/gd/libgd/src/gdft.c?r1=1.28.2.7&r2=1.28.2.8&diff_format=u
Index: gd/libgd/src/gdft.c
diff -u gd/libgd/src/gdft.c:1.28.2.7 gd/libgd/src/gdft.c:1.28.2.8
--- gd/libgd/src/gdft.c:1.28.2.7	Thu Apr 19 12:54:56 2007
+++ gd/libgd/src/gdft.c	Sat Oct  6 22:19:37 2007
@@ -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 @@
 /*
  * 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 @@
   /* 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 @@
 					    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 @@
 	  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 @@
 	    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). */
@@ -1340,8 +1342,8 @@
           /* position rounded down to nearest pixel at current dpi
 		 (the estimate was rounded up to next 1/METRIC_RES, so this should fit) */
 	  gdft_draw_bitmap (tc_cache, im, fg, bm->bitmap,
-                    x + (penf.x * cos_a + penf.y * sin_a)*hdpi/(METRIC_RES*64) + bm->left,
-                    y - (penf.x * sin_a - penf.y * cos_a)*vdpi/(METRIC_RES*64) - bm->top);
+                    (int)(x + (penf.x * cos_a + penf.y * sin_a)*hdpi/(METRIC_RES*64) + bm->left),
+                    (int)(y - (penf.x * sin_a - penf.y * cos_a)*vdpi/(METRIC_RES*64) - bm->top));
 
           FT_Done_Glyph (image);
 	}