ultimatepp/uppsrc/Draw/FontInt.h
cxl 85ef74e429 CtrlLib: Coco MultiButton
git-svn-id: svn://ultimatepp.org/upp/trunk@12281 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2018-09-17 10:01:04 +00:00

64 lines
1.5 KiB
C++

#ifndef _Draw_FontInt_h_
#define _Draw_FontInt_h_
// Implementation header
struct FaceInfo : Moveable<FaceInfo> {
String name;
dword info;
};
struct CommonFontInfo {
int ascent;
int descent;
int external;
int internal;
int overhang;
int avewidth;
int maxwidth;
int firstchar;
int charcount;
int default_char;
int spacebefore;
int spaceafter;
bool fixedpitch;
bool scaleable;
bool ttf;
int aux;
char path[256]; // optional
};
class Font;
struct GlyphInfo {
int16 width;
int16 lspc;
int16 rspc;
word glyphi; // optional, not available in Win32
bool IsNormal() const { return (word)width != 0x8000; }
bool IsComposed() const { return !IsNormal() && (lspc == -1 || lspc == -11); }
bool IsComposedLM() const { return !IsNormal() && lspc == -11; }
bool IsReplaced() const { return !IsNormal() && lspc >= 0; }
bool IsMissing() const { return !IsNormal() && lspc == -2; }
};
void Std(Font& font);
GlyphInfo GetGlyphInfo(Font font, int chr);
const CommonFontInfo& GetFontInfo(Font font);
bool IsNormal(Font font, int chr);
void GlyphMetrics(GlyphInfo& f, Font font, int chr);
void InvalidateFontList();
// Platform specific font interface
CommonFontInfo GetFontInfoSys(Font font);
GlyphInfo GetGlyphInfoSys(Font font, int chr);
Vector<FaceInfo> GetAllFacesSys();
String GetFontDataSys(Font font);
void RenderCharacterSys(FontGlyphConsumer& sw, double x, double y, int ch, Font fnt);
#endif