#ifndef H_DEFS_H
#define H_DEFS_H

#define LARGER(one, two) ((one > two) ? one : two)
struct bbox {
	int bb_width, bb_height;
	int bb_offx, bb_offy;
};

struct character {
	int		 c_order;
	char		*c_charname;
	char		 c_notadobe;
	char		 c_modified;
	/*unsigned char	 c_nrows; */
	unsigned int	*c_rows;
	int		 c_encoding;
	unsigned short	 c_swidth[2];
	unsigned short	 c_dwidth[2];
	struct bbox	 c_bbox;
	struct fontset	*c_fontset;
};

struct fontset {
	int		  f_rev, f_subrev;
	char		**f_comments;
	unsigned int	  f_ncomments, f_szcomments;
	char		 *f_fontname;
	int		  f_sizes[3];
	unsigned int	  f_ascent, f_descent;
	unsigned int	  f_exascent, f_exdescent;
	struct bbox	  f_boundingbox;
	char		**f_props;
	unsigned int	  f_nprops;
	int		  f_nchars;
	struct bbox	  f_maxbbox;
	struct character **f_characters;
	int		  f_modified;
};
extern int step_mask[32];

struct fontset *initial(const char *fname);
int	bbox_check(struct character *cp);

extern struct bbox *bbp;	/* temp bbox structure */
extern struct bbox *fbbp;	/* temp bbox structure */
extern struct character *tchar; /* temporary structure */
extern struct character **buffers;

int 	rows_differ(const struct fontset *fset,
		const unsigned int *intp0, const unsigned int *intp1);
int	bbox_differ(const struct bbox *bp0, const struct bbox *bp1);
void	get_winsize(int *row, int *col);
struct character *search4charbyname(struct fontset *font, const char *myname);
struct character *bsearch4char(struct fontset *font, const int target);

char	*get_engcode(struct fontset *fs, char *line, struct character **ret);
char	*get_hancode(struct fontset *fs, char *line, struct character **ret);

#endif
