const Vector2* const positionBuffer = mModel->GetLayout();
const Vector4* const colorsBuffer = mModel->GetColors();
const ColorIndex* const colorIndexBuffer = mModel->GetColorIndices();
- const GlyphInfo* hyphens = mModel->GetHyphens();
- const Length* hyphenIndices = mModel->GetHyphenIndices();
- const Length hyphensCount = mModel->GetHyphensCount();
// Whether to use the default color.
const bool useDefaultColor = (NULL == colorsBuffer);
}
// Get a handle of the font client. Used to retrieve the bitmaps of the glyphs.
- TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
- Length hyphenIndex = 0;
+ TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
// Traverses the lines of the text.
for(LineIndex lineIndex = 0u; lineIndex < modelNumberOfLines; ++lineIndex)
float lineExtentLeft = bufferWidth;
float lineExtentRight = 0.0f;
float baseline = 0.0f;
- bool addHyphen = false;
// Traverses the glyphs of the line.
const GlyphIndex endGlyphIndex = std::min(numberOfGlyphs, line.glyphRun.glyphIndex + line.glyphRun.numberOfGlyphs);
}
// Retrieve the glyph's info.
- const GlyphInfo* glyphInfo;
-
- if(addHyphen && hyphens)
- {
- glyphInfo = hyphens + hyphenIndex;
- hyphenIndex++;
- }
- else
- {
- glyphInfo = glyphsBuffer + glyphIndex;
- }
+ const GlyphInfo* const glyphInfo = glyphsBuffer + glyphIndex;
if((glyphInfo->width < Math::MACHINE_EPSILON_1000) ||
(glyphInfo->height < Math::MACHINE_EPSILON_1000))
} // underline
// Retrieves the glyph's position.
- Vector2 position = *(positionBuffer + glyphIndex);
-
- if(addHyphen)
- {
- GlyphInfo tempInfo = *(glyphsBuffer + glyphIndex);
- position.x = position.x + tempInfo.advance - tempInfo.xBearing + glyphInfo->xBearing;
- position.y = -glyphInfo->yBearing;
- }
-
- if(baseline < position.y + glyphInfo->yBearing)
+ const Vector2* const position = positionBuffer + glyphIndex;
+ if(baseline < position->y + glyphInfo->yBearing)
{
- baseline = position.y + glyphInfo->yBearing;
+ baseline = position->y + glyphInfo->yBearing;
}
// Calculate the positions of leftmost and rightmost glyphs in the current line
- if(position.x < lineExtentLeft)
+ if(position->x < lineExtentLeft)
{
- lineExtentLeft = position.x;
+ lineExtentLeft = position->x;
}
- if(position.x + glyphInfo->width > lineExtentRight)
+ if(position->x + glyphInfo->width > lineExtentRight)
{
- lineExtentRight = position.x + glyphInfo->width;
+ lineExtentRight = position->x + glyphInfo->width;
}
// Retrieves the glyph's color.
// Set the buffer of the glyph's bitmap into the final bitmap's buffer
TypesetGlyph(glyphData,
- &position,
+ position,
&color,
style,
pixelFormat);
delete[] glyphData.glyphBitmap.buffer;
glyphData.glyphBitmap.buffer = NULL;
}
-
- while((hyphenIndex < hyphensCount) && (glyphIndex > hyphenIndices[hyphenIndex]))
- {
- hyphenIndex++;
- }
-
- addHyphen = ((hyphenIndex < hyphensCount) && hyphenIndices && ((glyphIndex + 1) == hyphenIndices[hyphenIndex]));
- if(addHyphen)
- {
- glyphIndex--;
- }
}
// Draw the underline from the leftmost glyph to the rightmost glyph