root/ext/gd/libgd/gdtestft.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. main

   1 
   2 #include "gd.h"
   3 #include <string.h>
   4 
   5 #define PI 3.141592
   6 #define DEG2RAD(x) ((x)*PI/180.)
   7 
   8 #define MAX(x,y) ((x) > (y) ? (x) : (y))
   9 #define MIN(x,y) ((x) < (y) ? (x) : (y))
  10 
  11 #define MAX4(x,y,z,w) \
  12         ((MAX((x),(y))) > (MAX((z),(w))) ? (MAX((x),(y))) : (MAX((z),(w))))
  13 #define MIN4(x,y,z,w) \
  14         ((MIN((x),(y))) < (MIN((z),(w))) ? (MIN((x),(y))) : (MIN((z),(w))))
  15 
  16 #define MAXX(x) MAX4(x[0],x[2],x[4],x[6])
  17 #define MINX(x) MIN4(x[0],x[2],x[4],x[6])
  18 #define MAXY(x) MAX4(x[1],x[3],x[5],x[7])
  19 #define MINY(x) MIN4(x[1],x[3],x[5],x[7])
  20 
  21 int
  22 main (int argc, char *argv[])
  23 {
  24 #ifndef HAVE_LIBFREETYPE
  25   fprintf (stderr, "gd was not compiled with HAVE_LIBFREETYPE defined.\n");
  26   fprintf (stderr, "Install the FreeType library, including the\n");
  27   fprintf (stderr, "header files. Then edit the gd Makefile, type\n");
  28   fprintf (stderr, "make clean, and type make again.\n");
  29   return 1;
  30 #else
  31   gdImagePtr im;
  32   int black;
  33   int white;
  34   int brect[8];
  35   int x, y;
  36   char *err;
  37   FILE *out;
  38 #ifdef JISX0208
  39   char *s = "Hello. こんにちは Qyjpqg,";        /* String to draw. */
  40 #else
  41   char *s = "Hello. Qyjpqg,";   /* String to draw. */
  42 #endif
  43 
  44   double sz = 40.;
  45 
  46 #if 0
  47   double angle = 0.;
  48 #else
  49   double angle = DEG2RAD (-90);
  50 #endif
  51 
  52 #ifdef JISX0208
  53   char *f = "/usr/openwin/lib/locale/ja/X11/fonts/TT/HG-MinchoL.ttf";   /* UNICODE */
  54   /* char *f = "/usr/local/lib/fonts/truetype/DynaFont/dfpop1.ttf"; *//* SJIS */
  55 #else
  56   char *f = "times";            /* TrueType font */
  57 #endif
  58 
  59   /* obtain brect so that we can size the image */
  60   err = gdImageStringFT ((gdImagePtr) NULL, &brect[0], 0, f, sz, angle, 0, 0, s);
  61   if (err)
  62     {
  63       fprintf (stderr, "%s", err);
  64       return 1;
  65     }
  66 
  67   /* create an image just big enough for the string */
  68   x = MAXX (brect) - MINX (brect) + 6;
  69   y = MAXY (brect) - MINY (brect) + 6;
  70 #if 0
  71   im = gdImageCreate (500, 500);
  72 #else
  73   /* gd 2.0: true color images can use freetype too */
  74   im = gdImageCreateTrueColor (x, y);
  75 #endif
  76 
  77   /* Background color. gd 2.0: fill the image with it; truecolor
  78      images have a black background otherwise. */
  79   white = gdImageColorResolve (im, 255, 255, 255);
  80   gdImageFilledRectangle (im, 0, 0, x, y, white);
  81   black = gdImageColorResolve (im, 0, 0, 0);
  82 
  83   /* render the string, offset origin to center string */
  84   x = 0 - MINX (brect) + 3;
  85   y = 0 - MINY (brect) + 3;
  86 
  87   err = gdImageStringFT (im, NULL, black, f, sz, angle, x, y, s);
  88   if (err)
  89     {
  90       fprintf (stderr, "%s", err);
  91       return 1;
  92     }
  93   /* TBB: Write img to test/fttest.png */
  94   out = fopen ("test/fttest.png", "wb");
  95   if (!out)
  96     {
  97       fprintf (stderr, "Can't create test/fttest.png\n");
  98       exit (1);
  99     }
 100   gdImagePng (im, out);
 101   fclose (out);
 102   fprintf (stderr, "Test image written to test/fttest.png\n");
 103   /* Destroy it */
 104   gdImageDestroy (im);
 105 
 106   return 0;
 107 #endif /* HAVE_FREETYPE */
 108 }

/* [<][>][^][v][top][bottom][index][help] */