define.h


/*
 *	Global defines.
 *	See "cif2ps.c" for authors' names and addresses.
 *	Please honor the authors by not removing their attributions.
 */

#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <string>
using namespace std;

/* The following dimensions are all in points (1/72 in.) */
#define PAGEMARGIN	36
#define PAGEWIDTH	( 8.5 * 72 - 2 * PAGEMARGIN)
#define PAGELENGTH	(11.0 * 72 - 2 * PAGEMARGIN)
#define DEFPOINTS	6	/* default points size of text */

#define BIGINT	0x7FFFFF

#define MAXTOKEN	64
#define MAXSYMBOLS	256
#define MAXLINE		1024
#define LNAMELEN	7
#define MAXLAYERS	32
#define MAXNINETY_FOUR	64

#define DSTYPE		1
#define BOXTYPE		2
#define CALLTYPE	3
#define NINETY_FOURTYPE	4
#define NGONTYPE	5
#define ROUNDTYPE	6
#define WIRETYPE	7

#define WHITE	' '
#define COMMA	','

class cifobj {
public:
	virtual void print() { printf("cif object\n"); }
};

class cifpoint	{
public:
	int	x, y;
	void set(int xv, int yv) { x = xv; y = yv; }
};

class cifbox: public cifobj	{
public:
	int	layer;
	int	llx,lly,urx,ury;
	void print() {
		printf("box layer(%d) %d %d %d %d\n",layer,llx,lly,urx,ury); 
	}
};

class cifpath {
public:
	cifpoint *ptr;
	int numpts;
	int maxpts;
	static const int BLOCKSIZE;
	cifpath();
	~cifpath();
	int add(int x, int y);
};

class cifngon: public cifpath, public cifobj	{
public:
	int	layer;
	void print() { printf("polygon with %d points\n",numpts); }
};

class cifround: public cifobj	{
public:
	int	layer;
	int	x,y,r;
	};

class cifwire: public cifpath, public cifobj	{
public:
	int layer;
	int width;
	void print() {
		printf("wire layer(%d) width(%d) with %d points\n",layer,width,numpts);
	}
};

class cifds: public cifobj {
public:
	int	name, a, b;
	void print() {
		printf("ds %d a %d b %d\n",name,a,b);
	}
};

class ninety_four: public cifobj {
public:
	string name;
	int	x, y, layer;
	ninety_four();
	void print();
};

class cifcall: public cifobj {
public:
	int	symbol;
	double	matrix[3][3];
	cifcall();
	void print() {printf("call symbol %d\n",symbol); }
};


class cifsymbol: public cifobj {
public:
	cifsymbol *next;
	int	typer;
	cifobj *obj;
	cifsymbol();
	void print();
};

class ciftable	{
public:
	int	symbol, a, b;
	string name;
	cifsymbol	*pointer;
	cifpoint	ll, ur;
};

class ciflayer	{
public:
	string name;
	string style;
};

extern ciflayer layers[MAXLAYERS];
extern int order[MAXLAYERS];
extern int layer, numlayers;


Maintained by John Loomis, updated Mon Feb 12 23:32:57 2007