// **************************************************************************
// **************************************************************************
// **************************************************************************
// **                                                                      **
// ** FONTCODE.H                                                    MODULE **
// **                                                                      **
// ** Font handling code.                                                  **
// **                                                                      **
// ** Last modified : 13 Feb 1997 by John Brandwood                        **
// **                                                                      **
// ** A typical example of using this library might go something like ...  **
// **                                                                      **
// **   pcl__Txt = InitTxtCel(NULL,0,FONT_11,FPAL_11_TTL,FFLG_XC|FFLG_YC); **
// **                                                                      **
// **   ClearTxtCel(pcl__Txt);                                             **
// **   WriteTxtCel(pcl__Txt, "MAIN MENU");                                **
// **   DrawTxtCel (pcl__Txt, 320, 120);                                   **
// **   FreeTxtCel (pcl__Txt);                                             **
// **                                                                      **
// **   MemFree    (pcl__Txt);                                             **
// **                                                                      **
// **************************************************************************
// **************************************************************************
// **************************************************************************

#ifndef __FONTCODE_h
#define	__FONTCODE_h

#ifndef __LFPTYPES_h
 #include "lfptypes.h"
#endif

#include "resman.h"

//
// GLOBAL DATA STRUCTURES AND DEFINITIONS
//

typedef	struct FNTHDR_S
	{
	UB *                pub__fntKern;
	UB                  ub___fntFlgs;
	UB                  ub___fntKrnN;
	UB                  ub___fntChr0;
	UB                  ub___fntChrN;
	SB                  sb___fntXSpc;
	SB                  sb___fntYSpc;
	SB                  sb___fntXLft;
	SB                  sb___fntXRgt;
	SB                  sb___fntYTop;
	SB                  sb___fntYBtm;
	SB                  sb___fntYCap;
	SB                  sb___fntYOvr;
	} FNTHDR_T;

typedef	struct FNTIDX_S
	{
	UW                  uw___idxData;
	SB                  sb___idxX;
	SB                  sb___idxY;
	UB                  ub___idxW;
	UB                  ub___idxH;
	SB                  sb___idxDX;
	SB                  sb___idxPadding;
	} FNTIDX_T;

typedef	struct FNTTEX_S
	{
	SB                  sb___idxTX;
	SB                  sb___idxTY;
	SB                  sb___idxX;
	SB                  sb___idxY;
	UB                  ub___idxW;
	UB                  ub___idxH;
	SB                  sb___idxDX;
	UB                  ub___idxTN;
	} FNTTEX_T;

#define	TXTSTR_LEN          64

typedef struct TXTCEL_S
	{
	UI                  ui___tcFnt;
	UI                  ui___tcPal;
	UI                  ui___tcFlg;
	UI                  ui___tcLen;
	SI                  si___tcX;
	SI                  si___tcY;
	UI                  ui___tcW;
	UI                  ui___tcH;
	char                cz___tcS [TXTSTR_LEN];
	} TXTCEL_T;

typedef	struct FNTRGB_S
	{
	unsigned char       ub___r;
	unsigned char       ub___g;
	unsigned char       ub___b;
	unsigned char       ub___a;
	} FNTRGB_T;

typedef	struct FNTPAL_S
	{
	FNTRGB_T            cl___lolite;
	FNTRGB_T            cl___normal;
	FNTRGB_T            cl___hilite;
	} FNTPAL_T;

// Define formatting flags.

#define	FFLG_NEW            0x80000000

#define	FFLG_HILITE         0x40000000
#define	FFLG_LOLITE         0x20000000

#define	FFLG_SHADOW         0x10000000

#define	FFLG_CALLBACK       0x08000000

#define	FFLG_XROT           0x00000000
#define	FFLG_XMSK           0x0000000F

#define	FFLG_XL             0x00000000
#define	FFLG_XC             0x00000001
#define	FFLG_XR             0x00000002

#define	FFLG_YROT           0x00000004
#define	FFLG_YMSK           0x0000000F

#define	FFLG_YT             0x00000000
#define	FFLG_YL             0x00000010
#define	FFLG_YC             0x00000020
#define	FFLG_YB             0x00000030

// Define formatting shortcuts.

//
// GLOBAL VARIABLES
//

extern	void                (*(pfn__FntDrawChar))(UB *, SI, SI, SI, SI);

extern	SI                  asi__gFontBtn [16][2];

extern	FNTHDR_T *          apcl_gFontHdr [16];

//
// GLOBAL FUNCTION PROTOTYPES
//

extern	SI                  LoadFonts               (
								struct openSet *    pcl__ResSet,
								unsigned long **    ppul_ResLst,
								FNTPAL_T *          pcl__FntPal);

extern	SI                  FreeFonts               (void);

extern	Gfx *               DrawChrList             (
								Gfx *               gp);

extern	TXTCEL_T *          InitTxtCel              (
								TXTCEL_T *          pcl__C,
								UI                  ui___Len,
								UI                  ui___Fnt,
								UI                  ui___Pal,
								UI                  ui___Flg);

extern	TXTCEL_T *          ClearTxtCel             (
								TXTCEL_T *          pcl__C);

extern	char *              WriteTxtCel             (
								TXTCEL_T *          pcl__C,
								char *              pcz__S);

extern	char *              DrawTxtCel              (
								TXTCEL_T *          pcl__C,
								SI                  si___X,
								SI                  si___Y);

extern	char *              DrawTxtCel8             (
								TXTCEL_T *          pcl__C,
								SI                  si___X,
								SI                  si___Y);

extern	char *              DrawTxtCel16            (
								TXTCEL_T *          pcl__C,
								SI                  si___X,
								SI                  si___Y);

extern	void                FreeTxtCel              (
								TXTCEL_T *          pcl__C);

extern	char *              CalcTxtBox              (
								char *              pcz__S,
								FNTHDR_T *          pcl__F,
								UI *                pui__W,
								UI *                pui__H);

extern	void                StrInitials             (
								char *              pcz__Dst,
								char *              pcz__Src);

extern	void                StrToUprCase            (
								char *              pcz__S);

extern	void                StrToUprName            (
								char *              pcz__S);

extern	void                StrToLwrCase            (
								char *              pcz__S);

extern	void                StrToSmlCaps            (
								char *              pcz__S);

//
// End of __FONTCODE_h
//

#endif



// **************************************************************************
// **************************************************************************
// **************************************************************************
//	END OF FONTCODE.H
// **************************************************************************
// **************************************************************************
// **************************************************************************

