DynamicFontGenerator::DynamicFontGenerator(const core::string& name) :BaseFont(name) { m_data = new DynamicFontGeneratorImpl; m_dirty = false; m_underline = false; m_bold = false; m_italic = false; m_textureSize = 1024; AddCharacterRange('A', 'Z'); AddCharacterRange('a', 'z'); AddCharacterRange('0', '9'); }
int AddRange(char *e, int *place, CharSetT *cs) { int first, second, input, number1[3], number2[3]; input = NextCharacter(e, *place); first = input; AdvanceParser(e, place); if(input == '\\') { first = NextCharacter(e, *place); AdvanceParser(e, place); } if (input == '#') { number1[0] = NextCharacter(e, *place); AdvanceParser(e, place); number1[1] = NextCharacter(e, *place); AdvanceParser(e, place); number1[2] = NextCharacter(e, *place); AdvanceParser(e, place); if (!isdigit(number1[0]) || !isdigit(number1[1]) || !isdigit(number1[2])) return 0; else first = ((number1[0] - '0') * 100 + (number1[1] - '0') * 10 + number1[2] - '0'); if (first > 255) return 0; } else if (strchr(specialChars, first)) return 0; if (NextCharacter(e, *place) != '-') return 0; AdvanceParser(e, place); input = NextCharacter(e, *place); AdvanceParser(e, place); second = input; if(input == '\\') { second = NextCharacter(e, *place); AdvanceParser(e, place); } else if (input == '#') { number2[0] = NextCharacter(e, *place); AdvanceParser(e, place); number2[1] = NextCharacter(e, *place); AdvanceParser(e, place); number2[2] = NextCharacter(e, *place); AdvanceParser(e, place); if (!isdigit(number2[0]) || !isdigit(number2[1]) || !isdigit(number2[2])) return 0; else second = ((number2[0] - '0') * 100 + (number2[1] - '0') * 10 + number2[2] - '0'); if (second > 255) return 0; } else if (strchr(specialChars, second)) return 0; if (first >= second) return 0; AddCharacterRange(first, second, cs); return 1; }