#ifndef	DEL_PRN_H__

#define	DEL_PRN_H__

#define	MM2DOTS(mm)	((mm)*900L/127)	/* 正確にはmm*180/25.40 */

#define	PRNATTR_BOLD		16	/* 太字 */
#define	PRNATTR_ITALIC		32	/* 斜体 */
#define	PRNATTR_UNDERLINE	64	/* 下線 */

enum	PRNERR				/* 各コマンドの実行結果 */
{
	PRNERR_OK      = 0,		/* 成功　　　　　 */
	PRNERR_TIMEOUT = 1,		/* プリンタエラー */
	PRNERR_BADDATA = 2,		/* 無効な指示　　 */
};

enum	PRNBIOS				/* コンピュータの機種 */
{
	PRNBIOS_NEC98 = 0,		/* NEC PC-9800      */
	PRNBIOS_TOWNS = 1,		/* 富士通 FMR/TOWNS */
	PRNBIOS_IBMPC = 2,		/* IBM DOS/V        */
	PRNBIOS_J3100 = 3,		/* 東芝 J-3100/AX   */
};

enum	PRNMODE				/* プリンタの機種 */
{
	PRNMODE_ESCP = 0,		/* ESC/P-J84       */
	PRNMODE_MSX  = 1,		/* MSX漢字プリンタ */
	PRNMODE_PCPR = 2,		/* PC-PR201H/101H  */
};

enum	PRNHERR
{
	PRNHERR_IGNORE = 0,
	PRNHERR_RETRY  = 1,
	PRNHERR_FAIL   = 2,
};

int		prn_writebyte(char c);

enum PRNHERR	prn_harderr(void);

enum PRNERR	prn_init(void);
enum PRNERR	prn_putchar(unsigned c);
enum PRNERR	prn_putstr(char *s);
enum PRNERR	prn_putcode(unsigned len,char *s);
enum PRNERR	prn_setcarridge(unsigned column);
enum PRNERR	prn_movecarridge(signed int column);
enum PRNERR	prn_linefeed(signed int height);
enum PRNERR	prn_hsize(unsigned mode);
enum PRNERR	prn_vsize(unsigned mode);
enum PRNERR	prn_tategaki(int mode);
enum PRNERR	prn_setattr(unsigned attr);
enum PRNERR	prn_halfpack(char c1,char c2);
enum PRNERR	prn_formfeed(void);

extern	unsigned	Prn_carridge;
extern	unsigned	Prn_attr;
extern	unsigned	Prn_leftspace;
extern	unsigned	Prn_rightspace;
extern	unsigned	Prn_isvdouble;
extern	unsigned	Prn_ishdouble;
extern	unsigned	Prn_istategaki;
extern	unsigned	Prn_chartable[256];

extern	unsigned	Prn_minheight_;
extern	int		Prn_oldtype_;
extern	int		Prn_islinestart_;
extern	int		Prn_islinedouble_;
extern	int		Prn_islineunder_;
extern	void		(*Prn_functable_[10])();
extern	unsigned	Prn_funcnum_;

extern	enum	PRNBIOS	Prn_machine;
extern	enum	PRNMODE	Prn_mode;

#endif
