GUI: U32: Temporarily overload drawString
- To accept u32 string as a parameter - To draw everything else normally until fully converted to drawing u32
This commit is contained in:
parent
ef97ff28f3
commit
20e21ba79d
3 changed files with 50 additions and 0 deletions
|
@ -1075,6 +1075,50 @@ drawString(const Graphics::Font *font, const Common::String &text, const Common:
|
|||
}
|
||||
}
|
||||
|
||||
template<typename PixelType>
|
||||
void VectorRendererSpec<PixelType>::
|
||||
drawString(const Graphics::Font *font, const Common::U32String &text, const Common::Rect &area,
|
||||
Graphics::TextAlign alignH, GUI::ThemeEngine::TextAlignVertical alignV, int deltax, bool ellipsis, const Common::Rect &textDrawableArea) {
|
||||
|
||||
int offset = area.top;
|
||||
|
||||
if (font->getFontHeight() < area.height()) {
|
||||
switch (alignV) {
|
||||
case GUI::ThemeEngine::kTextAlignVCenter:
|
||||
offset = area.top + ((area.height() - font->getFontHeight()) >> 1);
|
||||
break;
|
||||
case GUI::ThemeEngine::kTextAlignVBottom:
|
||||
offset = area.bottom - font->getFontHeight();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Common::Rect drawArea;
|
||||
if (textDrawableArea.isEmpty()) {
|
||||
// In case no special area to draw to is given we only draw in the
|
||||
// area specified by the user.
|
||||
drawArea = area;
|
||||
// warning("there is no text drawable area. Please set this area for clipping");
|
||||
} else {
|
||||
// The area we can draw to is the intersection between the allowed
|
||||
// drawing area (textDrawableArea) and the area where we try to draw
|
||||
// the text (area).
|
||||
drawArea = textDrawableArea.findIntersectingRect(area);
|
||||
}
|
||||
|
||||
// Better safe than sorry. We intersect with the actual surface boundaries
|
||||
// to avoid any ugly clipping in _activeSurface->getSubArea which messes
|
||||
// up the calculation of the x and y coordinates where to draw the string.
|
||||
drawArea = drawArea.findIntersectingRect(Common::Rect(0, 0, _activeSurface->w, _activeSurface->h));
|
||||
|
||||
if (!drawArea.isEmpty()) {
|
||||
Surface textAreaSurface = _activeSurface->getSubArea(drawArea);
|
||||
font->drawString(&textAreaSurface, text, area.left - drawArea.left, offset - drawArea.top, area.width() - deltax, _fgColor, alignH, deltax);
|
||||
}
|
||||
}
|
||||
|
||||
template<typename PixelType>
|
||||
void VectorRendererSpec<PixelType>::
|
||||
drawLine(int x1, int y1, int x2, int y2) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue