Source

gd-libgd / src / fontwheeltest.c

Full commit
pierre b0243fe 




pierre b623f93 



pierre 2399023 

pierre b623f93 
pierrejoye e20413b 



pierre b623f93 

pierre 2399023 
pierre cfa7ee3 
pierrejoye e20413b 
pierre b623f93 
pierrejoye e20413b 
















pierre b623f93 
pierrejoye e20413b 

pierre b623f93 
pierrejoye e20413b 

pierre b623f93 
pierrejoye e20413b 

pierre cfa7ee3 
pierrejoye e20413b 

pierre b623f93 
pierrejoye e20413b 
pierre b623f93 

pierre cfa7ee3 
pierre 2399023 

pierrejoye e20413b 
pierre b623f93 
pierrejoye e20413b 










pierre b623f93 
pierre cfa7ee3 
pierre b623f93 
pierre 2399023 

pierrejoye e20413b 
pierre b623f93 
pierrejoye e20413b 



pierre a4e6625 
pierrejoye e20413b 
pierre a4e6625 
pierrejoye e20413b 

pierre b623f93 
pierrejoye e20413b 

pierre 2399023 
pierrejoye e20413b 
pierre b623f93 
pierrejoye e20413b 
pierre a4e6625 
pierrejoye e20413b 
pierre a4e6625 
pierre b623f93 
pierrejoye e20413b 
pierre b623f93 
pierrejoye e20413b 
pierre cfa7ee3 
pierrejoye e20413b 
pierre cfa7ee3 
pierre b623f93 

pierrejoye e20413b 
pierre b623f93 
pierrejoye e20413b 
pierre b623f93 

pierrejoye e20413b 
pierre b623f93 

pierre 2399023 
Gilles Espinasse a82781c 
pierre b623f93 


pierrejoye e20413b 







pierre b623f93 
pierrejoye e20413b 







pierre b623f93 
Ondřej Surý 32b1307 
pierre b623f93 

pierrejoye e20413b 
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;
#if 0
	int lc;
#endif
	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);
#if 0
	lc = gdImageColorAllocate (im, 192, 255, 255);
#endif

	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(void)
{

#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;
}