#include <stdio.h>
#include "graph.h"
#include <math.h>
int mark (double, double, int, char *);

main()
	{
	int mode;
	double re, im, a, x, y, xt, d_to_r;
	char *idx;
	mode = CGA_320x200;		/* 320x200, 4 color */
	g_init (mode);			/* select graphics mode: default pen = 1, lable origin = 1 */
	frame ();			/* frame hard clip limit */

	scale (0, 100, 0, 100);
	move (50,100);
	lorg (6);
	labelf ("Labeling and Label Origins");
	csize (3,0,0);
	mark (5,5,1,"lorg (1)");
	mark (5,15,2,"lorg (2)");
	mark (5,25,3,"lorg (3)");
	mark (40,5,4,"lorg (4)");
	mark (40,15,5,"lorg (5)");
	mark (40,25,6,"lorg (6)");
	mark (85,5,7,"lorg (7)");
	mark (85,15,8,"lorg (8)");
	mark (85,25,9,"lorg (9)");

	lorg (1);
	move (5,85);
	csize (2,0,0);
	labelf ("c");
	csize (3,0,0);
	move (7,84.5);
	labelf ("s");
	csize (4,0,0);
	move (9,84);
	labelf ("i");
	csize (5,0,0);
	move (11.5,83.5);
	labelf ("z");
	csize (6,0,0);
	move (15,83);
	labelf ("e");
	move (5,80);
	csize (3,0,0);
	labelf ("change size");

	move (75,85);
	csize (3,0,-15);
	labelf ("t");
	csize (3,0,-10);
	labelf ("i");
	csize (3,0,-5);
	labelf ("l");
	csize (3,0,0);
	labelf ("t");
	csize (3,0,5);
	labelf ("i");
	csize (3,0,10);
	labelf ("n");
	csize (3,0,15);
	labelf ("g");
	csize (3,0,0);
	move (95,82);
	lorg (8);
	labelf ("Add tilt");

	lorg (1);
	move (80,70);
	csize (3.5,0,0);
	labelf ("0.2 ");
	csize (3.5,.2,0);
	labelf ("A");
	move (80,65);
	csize (3.5,0,0);
	labelf ("0.4 ");
	csize (3.5,.4,0);
	labelf ("A");
	move (80,60);
	csize (3.5,0,0);
	labelf ("0.6 ");
	csize (3.5,.6,0);
	labelf ("A");
	move (80,55);
	csize (3.5,0,0);
	labelf ("0.8 ");
	csize (3.5,.8,0);
	labelf ("A");
	move (80,50);
	csize (3.5,0,0);
	labelf ("1.0 ");
	csize (3.5,1.0,0);
	labelf ("A");
	csize (3,0,0);
	move (80,45);
	labelf ("aspect\nratio");

	csize (3,0,0);
	d_to_r = 3.1415926 / 180;
	re = cos (-10 * d_to_r);
	im = sin (-10 * d_to_r);
	x = -20 * cos (40 * d_to_r);
	y = -20 * sin (40 * d_to_r);
	move (50 + x, 50 + y);
	idx = "Creative labeling in action             ";
	lorg (4);
	unclip ();
	for (a = 0; a >= -360.0; a -= 10)
		{
		ldir (130 + a);
		move (50 + x, 50 + y);
		labelf ("%c", *idx);
		++idx;
		xt = x;
		x = x * re - y * im;
		y = y * re + xt * im;
		}
	exit(0);
	}

int mark (x, y, org, text) double x, y; int org; char * text;
	{
	move (x-1, y);
	draw (x+1, y);
	move (x, y-1);
	draw (x, y+1);
	move (x,y);
	lorg (org);
	labelf ("%s",text);
	return;
	}