/*
 * Copyright 1988 Anant Agarwal
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation for any purpose and without fee is hereby granted, provided
 * that the above copyright notice appear in all copies and that both that
 * copyright notice and this permission notice appear in supporting
 * documentation.  No representations about the suitability of this software
 * for any purpose.  It is provided "as is" without express or implied 
 * warranty.
 *
 * Author:  Anant Agarwal, MIT Laboratory for Computer Science
 */

#include <X11/Xlib.h>
#include <X11/X10.h>
#include <X11/X.h>


/* to invert only in X */
#define MAXY 700
#define MAXX 130
/* to translate only in InterViews*/
#define TY 0
#define TX 0

/* first element gives no of chars */
/*static int  SolidPattern = 0xff;*/
static char  DashedPattern[] = {2,4,4}; /*0xf0*/
static char  StipplePattern[] = {4,4,4,2,2}; /*0xf3*/
static char  PatPattern[] = {4,4,4,2,2}; /*0xf3*/
static char  DotPattern[] = {6,6,3,1,3,1,3}; /* */

/*symbol defs */
static SymbolType currSymbol=square;
static int currSymbolSize=0;
static XPoint *Vsym, VsymTmp[50];

/* first element is number of segments plus start point*/
/* second pair is the offset from the center */

static XPoint Vcross[] = {
5, 0,
1, 1, /* do not draw, rel */
-2, -2, 
1, 1,
-1, 1,
2, -2
};
static XPoint Vtriangle[] = {
4, 0, 
0, -1, 
-1, 2, 
2, 0, 
-1, -2 
};
static XPoint Vdiamond[] = {
5, 0, 
1, 0, 
-1, -1, 
-1, 1, 
1, 1, 
1, -1 
};
static XPoint Vsquare[] = {
5, 0, 
1, 1, 
-2, 0, 
0, -2, 
2, 0, 
0, 2 
};
static XPoint Vrectangle[] = {
5, 0, 
1, 2, 
-2, 0, 
0, -4, 
2, 0, 
0, 4 
};
static XPoint Vcircle[] = {
7, 0, 
2, 0, 
-1, -2, 
-2, 0, 
-1, 2, 
1, 2, 
2, 0, 
1, -2 
};
static XPoint Vstar[] = {
11, 0, 
1, 1, 
-2, -2, 
1, 1,
-1, 1,
2, -2,
-1, 1,
0, 1,
0, -2,
0, 1,
1, 0,
-2, 0
};
static XPoint Vplus[] = {
5, 0, 
0, -1, 
0, 2, 
0, -1,
-1, 0,
2, 0, 
};

/* following table maps user-specified fonts to what exists */
static char DefFont[] = "8x13";

static char Pxh3[] =  "6x10";
static char Pxh4[] =  "6x10";
static char Pxh5[] =  "6x10";
static char Pxh6[] =  "6x10";
static char Pxh7[] =  "6x10";
static char Pxh8[] =  "6x10";
static char Pxh9[] =  "6x10";
static char Pxh10[] =  "6x10";
static char Pxh11[] =  "8x13";
static char Pxh12[] =  "8x13";
static char Pxh13[] =  "8x13";
static char Pxh14[] =  "8x13";
static char Pxh15[] =  "8x13";
static char Pxh16[] =  "8x13";
static char Pxh17[] =  "8x13";
static char Pxh18[] =  "8x13";
static char Pxh19[] =  "8x13";
static char Pxh20[] =  "8x13";
static char Pxh21[] =  "8x13";
static char Pxh22[] =  "8x13";
static char Pxh23[] =  "8x13";
static char Pxh24[] =  "8x13";
static char Pxh25[] =  "8x13";
static char Pxh26[] =  "8x13";
static char Pxh27[] =  "8x13";
static char Pxh28[] =  "8x13";
static char Pxh29[] =  "8x13";
static char Pxh30[] =  "8x13";

static char Pxhb3[] =  "6x12";
static char Pxhb4[] =  "6x12";
static char Pxhb5[] =  "6x12";
static char Pxhb6[] =  "6x12";
static char Pxhb7[] =  "6x12";
static char Pxhb8[] =  "6x12";
static char Pxhb9[] =  "6x12";
static char Pxhb10[] =  "6x12";
static char Pxhb11[] =  "8x13bold";
static char Pxhb12[] =  "8x13bold";
static char Pxhb13[] =  "8x13bold";
static char Pxhb14[] =  "8x13bold";
static char Pxhb15[] =  "8x13bold";
static char Pxhb16[] =  "8x13bold";
static char Pxhb17[] =  "8x13bold";
static char Pxhb18[] =  "8x13bold";
static char Pxhb19[] =  "8x13bold";
static char Pxhb20[] =  "8x13bold";
static char Pxhb21[] =  "8x13bold";
static char Pxhb22[] =  "8x13bold";
static char Pxhb23[] =  "8x13bold";
static char Pxhb24[] =  "8x13bold";
static char Pxhb25[] =  "8x13bold";
static char Pxhb26[] =  "8x13bold";
static char Pxhb27[] =  "8x13bold";
static char Pxhb28[] =  "8x13bold";
static char Pxhb29[] =  "8x13bold";
static char Pxhb30[] =  "8x13bold";

static char Pxhi3[] =  "6x10";
static char Pxhi4[] =  "6x10";
static char Pxhi5[] =  "6x10";
static char Pxhi6[] =  "6x10";
static char Pxhi7[] =  "6x10";
static char Pxhi8[] =  "6x10";
static char Pxhi9[] =  "6x10";
static char Pxhi10[] =  "6x10";
static char Pxhi11[] =  "9x15";
static char Pxhi12[] =  "9x15";
static char Pxhi13[] =  "9x15";
static char Pxhi14[] =  "9x15";
static char Pxhi15[] =  "9x15";
static char Pxhi16[] =  "9x15";
static char Pxhi17[] =  "9x15";
static char Pxhi18[] =  "9x15";
static char Pxhi19[] =  "9x15";
static char Pxhi20[] =  "9x15";
static char Pxhi21[] =  "9x15";
static char Pxhi22[] =  "9x15";
static char Pxhi23[] =  "9x15";
static char Pxhi24[] =  "9x15";
static char Pxhi25[] =  "9x15";
static char Pxhi26[] =  "9x15";
static char Pxhi27[] =  "9x15";
static char Pxhi28[] =  "9x15";
static char Pxhi29[] =  "9x15";
static char Pxhi30[] =  "9x15";

static char Pxhbi3[] =  "6x12";
static char Pxhbi4[] =  "6x12";
static char Pxhbi5[] =  "6x12";
static char Pxhbi6[] =  "6x12";
static char Pxhbi7[] =  "6x12";
static char Pxhbi8[] =  "6x12";
static char Pxhbi9[] =  "6x12";
static char Pxhbi10[] =  "6x12";
static char Pxhbi11[] =  "8x13bold";
static char Pxhbi12[] =  "8x13bold";
static char Pxhbi13[] =  "8x13bold";
static char Pxhbi14[] =  "8x13bold";
static char Pxhbi15[] =  "8x13bold";
static char Pxhbi16[] =  "8x13bold";
static char Pxhbi17[] =  "8x13bold";
static char Pxhbi18[] =  "8x13bold";
static char Pxhbi19[] =  "8x13bold";
static char Pxhbi20[] =  "8x13bold";
static char Pxhbi21[] =  "8x13bold";
static char Pxhbi22[] =  "8x13bold";
static char Pxhbi23[] =  "8x13bold";
static char Pxhbi24[] =  "8x13bold";
static char Pxhbi25[] =  "8x13bold";
static char Pxhbi26[] =  "8x13bold";
static char Pxhbi27[] =  "8x13bold";
static char Pxhbi28[] =  "8x13bold";
static char Pxhbi29[] =  "8x13bold";
static char Pxhbi30[] =  "8x13bold";

static char Pxt3[] =  "6x10";
static char Pxt4[] =  "6x10";
static char Pxt5[] =  "6x10";
static char Pxt6[] =  "6x10";
static char Pxt7[] =  "6x10";
static char Pxt8[] =  "6x10";
static char Pxt9[] =  "6x10";
static char Pxt10[] =  "6x10";
static char Pxt11[] =  "8x13";
static char Pxt12[] =  "8x13";
static char Pxt13[] =  "8x13";
static char Pxt14[] =  "8x13";
static char Pxt15[] =  "8x13";
static char Pxt16[] =  "8x13";
static char Pxt17[] =  "8x13";
static char Pxt18[] =  "8x13";
static char Pxt19[] =  "8x13";
static char Pxt20[] =  "8x13";
static char Pxt21[] =  "8x13";
static char Pxt22[] =  "8x13";
static char Pxt23[] =  "8x13";
static char Pxt24[] =  "8x13";
static char Pxt25[] =  "8x13";
static char Pxt26[] =  "8x13";
static char Pxt27[] =  "8x13";
static char Pxt28[] =  "8x13";
static char Pxt29[] =  "8x13";
static char Pxt30[] =  "8x13";

static char Pxtb3[] =  "6x13";
static char Pxtb4[] =  "6x13";
static char Pxtb5[] =  "6x13";
static char Pxtb6[] =  "6x13";
static char Pxtb7[] =  "6x13";
static char Pxtb8[] =  "6x13";
static char Pxtb9[] =  "6x13";
static char Pxtb10[] =  "6x13";
static char Pxtb11[] =  "8x13bold";
static char Pxtb12[] =  "8x13bold";
static char Pxtb13[] =  "8x13bold";
static char Pxtb14[] =  "8x13bold";
static char Pxtb15[] =  "8x13bold";
static char Pxtb16[] =  "8x13bold";
static char Pxtb17[] =  "8x13bold";
static char Pxtb18[] =  "8x13bold";
static char Pxtb19[] =  "8x13bold";
static char Pxtb20[] =  "8x13bold";
static char Pxtb21[] =  "8x13bold";
static char Pxtb22[] =  "8x13bold";
static char Pxtb23[] =  "8x13bold";
static char Pxtb24[] =  "8x13bold";
static char Pxtb25[] =  "8x13bold";
static char Pxtb26[] =  "8x13bold";
static char Pxtb27[] =  "8x13bold";
static char Pxtb28[] =  "8x13bold";
static char Pxtb29[] =  "8x13bold";
static char Pxtb30[] =  "8x13bold";

static char Pxti3[] =  "6x10";
static char Pxti4[] =  "6x10";
static char Pxti5[] =  "6x10";
static char Pxti6[] =  "6x10";
static char Pxti7[] =  "6x10";
static char Pxti8[] =  "6x10";
static char Pxti9[] =  "6x10";
static char Pxti10[] =  "6x10";
static char Pxti11[] =  "9x15";
static char Pxti12[] =  "9x15";
static char Pxti13[] =  "9x15";
static char Pxti14[] =  "9x15";
static char Pxti15[] =  "9x15";
static char Pxti16[] =  "9x15";
static char Pxti17[] =  "9x15";
static char Pxti18[] =  "9x15";
static char Pxti19[] =  "9x15";
static char Pxti20[] =  "9x15";
static char Pxti21[] =  "9x15";
static char Pxti22[] =  "9x15";
static char Pxti23[] =  "9x15";
static char Pxti24[] =  "9x15";
static char Pxti25[] =  "9x15";
static char Pxti26[] =  "9x15";
static char Pxti27[] =  "9x15";
static char Pxti28[] =  "9x15";
static char Pxti29[] =  "9x15";
static char Pxti30[] =  "9x15";

static char Pxtbi3[] =  "6x13";
static char Pxtbi4[] =  "6x13";
static char Pxtbi5[] =  "6x13";
static char Pxtbi6[] =  "6x13";
static char Pxtbi7[] =  "6x13";
static char Pxtbi8[] =  "6x13";
static char Pxtbi9[] =  "6x13";
static char Pxtbi10[] =  "6x13";
static char Pxtbi11[] =  "8x13bold";
static char Pxtbi12[] =  "8x13bold";
static char Pxtbi13[] =  "8x13bold";
static char Pxtbi14[] =  "8x13bold";
static char Pxtbi15[] =  "8x13bold";
static char Pxtbi16[] =  "8x13bold";
static char Pxtbi17[] =  "8x13bold";
static char Pxtbi18[] =  "8x13bold";
static char Pxtbi19[] =  "8x13bold";
static char Pxtbi20[] =  "8x13bold";
static char Pxtbi21[] =  "8x13bold";
static char Pxtbi22[] =  "8x13bold";
static char Pxtbi23[] =  "8x13bold";
static char Pxtbi24[] =  "8x13bold";
static char Pxtbi25[] =  "8x13bold";
static char Pxtbi26[] =  "8x13bold";
static char Pxtbi27[] =  "8x13bold";
static char Pxtbi28[] =  "8x13bold";
static char Pxtbi29[] =  "8x13bold";
static char Pxtbi30[] =  "8x13bold";

static char Pgrk3[] =  "6x13";
static char Pgrk4[] =  "6x13";
static char Pgrk5[] =  "6x13";
static char Pgrk6[] =  "6x13";
static char Pgrk7[] =  "6x13";
static char Pgrk8[] =  "6x13";
static char Pgrk9[] =  "6x13";
static char Pgrk10[] =  "6x13";
static char Pgrk11[] =  "8x13bold";
static char Pgrk12[] =  "8x13bold";
static char Pgrk13[] =  "8x13bold";
static char Pgrk14[] =  "8x13bold";
static char Pgrk15[] =  "8x13bold";
static char Pgrk16[] =  "8x13bold";
static char Pgrk17[] =  "8x13bold";
static char Pgrk18[] =  "8x13bold";
static char Pgrk19[] =  "8x13bold";
static char Pgrk20[] =  "8x13bold";
static char Pgrk21[] =  "8x13bold";
static char Pgrk22[] =  "8x13bold";
static char Pgrk23[] =  "8x13bold";
static char Pgrk24[] =  "8x13bold";
static char Pgrk25[] =  "8x13bold";
static char Pgrk26[] =  "8x13bold";
static char Pgrk27[] =  "8x13bold";
static char Pgrk28[] =  "8x13bold";
static char Pgrk29[] =  "8x13bold";
static char Pgrk30[] =  "8x13bold";



char *xhfont[] = {
Pxh3,Pxh4,Pxh5,Pxh6,Pxh7,Pxh8,Pxh9,Pxh10,Pxh11,Pxh12,Pxh13,Pxh14,
Pxh15,Pxh16,Pxh17,Pxh18,Pxh19,Pxh20,Pxh21,Pxh22,Pxh23,Pxh24,Pxh25,
Pxh26,Pxh27,Pxh28,Pxh29,Pxh30
};

char *xhbfont[] = {
Pxhb3,Pxhb4,Pxhb5,Pxhb6,Pxhb7,Pxhb8,Pxhb9,Pxhb10,Pxhb11,Pxhb12,
Pxhb13,Pxhb14,Pxhb15,Pxhb16,Pxhb17,Pxhb18,Pxhb19,Pxhb20,Pxhb21,
Pxhb22,Pxhb23,Pxhb24,Pxhb25,Pxhb26,Pxhb27,Pxhb28,Pxhb29,Pxhb30
};

char *xhifont[] = {
Pxhi3,Pxhi4,Pxhi5,Pxhi6,Pxhi7,Pxhi8,Pxhi9,Pxhi10,Pxhi11,Pxhi12,Pxhi13,Pxhi14,
Pxhi15,Pxhi16,Pxhi17,Pxhi18,Pxhi19,Pxhi20,Pxhi21,Pxhi22,Pxhi23,Pxhi24,Pxhi25,
Pxhi26,Pxhi27,Pxhi28,Pxhi29,Pxhi30
};

char *xhbifont[] = {
Pxhbi3,Pxhbi4,Pxhbi5,Pxhbi6,Pxhbi7,Pxhbi8,Pxhbi9,Pxhbi10,Pxhbi11,Pxhbi12,
Pxhbi13,Pxhbi14,Pxhbi15,Pxhbi16,Pxhbi17,Pxhbi18,Pxhbi19,Pxhbi20,Pxhbi21,
Pxhbi22,Pxhbi23,Pxhbi24,Pxhbi25,Pxhbi26,Pxhbi27,Pxhbi28,Pxhbi29,Pxhbi30
};

char *xtfont[] = {
Pxt3,Pxt4,Pxt5,Pxt6,Pxt7,Pxt8,Pxt9,Pxt10,Pxt11,Pxt12,Pxt13,Pxt14,
Pxt15,Pxt16,Pxt17,Pxt18,Pxt19,Pxt20,Pxt21,Pxt22,Pxt23,Pxt24,Pxt25,
Pxt26,Pxt27,Pxt28,Pxt29,Pxt30
};

char *xtbfont[] = {
Pxtb3,Pxtb4,Pxtb5,Pxtb6,Pxtb7,Pxtb8,Pxtb9,Pxtb10,Pxtb11,Pxtb12,
Pxtb13,Pxtb14,Pxtb15,Pxtb16,Pxtb17,Pxtb18,Pxtb19,Pxtb20,Pxtb21,
Pxtb22,Pxtb23,Pxtb24,Pxtb25,Pxtb26,Pxtb27,Pxtb28,Pxtb29,Pxtb30
};

char *xtifont[] = {
Pxti3,Pxti4,Pxti5,Pxti6,Pxti7,Pxti8,Pxti9,Pxti10,Pxti11,Pxti12,Pxti13,Pxti14,
Pxti15,Pxti16,Pxti17,Pxti18,Pxti19,Pxti20,Pxti21,Pxti22,Pxti23,Pxti24,Pxti25,
Pxti26,Pxti27,Pxti28,Pxti29,Pxti30
};

char *xtbifont[] = {
Pxtbi3,Pxtbi4,Pxtbi5,Pxtbi6,Pxtbi7,Pxtbi8,Pxtbi9,Pxtbi10,Pxtbi11,Pxtbi12,
Pxtbi13,Pxtbi14,Pxtbi15,Pxtbi16,Pxtbi17,Pxtbi18,Pxtbi19,Pxtbi20,Pxtbi21,
Pxtbi22,Pxtbi23,Pxtbi24,Pxtbi25,Pxtbi26,Pxtbi27,Pxtbi28,Pxtbi29,Pxtbi30
};

char *GreekMap[] = {
Pgrk3,Pgrk4,Pgrk5,Pgrk6,Pgrk7,Pgrk8,Pgrk9,Pgrk10,Pgrk11,Pgrk12,
Pgrk13,Pgrk14,Pgrk15,Pgrk16,Pgrk17,Pgrk18,Pgrk19,Pgrk20,Pgrk21,
Pgrk22,Pgrk23,Pgrk24,Pgrk25,Pgrk26,Pgrk27,Pgrk28,Pgrk29,Pgrk30
};

static char dashmark[] = "-";
