Source

gd-libgd / src / fontwheeltest.c

Full commit
pierre b0243fe 




pierre b623f93 



pierre 2399023 

pierre b623f93 

pierre 2399023 



pierre b623f93 

pierre 2399023 
pierre cfa7ee3 

pierre b623f93 


pierre cfa7ee3 
pierre b623f93 
pierre 2399023 








pierre cfa7ee3 



pierre 2399023 
pierre b623f93 
pierre cfa7ee3 

pierre b623f93 
pierre cfa7ee3 

pierre b623f93 
pierre 2399023 

pierre cfa7ee3 

pierre 2399023 
pierre b623f93 
pierre 2399023 
pierre b623f93 

pierre cfa7ee3 
pierre 2399023 


pierre b623f93 



pierre 2399023 








pierre b623f93 
pierre cfa7ee3 
pierre b623f93 
pierre 2399023 


pierre b623f93 








pierre 2399023 



pierre b623f93 
pierre 2399023 

pierre b623f93 
pierre 2399023 
pierre b623f93 
pierre cfa7ee3 

pierre 2399023 
pierre cfa7ee3 
pierre b623f93 

pierre 2399023 
pierre b623f93 
pierre 2399023 
pierre b623f93 

pierre 2399023 
pierre b623f93 

pierre 2399023 

pierre b623f93 


pierre cfa7ee3 
pierre 2399023 
pierre cfa7ee3 
pierre 2399023 
pierre cfa7ee3 
pierre 2399023 
pierre cfa7ee3 
pierre 2399023 
pierre b623f93 
pierre cfa7ee3 
pierre 2399023 
pierre cfa7ee3 
pierre 2399023 
pierre cfa7ee3 
pierre 2399023 
pierre cfa7ee3 
pierre 2399023 
pierre b623f93 
pierre 2399023 
pierre b623f93 



#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include <math.h>
#include "gd.h"
#define DEGTORAD(x) ( (x) * (2.0 * 3.14159265) / 360.0 )

void
doerr (FILE * err, const char *msg)
{
  if (err)
    {
      fprintf (err, "%s\n", msg);
      fflush (err);
    }
}

void
dowheel (gdImagePtr im, int color, char *fontfile, int fontsize,
	double angle, int x, int y, int offset, char *string)
{
  int brect[8];
  FILE *err;
  double curangrads, curang, x0, y0;
  char *cp;

  err = fopen ("err.out", "a");
  doerr (err, "------------- New fontwheel --------------");
  doerr (err, fontfile);
  doerr (err, string);
  doerr (err, "------------------------------------------");

  for (curang = 0.0; curang < 360.0; curang += angle)
    {
      curangrads = DEGTORAD(curang);
      x0 = x + cos (curangrads) * offset;
      y0 = y - sin (curangrads) * offset;

      /* The case of newlines is taken care of in the gdImageStringTTF call */
#if defined(OLDER_GD)
      cp = gdImageStringTTF (im, brect, color, fontfile, fontsize,
			  curangrads, x0, y0, string);
#else
      cp = gdImageStringFT (im, brect, color, fontfile, fontsize,
			 curangrads, x0, y0, string);
#endif
      if (cp)
	doerr (err, cp);

      gdImagePolygon (im, (gdPointPtr)brect, 4, color);
    }

  fclose (err);
}

#if 0
void
dolines (gdImagePtr im, int color, double incr, int x, int y, int offset,
	 int length)
{
  double curang;
  double angle;
  double x0, x1, y0, y1;
  for (curang = 0.0; curang < 360.0; curang += incr)
    {
      angle = curang * (2.0 * 3.14159265) / 360.0;
      x0 = cos (angle) * offset + x;
      x1 = cos (angle) * (offset + length) + x;
      y0 = sin (angle) * offset + y;
      y1 = sin (angle) * (offset + length) + y;
      gdImageLine (im, x0, y0, x1, y1, color);
    }
}
#endif

void
dotest (char *font, int size, double incr,
	int w, int h, char *string, const char *filename)
{
  gdImagePtr im;
  FILE *out;
  int bg;
  int fc;
  int lc;
  int xc = w / 2;
  int yc = h / 2;

  im = gdImageCreate (w, h);
  bg = gdImageColorAllocate (im, 0, 0, 0);

  gdImageFilledRectangle (im, 1, 1, w - 1, h - 1, bg);

  fc = gdImageColorAllocate (im, 255, 192, 192);
  lc = gdImageColorAllocate (im, 192, 255, 255);

  out = fopen (filename, "wb");

  dowheel (im, fc, font, size, incr, xc, yc, 20, string);
#if 0
  dolines (im, lc, incr, xc, yc, 20, 120);
#endif

#if defined(HAVE_LIBPNG)
  gdImagePng (im, out);
#elif defined(HAVE_LIBJPEG)
  gdImageJpeg (im, out, -1);
#endif

  fclose (out);
}

int
main (int argc, char **argv)
{

#if defined(HAVE_LIBPNG)
  dotest ("times", 16, 20.0, 400, 400, "Hello, there!",
	  "fontwheeltest1.png");
  dotest ("times", 16, 30.0, 400, 400, "Hello, there!",
	  "fontwheeltest2.png");
  dotest ("arial", 16, 45.0, 400, 400, "Hello, there!",
	  "fontwheeltest3.png");
  dotest ("arial", 16, 90.0, 400, 400, "Hello\nthere!",
	  "fontwheeltest4.png");
#elif defined(HAVE_LIBJPEG)
  dotest ("times", 16, 20.0, 400, 400, "Hello, there!",
	  "fontwheeltest1.jpeg");
  dotest ("times", 16, 30.0, 400, 400, "Hello, there!",
	  "fontwheeltest2.jpeg");
  dotest ("arial", 16, 45.0, 400, 400, "Hello, there!",
	  "fontwheeltest3.jpeg");
  dotest ("arial", 16, 90.0, 400, 400, "Hello\nthere!",
	  "fontwheeltest4.jpeg");
#else
  fprintf (stderr, "no PNG or JPEG support\n");
#endif

  return 0;
}