#ifndef GRAPHICS_TEXT_H #define GRAPHICS_TEXT_H /* ** $Filename: graphics/text.h $ ** $Release: 2.04 Includes, V37.4 $ ** $Revision: 37.0 $ ** $Date: 91/01/07 $ ** ** graphics library text structures ** ** (C) Copyright 1985-1999 Amiga, Inc. ** All Rights Reserved */ #ifndef EXEC_PORTS_H #include "exec/ports.h" #endif /* EXEC_PORTS_H */ #ifndef GRAPHICS_GFX_H #include "graphics/gfx.h" #endif /* GRAPHICS_GFX_H */ #ifndef UTILITY_TAGITEM_H #include "utility/tagitem.h" #endif /* UTILITY_TAGITEM_H */ /*------ Font Styles ------------------------------------------------*/ #define FS_NORMAL 0 /* normal text (no style bits set) */ #define FSB_UNDERLINED 0 /* underlined (under baseline) */ #define FSF_UNDERLINED 0x01 #define FSB_BOLD 1 /* bold face text (ORed w/ shifted) */ #define FSF_BOLD 0x02 #define FSB_ITALIC 2 /* italic (slanted 1:2 right) */ #define FSF_ITALIC 0x04 #define FSB_EXTENDED 3 /* extended face (wider than normal) */ #define FSF_EXTENDED 0x08 #define FSB_COLORFONT 6 /* this uses ColorTextFont structure */ #define FSF_COLORFONT 0x40 #define FSB_TAGGED 7 /* the TextAttr is really an TTextAttr, */ #define FSF_TAGGED 0x80 /*------ Font Flags -------------------------------------------------*/ #define FPB_ROMFONT 0 /* font is in rom */ #define FPF_ROMFONT 0x01 #define FPB_DISKFONT 1 /* font is from diskfont.library */ #define FPF_DISKFONT 0x02 #define FPB_REVPATH 2 /* designed path is reversed (e.g. left) */ #define FPF_REVPATH 0x04 #define FPB_TALLDOT 3 /* designed for hires non-interlaced */ #define FPF_TALLDOT 0x08 #define FPB_WIDEDOT 4 /* designed for lores interlaced */ #define FPF_WIDEDOT 0x10 #define FPB_PROPORTIONAL 5 /* character sizes can vary from nominal */ #define FPF_PROPORTIONAL 0x20 #define FPB_DESIGNED 6 /* size explicitly designed, not constructed */ /* note: if you do not set this bit in your */ /* textattr, then a font may be constructed */ /* for you by scaling an existing rom or disk */ /* font (under V36 and above). */ #define FPF_DESIGNED 0x40 /* bit 7 is always clear for fonts on the graphics font list */ #define FPB_REMOVED 7 /* the font has been removed */ #define FPF_REMOVED (1<<7) /****** TextAttr node, matches text attributes in RastPort **********/ struct TextAttr { STRPTR ta_Name; /* name of the font */ UWORD ta_YSize; /* height of the font */ UBYTE ta_Style; /* intrinsic font style */ UBYTE ta_Flags; /* font preferences and flags */ }; struct TTextAttr { STRPTR tta_Name; /* name of the font */ UWORD tta_YSize; /* height of the font */ UBYTE tta_Style; /* intrinsic font style */ UBYTE tta_Flags; /* font preferences and flags */ struct TagItem *tta_Tags; /* extended attributes */ }; /****** Text Tags ***************************************************/ #define TA_DeviceDPI (1|TAG_USER) /* Tag value is Point union: */ /* Hi word XDPI, Lo word YDPI */ #define MAXFONTMATCHWEIGHT 32767 /* perfect match from WeighTAMatch */ /****** TextFonts node **********************************************/ struct TextFont { struct Message tf_Message; /* reply message for font removal */ /* font name in LN \ used in this */ UWORD tf_YSize; /* font height | order to best */ UBYTE tf_Style; /* font style | match a font */ UBYTE tf_Flags; /* preferences and flags / request. */ UWORD tf_XSize; /* nominal font width */ UWORD tf_Baseline; /* distance from the top of char to baseline */ UWORD tf_BoldSmear; /* smear to affect a bold enhancement */ UWORD tf_Accessors; /* access count */ UBYTE tf_LoChar; /* the first character described here */ UBYTE tf_HiChar; /* the last character described here */ APTR tf_CharData; /* the bit character data */ UWORD tf_Modulo; /* the row modulo for the strike font data */ APTR tf_CharLoc; /* ptr to location data for the strike font */ /* 2 words: bit offset then size */ APTR tf_CharSpace; /* ptr to words of proportional spacing data */ APTR tf_CharKern; /* ptr to words of kerning data */ }; /* unfortunately, this needs to be explicitly typed */ #define tf_Extension tf_Message.mn_ReplyPort /*----- tfe_Flags0 (partial definition) ----------------------------*/ #define TE0B_NOREMFONT 0 /* disallow RemFont for this font */ #define TE0F_NOREMFONT 0x01 struct TextFontExtension { /* this structure is read-only */ UWORD tfe_MatchWord; /* a magic cookie for the extension */ UBYTE tfe_Flags0; /* (system private flags) */ UBYTE tfe_Flags1; /* (system private flags) */ struct TextFont *tfe_BackPtr; /* validation of compilation */ struct MsgPort *tfe_OrigReplyPort; /* original value in tf_Extension */ struct TagItem *tfe_Tags; /* Text Tags for the font */ UWORD *tfe_OFontPatchS; /* (system private use) */ UWORD *tfe_OFontPatchK; /* (system private use) */ /* this space is reserved for future expansion */ }; /****** ColorTextFont node ******************************************/ /*----- ctf_Flags --------------------------------------------------*/ #define CT_COLORMASK 0x000F /* mask to get to following color styles */ #define CT_COLORFONT 0x0001 /* color map contains designer's colors */ #define CT_GREYFONT 0x0002 /* color map describes even-stepped */ /* brightnesses from low to high */ #define CT_ANTIALIAS 0x0004 /* zero background thru fully saturated char */ #define CTB_MAPCOLOR 0 /* map ctf_FgColor to the rp_FgPen if it's */ #define CTF_MAPCOLOR 0x0001 /* is a valid color within ctf_Low..ctf_High */ /*----- ColorFontColors --------------------------------------------*/ struct ColorFontColors { UWORD cfc_Reserved; /* *must* be zero */ UWORD cfc_Count; /* number of entries in cfc_ColorTable */ UWORD *cfc_ColorTable; /* 4 bit per component color map packed xRGB */ }; /*----- ColorTextFont ----------------------------------------------*/ struct ColorTextFont { struct TextFont ctf_TF; UWORD ctf_Flags; /* extended flags */ UBYTE ctf_Depth; /* number of bit planes */ UBYTE ctf_FgColor; /* color that is remapped to FgPen */ UBYTE ctf_Low; /* lowest color represented here */ UBYTE ctf_High; /* highest color represented here */ UBYTE ctf_PlanePick; /* PlanePick ala Images */ UBYTE ctf_PlaneOnOff; /* PlaneOnOff ala Images */ struct ColorFontColors *ctf_ColorFontColors; /* colors for font */ APTR ctf_CharData[8]; /*pointers to bit planes ala tf_CharData */ }; /****** TextExtent node *********************************************/ struct TextExtent { UWORD te_Width; /* same as TextLength */ UWORD te_Height; /* same as tf_YSize */ struct Rectangle te_Extent; /* relative to CP */ }; #endif /* GRAPHICS_TEXT_H */