mirror of
https://github.com/libretro/scummvm.git
synced 2024-11-30 21:00:39 +00:00
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
@ -529,6 +529,9 @@ public:
|
||||
virtual void drawString(const Graphics::Font *font, const Common::String &text,
|
||||
const Common::Rect &area, Graphics::TextAlign alignH,
|
||||
GUI::ThemeEngine::TextAlignVertical alignV, int deltax, bool useEllipsis, const Common::Rect &textDrawableArea) = 0;
|
||||
virtual void drawString(const Graphics::Font *font, const Common::U32String &text,
|
||||
const Common::Rect &area, Graphics::TextAlign alignH,
|
||||
GUI::ThemeEngine::TextAlignVertical alignV, int deltax, bool useEllipsis, const Common::Rect &textDrawableArea) = 0;
|
||||
|
||||
/**
|
||||
* Allows to temporarily enable/disable all shadows drawing.
|
||||
|
@ -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) {
|
||||
|
@ -68,6 +68,9 @@ public:
|
||||
void drawString(const Graphics::Font *font, const Common::String &text,
|
||||
const Common::Rect &area, Graphics::TextAlign alignH, GUI::ThemeEngine::TextAlignVertical alignV,
|
||||
int deltax, bool elipsis, const Common::Rect &textDrawableArea = Common::Rect(0, 0, 0, 0)) override;
|
||||
void drawString(const Graphics::Font *font, const Common::U32String &text,
|
||||
const Common::Rect &area, Graphics::TextAlign alignH, GUI::ThemeEngine::TextAlignVertical alignV,
|
||||
int deltax, bool elipsis, const Common::Rect &textDrawableArea = Common::Rect(0, 0, 0, 0)) override;
|
||||
|
||||
void setFgColor(uint8 r, uint8 g, uint8 b) override { _fgColor = _format.RGBToColor(r, g, b); }
|
||||
void setBgColor(uint8 r, uint8 g, uint8 b) override { _bgColor = _format.RGBToColor(r, g, b); }
|
||||
|
Loading…
Reference in New Issue
Block a user