diff options
author | michi_cc <michi_cc@openttd.org> | 2013-08-06 17:35:11 +0000 |
---|---|---|
committer | michi_cc <michi_cc@openttd.org> | 2013-08-06 17:35:11 +0000 |
commit | bd02761b554cf9b5ddbca05f75aba7dcc4ecb4e5 (patch) | |
tree | ccdce16bbd7a0e297a6cfcc6093994ae9671d5dc | |
parent | 2770a24f9f662c702ed6f3b469950d0e65d8423a (diff) | |
download | openttd-bd02761b554cf9b5ddbca05f75aba7dcc4ecb4e5.tar.xz |
(svn r25696) -Fix (r25651): Missing function in the non-ICU paragraph layouter.
-rw-r--r-- | src/gfx_layout.cpp | 12 | ||||
-rw-r--r-- | src/gfx_layout.h | 2 |
2 files changed, 14 insertions, 0 deletions
diff --git a/src/gfx_layout.cpp b/src/gfx_layout.cpp index bcd5add36..8f18ff1be 100644 --- a/src/gfx_layout.cpp +++ b/src/gfx_layout.cpp @@ -157,6 +157,7 @@ ParagraphLayout::VisualRun::VisualRun(Font *font, const WChar *chars, int char_c font(font), glyph_count(char_count) { this->glyphs = MallocT<GlyphID>(this->glyph_count); + this->glyph_to_char = MallocT<int>(this->glyph_count); /* Positions contains the location of the begin of each of the glyphs, and the end of the last one. */ this->positions = MallocT<float>(this->glyph_count * 2 + 2); @@ -167,6 +168,7 @@ ParagraphLayout::VisualRun::VisualRun(Font *font, const WChar *chars, int char_c this->glyphs[i] = font->fc->MapCharToGlyph(chars[i]); this->positions[2 * i + 2] = this->positions[2 * i] + font->fc->GetGlyphWidth(this->glyphs[i]); this->positions[2 * i + 3] = 0; + this->glyph_to_char[i] = i; } } @@ -174,6 +176,7 @@ ParagraphLayout::VisualRun::VisualRun(Font *font, const WChar *chars, int char_c ParagraphLayout::VisualRun::~VisualRun() { free(this->positions); + free(this->glyph_to_char); free(this->glyphs); } @@ -214,6 +217,15 @@ float *ParagraphLayout::VisualRun::getPositions() const } /** + * Get the glyph-to-character map for this visual run. + * @return The glyph-to-character map. + */ +const int *ParagraphLayout::VisualRun::getGlyphToCharMap() const +{ + return this->glyph_to_char; +} + +/** * Get the height of this font. * @return The height of the font. */ diff --git a/src/gfx_layout.h b/src/gfx_layout.h index b4f9afdc6..fb8866cc8 100644 --- a/src/gfx_layout.h +++ b/src/gfx_layout.h @@ -125,6 +125,7 @@ public: Font *font; ///< The font used to layout these. GlyphID *glyphs; ///< The glyphs we're drawing. float *positions; ///< The positions of the glyphs. + int *glyph_to_char; ///< The char index of the glyphs. int glyph_count; ///< The number of glyphs. public: @@ -135,6 +136,7 @@ public: const GlyphID *getGlyphs() const; float *getPositions() const; int getLeading() const; + const int *getGlyphToCharMap() const; }; /** A single line worth of VisualRuns. */ |