mirror of https://github.com/OpenTTD/OpenTTD
Fix #8731: Always use a 32bpp blitter if font anti-aliasing is enabled.
parent
c93c9c099e
commit
46e13313e4
|
@ -279,10 +279,10 @@ void TrueTypeFontCache::SetGlyphPtr(GlyphID key, const GlyphEntry *glyph, bool d
|
||||||
|
|
||||||
|
|
||||||
/* Check if a glyph should be rendered with anti-aliasing. */
|
/* Check if a glyph should be rendered with anti-aliasing. */
|
||||||
static bool GetFontAAState(FontSize size)
|
static bool GetFontAAState(FontSize size, bool check_blitter = true)
|
||||||
{
|
{
|
||||||
/* AA is only supported for 32 bpp */
|
/* AA is only supported for 32 bpp */
|
||||||
if (BlitterFactory::GetCurrentBlitter()->GetScreenDepth() != 32) return false;
|
if (check_blitter && BlitterFactory::GetCurrentBlitter()->GetScreenDepth() != 32) return false;
|
||||||
|
|
||||||
switch (size) {
|
switch (size) {
|
||||||
default: NOT_REACHED();
|
default: NOT_REACHED();
|
||||||
|
@ -716,6 +716,19 @@ void UninitFreeType()
|
||||||
#endif /* WITH_FREETYPE */
|
#endif /* WITH_FREETYPE */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Should any of the active fonts be anti-aliased?
|
||||||
|
* @return True if any of the loaded fonts want anti-aliased drawing.
|
||||||
|
*/
|
||||||
|
bool HasAntialiasedFonts()
|
||||||
|
{
|
||||||
|
for (FontSize fs = FS_BEGIN; fs < FS_END; fs++) {
|
||||||
|
if (!FontCache::Get(fs)->IsBuiltInFont() && GetFontAAState(fs, false)) return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
#if !defined(_WIN32) && !defined(__APPLE__) && !defined(WITH_FONTCONFIG) && !defined(WITH_COCOA)
|
#if !defined(_WIN32) && !defined(__APPLE__) && !defined(WITH_FONTCONFIG) && !defined(WITH_COCOA)
|
||||||
|
|
||||||
#ifdef WITH_FREETYPE
|
#ifdef WITH_FREETYPE
|
||||||
|
|
|
@ -233,5 +233,6 @@ extern FreeTypeSettings _freetype;
|
||||||
|
|
||||||
void InitFreeType(bool monospace);
|
void InitFreeType(bool monospace);
|
||||||
void UninitFreeType();
|
void UninitFreeType();
|
||||||
|
bool HasAntialiasedFonts();
|
||||||
|
|
||||||
#endif /* FONTCACHE_H */
|
#endif /* FONTCACHE_H */
|
||||||
|
|
|
@ -268,6 +268,8 @@ static bool SwitchNewGRFBlitter()
|
||||||
if (c->status == GCS_DISABLED || c->status == GCS_NOT_FOUND || HasBit(c->flags, GCF_INIT_ONLY)) continue;
|
if (c->status == GCS_DISABLED || c->status == GCS_NOT_FOUND || HasBit(c->flags, GCF_INIT_ONLY)) continue;
|
||||||
if (c->palette & GRFP_BLT_32BPP) depth_wanted_by_grf = 32;
|
if (c->palette & GRFP_BLT_32BPP) depth_wanted_by_grf = 32;
|
||||||
}
|
}
|
||||||
|
/* We need a 32bpp blitter for font anti-alias. */
|
||||||
|
if (HasAntialiasedFonts()) depth_wanted_by_grf = 32;
|
||||||
|
|
||||||
/* Search the best blitter. */
|
/* Search the best blitter. */
|
||||||
static const struct {
|
static const struct {
|
||||||
|
|
|
@ -433,6 +433,7 @@ struct GameOptionsWindow : Window {
|
||||||
CheckForMissingGlyphs();
|
CheckForMissingGlyphs();
|
||||||
ClearAllCachedNames();
|
ClearAllCachedNames();
|
||||||
UpdateAllVirtCoords();
|
UpdateAllVirtCoords();
|
||||||
|
CheckBlitter();
|
||||||
ReInitAllWindows();
|
ReInitAllWindows();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue