1
0
mirror of https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git synced 2025-07-18 11:19:10 +00:00

Link shadowed text rendering to the plDynamicTextMap::kFontShadowed flag.

Conveniently enough, this existing but unimplemented flag is already set mostly the way we want it in the current PRPs.
This commit is contained in:
2013-07-04 20:13:03 -04:00
committed by Anne Marije v/d Meer
parent 6b4739aec9
commit 1967178e37
4 changed files with 21 additions and 16 deletions

View File

@ -379,6 +379,17 @@ void plDynamicTextMap::IClearFromBuffer( uint32_t *clearBuffer )
} }
} }
//// IPropagateFlags //////////////////////////////////////////////////////////
void plDynamicTextMap::IPropagateFlags()
{
SetJustify(fJustify);
fCurrFont->SetRenderFlag(plFont::kRenderShadow, fFontFlags & kFontShadowed);
fCurrFont->SetRenderFlag(plFont::kRenderIntoAlpha, fFontBlockRGB);
fCurrFont->SetRenderFlag(plFont::kRenderAlphaPremultiplied, fPremultipliedAlpha);
fCurrFont->SetRenderColor(fFontColor.ToARGB32());
}
//// ClearToColor ///////////////////////////////////////////////////////////// //// ClearToColor /////////////////////////////////////////////////////////////
void plDynamicTextMap::ClearToColor( hsColorRGBA &color ) void plDynamicTextMap::ClearToColor( hsColorRGBA &color )
@ -450,6 +461,8 @@ void plDynamicTextMap::SetFont( const plString &face, uint16_t size, uint8_t
// This will be nil if we're just running the page optimizer. // This will be nil if we're just running the page optimizer.
if (fCurrFont) if (fCurrFont)
{ {
if (fFontFlags & kFontShadowed)
fCurrFont->SetRenderFlag(plFont::kRenderShadow, true);
fCurrFont->SetRenderYJustify( plFont::kRenderJustYTop ); fCurrFont->SetRenderYJustify( plFont::kRenderJustYTop );
SetJustify( fJustify ); SetJustify( fJustify );
} }
@ -496,12 +509,9 @@ void plDynamicTextMap::DrawString( uint16_t x, uint16_t y, const wchar_t *tex
if( !IIsValid() ) if( !IIsValid() )
return; return;
SetJustify( fJustify ); IPropagateFlags();
fCurrFont->SetRenderFlag( plFont::kRenderWrap | plFont::kRenderClip, false ); fCurrFont->SetRenderFlag( plFont::kRenderWrap | plFont::kRenderClip, false );
fCurrFont->SetRenderClipRect( 0, 0, fVisWidth, fVisHeight ); fCurrFont->SetRenderClipRect( 0, 0, fVisWidth, fVisHeight );
fCurrFont->SetRenderColor( fFontColor.ToARGB32() );
fCurrFont->SetRenderFlag( plFont::kRenderIntoAlpha, fFontBlockRGB );
fCurrFont->SetRenderFlag( plFont::kRenderAlphaPremultiplied, fPremultipliedAlpha );
fCurrFont->RenderString( this, x, y, text ); fCurrFont->RenderString( this, x, y, text );
} }
@ -518,11 +528,8 @@ void plDynamicTextMap::DrawClippedString( int16_t x, int16_t y, const wchar_t
if( !IIsValid() ) if( !IIsValid() )
return; return;
SetJustify( fJustify ); IPropagateFlags();
fCurrFont->SetRenderClipping( x, y, width, height ); fCurrFont->SetRenderClipping( x, y, width, height );
fCurrFont->SetRenderColor( fFontColor.ToARGB32() );
fCurrFont->SetRenderFlag( plFont::kRenderIntoAlpha, fFontBlockRGB );
fCurrFont->SetRenderFlag( plFont::kRenderAlphaPremultiplied, fPremultipliedAlpha );
fCurrFont->RenderString( this, x, y, text ); fCurrFont->RenderString( this, x, y, text );
} }
@ -539,10 +546,8 @@ void plDynamicTextMap::DrawClippedString( int16_t x, int16_t y, const wchar_t
if( !IIsValid() ) if( !IIsValid() )
return; return;
SetJustify( fJustify ); IPropagateFlags();
fCurrFont->SetRenderClipping( clipX, clipY, width, height ); fCurrFont->SetRenderClipping( clipX, clipY, width, height );
fCurrFont->SetRenderColor( fFontColor.ToARGB32() );
fCurrFont->SetRenderFlag( plFont::kRenderAlphaPremultiplied, fPremultipliedAlpha );
fCurrFont->RenderString( this, x, y, text ); fCurrFont->RenderString( this, x, y, text );
} }
@ -559,11 +564,8 @@ void plDynamicTextMap::DrawWrappedString( uint16_t x, uint16_t y, const wchar
if( !IIsValid() ) if( !IIsValid() )
return; return;
SetJustify( fJustify ); IPropagateFlags();
fCurrFont->SetRenderWrapping( x, y, width, height ); fCurrFont->SetRenderWrapping( x, y, width, height );
fCurrFont->SetRenderColor( fFontColor.ToARGB32() );
fCurrFont->SetRenderFlag( plFont::kRenderIntoAlpha, fFontBlockRGB );
fCurrFont->SetRenderFlag( plFont::kRenderAlphaPremultiplied, fPremultipliedAlpha );
fCurrFont->RenderString( this, x, y, text, lastX, lastY ); fCurrFont->RenderString( this, x, y, text, lastX, lastY );
} }

View File

@ -221,6 +221,8 @@ class plDynamicTextMap : public plMipmap
uint32_t *IAllocateOSSurface( uint16_t width, uint16_t height ); uint32_t *IAllocateOSSurface( uint16_t width, uint16_t height );
void IDestroyOSSurface( void ); void IDestroyOSSurface( void );
void IPropagateFlags();
bool fHasAlpha, fPremultipliedAlpha, fShadowed; bool fHasAlpha, fPremultipliedAlpha, fShadowed;
Justify fJustify; Justify fJustify;

View File

@ -336,7 +336,7 @@ void plFont::IRenderString( plMipmap *mip, uint16_t x, uint16_t y, const wcha
{ {
if( fRenderInfo.fFlags & kRenderAlphaPremultiplied ) if( fRenderInfo.fFlags & kRenderAlphaPremultiplied )
{ {
if (1)//( ( fRenderInfo.fColor & 0x00ffffff ) == 0x00ffffff ) //FIXME if (fRenderInfo.fFlags & kRenderShadow)
fRenderInfo.fRenderFunc = &plFont::IRenderChar8To32AlphaPremShadow; fRenderInfo.fRenderFunc = &plFont::IRenderChar8To32AlphaPremShadow;
else else
fRenderInfo.fRenderFunc = &plFont::IRenderChar8To32AlphaPremultiplied; fRenderInfo.fRenderFunc = &plFont::IRenderChar8To32AlphaPremultiplied;

View File

@ -117,6 +117,7 @@ class plFont : public hsKeyedObject
// leave the alpha as-is // leave the alpha as-is
// This flag has no effect on monochrome fonts // This flag has no effect on monochrome fonts
kRenderAlphaPremultiplied = 0x00001000, // Destination has color values premultiplied by alpha kRenderAlphaPremultiplied = 0x00001000, // Destination has color values premultiplied by alpha
kRenderShadow = 0x00002000, // Render text shadows
}; };
enum Flags enum Flags