2020-10-06 20:01:20 +00:00
|
|
|
|
2020-10-06 23:00:43 +00:00
|
|
|
class SWMenuDelegate : RazeMenuDelegate
|
2020-10-06 20:01:20 +00:00
|
|
|
{
|
|
|
|
override int DrawCaption(String title, Font fnt, int y, bool drawit)
|
|
|
|
{
|
|
|
|
let font = generic_ui? NewConsoleFont : BigFont; // this ignores the passed font intentionally.
|
|
|
|
let texid = TexMan.CheckForTexture("MENUBAR");
|
|
|
|
let texsize = TexMan.GetScaledSize(texid);
|
|
|
|
let fonth = font.GetGlyphHeight("A");
|
|
|
|
let fontscale = 0.7; // at full 1.0 scale the font is too large
|
|
|
|
if (drawit)
|
|
|
|
{
|
|
|
|
int width = font.StringWidth(title) * fontscale;
|
|
|
|
if (texid.isValid())
|
|
|
|
{
|
|
|
|
double scalex = 1.; // Expand the box if the text is longer
|
|
|
|
if (texsize.X - 60 < width) scalex = width / (texsize.X - 60);
|
|
|
|
screen.DrawTexture(texid, false, 160, 20, DTA_FullscreenScale, FSMode_Fit320x200Top, DTA_CenterOffsetRel, true, DTA_ScaleX, scalex);
|
|
|
|
}
|
|
|
|
screen.DrawText(font, Font.CR_UNTRANSLATED, 160 - width / 2, 22 - fonth / 2, title, DTA_FullscreenScale, FSMode_Fit320x200Top, DTA_ScaleX, fontscale);
|
|
|
|
}
|
|
|
|
double fx, fy, fw, fh;
|
|
|
|
[fx, fy, fw, fh] = Screen.GetFullscreenRect(320, 200, FSMode_ScaleToFit43Top);
|
|
|
|
int h = texid.isValid()? texsize.Y : fonth;
|
|
|
|
return int((y+h) * fh / 200); // This must be the covered height of the header in true pixels.
|
|
|
|
}
|
|
|
|
}
|