[Mapserver-users] Labels with strange AUTO angles - some answers

Ed McNierney ed at topozone.com
Wed Mar 5 10:32:19 EST 2003


This is a multi-part message in MIME format.

------_=_NextPart_001_01C2E32C.689EB128
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

"It isn't what we don't know that gives us trouble, it's what we know =
that ain't so." -- Will Rogers

After a long night of exploring lots of code I've never seen before, I'd =
like to take issue with the following statement in the GD 2.0.11 =
documentation, referring to gdImageStringFT angles:

"The direction of rotation is counter-clockwise, with 0 radians (0 =
degrees) at 3 o'clock and PI/2 radians (90 degrees) at 12 o'clock."

Every word of that sentence is accurate - except for one.  MY copy of GD =
2.0.11 (at least) rotates text CLOCKWISE relative to 3 o'clock.  Below =
is a simple test program and attached is the image it creates.  The text =
obviously rotates clockwise.

So now I have a few questions:

1. When a label angle is specified in the map file (e.g. ANGLE 30), what =
is MapServer supposed to do?  The docs do not mention how the angle is =
supposed to be interpreted.  My build rotates text clockwise relative to =
3 o'clock as 0.  Is this expected?

2. This is not an ANGLE AUTO problem.  That is, ANGLE AUTO is =
calculating a reasonable angle and produces the same output as if the =
label angle were explicitly specified as the calculated value.

3. Why am I the only one seeing this?

That last one's important - if ANGLE AUTO is (generally) as badly broken =
as mine is, someone should be shouting about it.  So I'm still =
suspicious that there's something funny with my build.

N.B. - The Windows makefile still makes no reference to GD 2, nor any =
reference to the correct use of GD_USE_TTF and GD_USE_FT.  It appears =
that when using GD 2, GD_USE_FT should be defined and NOT GD_USE_TTF - =
correct?

	- Ed

#include "gd.h"
#include <string.h>

#define MS_DEG_TO_RAD	.0174532925199432958

int main ()
{
	gdImagePtr im;
	int black;
	int white;
	int brect[8];
	int angle;
	char *err;
	char s[64];
	double sz =3D 12.;
	char *f =3D "D:\\times.ttf";
	FILE *pngFile;

	im =3D gdImageCreate(500, 500);
	white =3D gdImageColorResolve(im, 255, 255, 255);
	black =3D gdImageColorResolve(im, 0, 0, 0);

	for (angle =3D 0; angle < 360; angle +=3D 30)
	{
		sprintf (s, "Angle is %d degrees", angle);
		err =3D gdImageStringFT(im, &brect[0], black, f, sz, angle * =
MS_DEG_TO_RAD, 150, 150, s);
		if (err) {fprintf(stderr,err); return 1;}
	}

	pngFile =3D fopen("testgdfont.png", "wb");
	gdImagePng(im, pngFile);
	fclose (pngFile);

	gdImageDestroy(im);

	return 0;
}

------_=_NextPart_001_01C2E32C.689EB128
Content-Type: image/png;
	name="testgdfont.png"
Content-Transfer-Encoding: base64
Content-Description: testgdfont.png
Content-Disposition: attachment;
	filename="testgdfont.png"

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
RU5ErkJggg==

------_=_NextPart_001_01C2E32C.689EB128--



More information about the mapserver-users mailing list