22 #ifndef ULTIMA8_GFX_FONTS_FONT_H 23 #define ULTIMA8_GFX_FONTS_FONT_H 25 #include "common/rect.h" 27 #include "ultima/shared/std/containers.h" 28 #include "ultima/shared/std/string.h" 29 #include "ultima/ultima8/misc/encoding.h" 39 Std::string::size_type _cursor;
54 virtual int getHeight() = 0;
57 virtual int getBaseline() = 0;
60 virtual int getBaselineSkip() = 0;
67 int32 &width, int32 &height) = 0;
79 unsigned int &remaining, int32 width = 0, int32 height = 0,
80 TextAlign align = TEXT_LEFT,
bool u8specials =
false,
81 bool pagebreaks =
false,
82 Std::string::size_type cursor = Std::string::npos) = 0;
95 int32 &resultwidth, int32 &resultheight,
unsigned int &remaining,
96 int32 width = 0, int32 height = 0, TextAlign align = TEXT_LEFT,
97 bool u8specials =
false,
bool pagebreaks =
false);
99 void setHighRes(
bool hr) {
102 bool isHighRes()
const {
110 static bool isSpace(Std::string::const_iterator &i,
bool u8specials) {
112 return (c ==
' ' || c ==
'\t' || c ==
'\n' || c ==
'\r' ||
113 (u8specials && (c ==
'%' || c ==
'~' || c ==
'*' || c ==
'^')));
115 static bool isTab(Std::string::const_iterator &i,
bool u8specials) {
118 (u8specials && (c ==
'\t' || c ==
'%')));
120 static bool isBreak(Std::string::const_iterator &i,
bool u8specials) {
123 (u8specials && (c ==
'\n' || c ==
'~' || c ==
'*')));
125 static bool isPageBreak(Std::string::const_iterator &i,
bool u8specials) {
127 return (u8specials && c ==
'*');
129 static bool canBreakAfter(Std::string::const_iterator &i);
130 static void advance(Std::string::const_iterator &i) {
133 static Std::string::size_type length(
const Std::string &t) {
136 static uint32 unicode(Std::string::const_iterator &i) {
137 return encoding[
static_cast<uint8
>(*i++)];
141 static bool canBreakAfter(Std::string::const_iterator &i);
142 static void advance(Std::string::const_iterator &i) {
148 static Std::string::size_type length(
const Std::string &t) {
149 Std::string::size_type l = 0;
150 Std::string::const_iterator iter = t.begin();
151 while (iter != t.end()) {
157 static uint32 unicode(Std::string::const_iterator &i) {
158 uint16 s =
static_cast<uint8
>(*i);
161 uint16 t =
static_cast<uint8
>(*i++);
164 return shiftjis_to_unicode(s);
172 int32 width, int32 height, Font::TextAlign align,
173 bool u8specials,
bool pagebreaks,
174 int32 &resultwidth, int32 &resultheight,
175 Std::string::size_type cursor = Std::string::npos);
Definition: rendered_text.h:30
Definition: detection.h:27
Definition: containers.h:46