[Contents] [Index] [Help] [Retrace] [browse <] [Browse >]

#ifndef LIBRARIES_DISKFONT_H
#define LIBRARIES_DISKFONT_H
/*
**      $Filename: libraries/diskfont.h $
**      $Release: 2.04 Includes, V37.4 $
**      $Revision: 36.6 $
**      $Date: 90/11/26 $
**
**      diskfont library definitions
**
**      (C) Copyright 1985-1999 Amiga, Inc.
**          All Rights Reserved
*/

#ifndef     EXEC_TYPES_H
#include "exec/types.h"
#endif
#ifndef     EXEC_NODES_H
#include "exec/nodes.h"
#endif
#ifndef     EXEC_LISTS_H
#include "exec/lists.h"
#endif
#ifndef     GRAPHICS_TEXT_H
#include "graphics/text.h"
#endif

#define     MAXFONTPATH 256   /* including null terminator */

struct FontContents {
    char    fc_FileName[MAXFONTPATH];
    UWORD   fc_YSize;
    UBYTE   fc_Style;
    UBYTE   fc_Flags;
};

struct TFontContents {
    char    tfc_FileName[MAXFONTPATH-2];
    UWORD   tfc_TagCount;       /* including the TAG_DONE tag */
    /*
     *  if tfc_TagCount is non-zero, tfc_FileName is overlayed with
     *  Text Tags starting at:  (struct TagItem *)
     *      &tfc_FileName[MAXFONTPATH-(tfc_TagCount*sizeof(struct TagItem))]
     */
    UWORD   tfc_YSize;
    UBYTE   tfc_Style;
    UBYTE   tfc_Flags;
};


#define  FCH_ID                0x0f00  /* FontContentsHeader, then FontContents */
#define  TFCH_ID        0x0f02  /* FontContentsHeader, then TFontContents */

struct FontContentsHeader {
    UWORD   fch_FileID;                /* FCH_ID */
    UWORD   fch_NumEntries;     /* the number of FontContents elements */
    /* struct FontContents fch_FC[], or struct TFontContents fch_TFC[]; */
};


#define  DFH_ID                0x0f80
#define  MAXFONTNAME    32      /* font name including ".font\0" */

struct DiskFontHeader {
    /* the following 8 bytes are not actually considered a part of the  */
    /* DiskFontHeader, but immediately preceed it. The NextSegment is   */
    /* supplied by the linker/loader, and the ReturnCode is the code    */
    /* at the beginning of the font in case someone runs it...          */
    /*   ULONG dfh_NextSegment;                 \* actually a BPTR      */
    /*   ULONG dfh_ReturnCode;                  \* MOVEQ #0,D0 : RTS    */
    /* here then is the official start of the DiskFontHeader...                */
    struct Node dfh_DF;                /* node to link disk fonts */
    UWORD   dfh_FileID;                /* DFH_ID */
    UWORD   dfh_Revision;      /* the font revision */
    LONG    dfh_Segment;       /* the segment address when loaded */
    char    dfh_Name[MAXFONTNAME]; /* the font name (null terminated) */
    struct TextFont dfh_TF;     /* loaded TextFont structure */
};

/* unfortunately, this needs to be explicitly typed */
/* used only if dfh_TF.tf_Style FSB_TAGGED bit is set */
#define dfh_TagList     dfh_Segment     /* destroyed during loading */


#define     AFB_MEMORY 0
#define     AFF_MEMORY 0x0001
#define     AFB_DISK   1
#define     AFF_DISK   0x0002
#define     AFB_SCALED 2
#define     AFF_SCALED  0x0004

#define     AFB_TAGGED 16      /* return TAvailFonts */
#define     AFF_TAGGED  0x10000L

struct AvailFonts {
    UWORD   af_Type;           /* MEMORY, DISK, or SCALED */
    struct TextAttr af_Attr;    /* text attributes for font */
};

struct TAvailFonts {
    UWORD   taf_Type;         /* MEMORY, DISK, or SCALED */
    struct TTextAttr taf_Attr;  /* text attributes for font */
};

struct AvailFontsHeader {
    UWORD   afh_NumEntries;      /* number of AvailFonts elements */
    /* struct AvailFonts afh_AF[], or struct TAvailFonts afh_TAF[]; */
};

#endif  /* LIBRARIES_DISKFONT_H */