aboutsummaryrefslogtreecommitdiff
path: root/graphics/fonts/bdf.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2016-10-07 10:24:50 +0200
committerEugene Sandulenko2016-10-07 10:49:17 +0200
commitee476e9cf0ee1dec3161ef3bed87be12ca9786f1 (patch)
tree6cb9f4a894f7f116b0b65f5184084f72d6630491 /graphics/fonts/bdf.cpp
parent6a1e5bd43a2a3b12b820a9b82c48761cb54a620a (diff)
downloadscummvm-rg350-ee476e9cf0ee1dec3161ef3bed87be12ca9786f1.tar.gz
scummvm-rg350-ee476e9cf0ee1dec3161ef3bed87be12ca9786f1.tar.bz2
scummvm-rg350-ee476e9cf0ee1dec3161ef3bed87be12ca9786f1.zip
GRAPHICS: Parse slant from BDF fonts
Diffstat (limited to 'graphics/fonts/bdf.cpp')
-rw-r--r--graphics/fonts/bdf.cpp36
1 files changed, 35 insertions, 1 deletions
diff --git a/graphics/fonts/bdf.cpp b/graphics/fonts/bdf.cpp
index a8ffe28489..1a23133858 100644
--- a/graphics/fonts/bdf.cpp
+++ b/graphics/fonts/bdf.cpp
@@ -42,6 +42,7 @@ BdfFont::~BdfFont() {
delete[] _data.advances;
delete[] _data.boxes;
delete[] _data.familyName;
+ delete[] _data.slant;
}
}
@@ -49,6 +50,10 @@ const char *BdfFont::getFamilyName() const {
return _data.familyName;
}
+const char *BdfFont::getFontSlant() const {
+ return _data.slant;
+}
+
int BdfFont::getFontHeight() const {
return _data.height;
}
@@ -294,7 +299,7 @@ BdfFont *BdfFont::loadFont(Common::SeekableReadStream &stream) {
memset(bitmaps, 0, sizeof(byte *) * font.numCharacters);
byte *advances = new byte[font.numCharacters];
BdfBoundingBox *boxes = new BdfBoundingBox[font.numCharacters];
- char *familyName;
+ char *familyName, *slant;
int descent = -1;
@@ -307,6 +312,8 @@ BdfFont *BdfFont::loadFont(Common::SeekableReadStream &stream) {
delete[] bitmaps;
delete[] advances;
delete[] boxes;
+ delete[] familyName;
+ delete[] slant;
return 0;
}
@@ -321,6 +328,7 @@ BdfFont *BdfFont::loadFont(Common::SeekableReadStream &stream) {
delete[] advances;
delete[] boxes;
delete[] familyName;
+ delete[] slant;
return 0;
}
@@ -337,6 +345,7 @@ BdfFont *BdfFont::loadFont(Common::SeekableReadStream &stream) {
delete[] advances;
delete[] boxes;
delete[] familyName;
+ delete[] slant;
return 0;
}
} else if (line.hasPrefix("FONT_ASCENT ")) {
@@ -347,6 +356,7 @@ BdfFont *BdfFont::loadFont(Common::SeekableReadStream &stream) {
delete[] advances;
delete[] boxes;
delete[] familyName;
+ delete[] slant;
return 0;
}
} else if (line.hasPrefix("FONT_DESCENT ")) {
@@ -357,6 +367,7 @@ BdfFont *BdfFont::loadFont(Common::SeekableReadStream &stream) {
delete[] advances;
delete[] boxes;
delete[] familyName;
+ delete[] slant;
return 0;
}
} else if (line.hasPrefix("DEFAULT_CHAR ")) {
@@ -367,6 +378,7 @@ BdfFont *BdfFont::loadFont(Common::SeekableReadStream &stream) {
delete[] advances;
delete[] boxes;
delete[] familyName;
+ delete[] slant;
return 0;
}
} else if (line.hasPrefix("STARTCHAR ")) {
@@ -392,6 +404,7 @@ BdfFont *BdfFont::loadFont(Common::SeekableReadStream &stream) {
delete[] advances;
delete[] boxes;
delete[] familyName;
+ delete[] slant;
return 0;
}
@@ -413,6 +426,24 @@ BdfFont *BdfFont::loadFont(Common::SeekableReadStream &stream) {
delete[] advances;
delete[] boxes;
delete[] familyName;
+ delete[] slant;
+ return 0;
+ }
+ *p = '\0'; // Remove last quote
+ } else if (line.hasPrefix("SLANT \"")) {
+ slant = new char[line.size()]; // We will definitely fit here
+ Common::strlcpy(slant, &line.c_str()[7], line.size());
+ char *p = &slant[strlen(slant)];
+ while (p != slant && *p != '"')
+ p--;
+ if (p == slant) {
+ warning("BdfFont::loadFont: Invalid SLANT");
+ freeBitmaps(bitmaps, font.numCharacters);
+ delete[] bitmaps;
+ delete[] advances;
+ delete[] boxes;
+ delete[] familyName;
+ delete[] slant;
return 0;
}
*p = '\0'; // Remove last quote
@@ -428,6 +459,7 @@ BdfFont *BdfFont::loadFont(Common::SeekableReadStream &stream) {
delete[] advances;
delete[] boxes;
delete[] familyName;
+ delete[] slant;
return 0;
}
@@ -437,6 +469,7 @@ BdfFont *BdfFont::loadFont(Common::SeekableReadStream &stream) {
font.advances = advances;
font.boxes = boxes;
font.familyName = familyName;
+ font.slant = slant;
int firstCharacter = font.numCharacters;
int lastCharacter = -1;
@@ -470,6 +503,7 @@ BdfFont *BdfFont::loadFont(Common::SeekableReadStream &stream) {
delete[] font.advances;
delete[] font.boxes;
delete[] familyName;
+ delete[] slant;
return 0;
}