00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef __INTRAFONT_H__
00014 #define __INTRAFONT_H__
00015
00016 #ifdef __cplusplus
00017 extern "C" {
00018 #endif
00019
00020 #include "intrafont_wrapper.h"
00021
00022 #include "libccc.h"
00023
00024
00025 #define INTRAFONT_ADVANCE_H 0x00000000 //default: advance horizontaly from one char to the next
00026 #define INTRAFONT_ADVANCE_V 0x00000100
00027 #define INTRAFONT_ALIGN_LEFT 0x00000000 //default: left-align the text
00028 #define INTRAFONT_ALIGN_CENTER 0x00000200
00029 #define INTRAFONT_ALIGN_RIGHT 0x00000400
00030 #define INTRAFONT_ALIGN_FULL 0x00000600 //full justify text to width set by intraFontSetTextWidth()
00031 #define INTRAFONT_SCROLL_LEFT 0x00002000 //in intraFontPrintColumn if text does not fit text is scrolled to the left
00032
00033 #define INTRAFONT_SCROLL_SEESAW 0x00002200 //in intraFontPrintColumn if text does not fit text is scrolled left and right
00034 #define INTRAFONT_SCROLL_RIGHT 0x00002400 //in intraFontPrintColumn if text does not fit text is scrolled to the right
00035 #define INTRAFONT_SCROLL_THROUGH 0x00002600 //in intraFontPrintColumn if text does not fit text is scrolled through (to the left)
00036 #define INTRAFONT_WIDTH_VAR 0x00000000 //default: variable-width
00037 #define INTRAFONT_WIDTH_FIX 0x00000800 //set your custom fixed witdh to 24 pixels: INTRAFONT_WIDTH_FIX | 24
00038
00039 #define INTRAFONT_ACTIVE 0x00001000 //assumes the font-texture resides inside sceGuTex already, prevents unecessary reloading -> very small speed-gain
00040 #define INTRAFONT_CACHE_MED 0x00000000 //default: 256x256 texture (enough to cache about 100 chars)
00041 #define INTRAFONT_CACHE_LARGE 0x00004000 //512x512 texture(enough to cache all chars of ltn0.pgf or ... or ltn15.pgf or kr0.pgf)
00042 #define INTRAFONT_CACHE_ASCII 0x00008000 //try to cache all ASCII chars during fontload (uses less memory and is faster to draw text, but slower to load font)
00043
00044
00045 #define INTRAFONT_CACHE_ALL 0x0000C000 //try to cache all chars during fontload (uses less memory and is faster to draw text, but slower to load font)
00046
00047
00048 #define INTRAFONT_STRING_ASCII (0x00010000*CCC_CP000) //default: interpret strings as ascii text (ISO/IEC 8859-1)
00049 #define INTRAFONT_STRING_CP437 (0x00010000*CCC_CP437) //interpret strings as ascii text (codepage 437)
00050 #define INTRAFONT_STRING_CP850 (0x00010000*CCC_CP850) //interpret strings as ascii text (codepage 850)
00051 #define INTRAFONT_STRING_CP866 (0x00010000*CCC_CP866) //interpret strings as ascii text (codepage 866)
00052 #define INTRAFONT_STRING_SJIS (0x00010000*CCC_CP932) //interpret strings as shifted-jis (used for japanese)
00053 #define INTRAFONT_STRING_GBK (0x00010000*CCC_CP936) //interpret strings as GBK (used for simplified chinese)
00054 #define INTRAFONT_STRING_KOR (0x00010000*CCC_CP949) //interpret strings as Korean codepage 949
00055 #define INTRAFONT_STRING_BIG5 (0x00010000*CCC_CP950) //interpret strings as BIG5 (used for traditional chinese)
00056 #define INTRAFONT_STRING_CP1251 (0x00010000*CCC_CP1251) //interpret strings as ascii text (codepage windows-1251)
00057 #define INTRAFONT_STRING_CP1252 (0x00010000*CCC_CP1252) //interpret strings as ascii text (codepage windows-1252)
00058 #define INTRAFONT_STRING_UTF8 (0x00010000*CCC_CPUTF8) //interpret strings as UTF-8
00059
00060 #define FILETYPE_PGF 0x00
00061 #define FILETYPE_BWFON 0x01
00062 #define PGF_BMP_H_ROWS 0x01
00063 #define PGF_BMP_V_ROWS 0x02
00064 #define PGF_BMP_OVERLAY 0x03
00065 #define PGF_NO_EXTRA1 0x04
00066 #define PGF_NO_EXTRA2 0x08
00067 #define PGF_NO_EXTRA3 0x10
00068 #define PGF_CHARGLYPH 0x20
00069 #define PGF_SHADOWGLYPH 0x40 //warning: this flag is not contained in the metric header flags and is only provided for simpler call to intraFontGetGlyph - ONLY check with (flags & PGF_CHARGLYPH)
00070 #define PGF_CACHED 0x80
00071 #define PGF_WIDTH_MASK 0x000000FF
00072 #define PGF_OPTIONS_MASK 0x00003FFF
00073 #define PGF_ALIGN_MASK 0x00000600
00074 #define PGF_SCROLL_MASK 0x00002600
00075 #define PGF_CACHE_MASK 0x0000C000
00076 #define PGF_STRING_MASK 0x00FF0000
00077
00078
00079 typedef struct {
00080 unsigned short x;
00081 unsigned short y;
00082 unsigned char width;
00083 unsigned char height;
00084 char left;
00085 char top;
00086 unsigned char flags;
00087 unsigned short shadowID;
00088 char advance;
00089 unsigned long ptr;
00090 } Glyph;
00091
00092 typedef struct {
00093 unsigned short x;
00094 unsigned short y;
00095 unsigned char flags;
00096 } GlyphBW;
00097
00098 typedef struct {
00099 unsigned short header_start;
00100 unsigned short header_len;
00101 char pgf_id[4];
00102 unsigned long revision;
00103 unsigned long version;
00104 unsigned long charmap_len;
00105 unsigned long charptr_len;
00106 unsigned long charmap_bpe;
00107 unsigned long charptr_bpe;
00108 unsigned char junk00[21];
00109 unsigned char family[64];
00110 unsigned char style[64];
00111 unsigned char junk01[1];
00112 unsigned short charmap_min;
00113 unsigned short charmap_max;
00114 unsigned char junk02[50];
00115 unsigned long fixedsize[2];
00116 unsigned char junk03[14];
00117 unsigned char table1_len;
00118 unsigned char table2_len;
00119 unsigned char table3_len;
00120 unsigned char advance_len;
00121 unsigned char junk04[102];
00122 unsigned long shadowmap_len;
00123 unsigned long shadowmap_bpe;
00124 unsigned char junk05[4];
00125 unsigned long shadowscale[2];
00126
00127 } PGF_Header;
00128
00129 typedef struct intraFont {
00130 char* filename;
00131 unsigned char fileType;
00132 unsigned char* fontdata;
00133
00134 unsigned char* texture;
00135 unsigned int texWidth;
00136 unsigned int texHeight;
00137 unsigned short texX;
00138 unsigned short texY;
00139 unsigned short texYSize;
00140
00141 unsigned short n_chars;
00142 char advancex;
00143 char advancey;
00144 unsigned char charmap_compr_len;
00145 unsigned short* charmap_compr;
00146 unsigned short* charmap;
00147 Glyph* glyph;
00148 GlyphBW* glyphBW;
00149
00150 unsigned short n_shadows;
00151 unsigned char shadowscale;
00152 Glyph* shadowGlyph;
00153
00154 float size;
00155 unsigned int color;
00156 unsigned int shadowColor;
00157 unsigned int options;
00158
00159 struct intraFont* altFont;
00160 } intraFont;
00161 int intraFontInit(void);
00162 void intraFontShutdown(void);
00163 intraFont* intraFontLoad(const char *filename,unsigned int options);
00164 void intraFontUnload(intraFont *font);
00165 void intraFontActivate(intraFont *font);
00166 void intraFontSetStyle(intraFont *font, float size, unsigned int color, unsigned int shadowColor, unsigned int options);
00167 void intraFontSetEncoding(intraFont *font, unsigned int options);
00168 void intraFontSetAltFont(intraFont *font, intraFont *altFont);
00169 float intraFontPrintUCS2 (intraFont *font, float x, float y, const unsigned short *text);
00170 float intraFontPrintUCS2Ex (intraFont *font, float x, float y, const unsigned short *text, int length);
00171 float intraFontPrintColumnUCS2 (intraFont *font, float x, float y, float width, const unsigned short *text);
00172 float intraFontPrintColumnUCS2Ex(intraFont *font, float x, float y, float width, const unsigned short *text, int length);
00173 float intraFontPrint (intraFont *font, float x, float y, const char *text);
00174 float intraFontPrintEx (intraFont *font, float x, float y, const char *text, int length);
00175 float intraFontPrintColumn (intraFont *font, float x, float y, float width, const char *text);
00176 float intraFontPrintColumnEx(intraFont *font, float x, float y, float width, const char *text, int length);
00177 float intraFontPrintf (intraFont *font, float x, float y, const char *text, ...);
00178 float intraFontMeasureText (intraFont *font, const char *text);
00179 float intraFontMeasureTextEx(intraFont *font, const char *text, int length);
00180 float intraFontMeasureTextUCS2 (intraFont *font, const unsigned short *text);
00181 float intraFontMeasureTextUCS2Ex(intraFont *font, const unsigned short *text, int length);
00182 #ifdef __cplusplus
00183 }
00184 #endif // __cplusplus
00185
00186 #endif // __INTRAFONT_H__