Changed: Allow to set font size without adding global font size coef

--HG--
branch : develop
This commit is contained in:
Nimetu 2019-01-08 11:32:01 +02:00
parent dda8a36ee2
commit 8b69d673be
2 changed files with 53 additions and 11 deletions

View file

@ -82,7 +82,7 @@ namespace NLGUI
void setText (const ucstring &text); void setText (const ucstring &text);
void setFontName (const std::string &name); void setFontName (const std::string &name);
void setFontSize (sint nFontSize); void setFontSize (sint nFontSize, bool coef = true);
void setEmbolden (bool nEmbolden); void setEmbolden (bool nEmbolden);
void setOblique (bool nOblique); void setOblique (bool nOblique);
void setColor (const NLMISC::CRGBA &color); void setColor (const NLMISC::CRGBA &color);
@ -243,6 +243,7 @@ namespace NLGUI
std::string _FontName; std::string _FontName;
/// the font size /// the font size
sint _FontSize; sint _FontSize;
bool _FontSizeCoef;
bool _Embolden; bool _Embolden;
bool _Oblique; bool _Oblique;
// width of the font in pixel. Just a Hint for tabing format (computed with '_') // width of the font in pixel. Just a Hint for tabing format (computed with '_')

View file

@ -65,6 +65,7 @@ namespace NLGUI
_FontSize = 12 + _FontSize = 12 +
CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont ).getValSInt32(); CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont ).getValSInt32();
_FontSizeCoef = true;
_FontName.clear(); _FontName.clear();
_Embolden = false; _Embolden = false;
_Oblique = false; _Oblique = false;
@ -141,6 +142,7 @@ namespace NLGUI
setupDefault (); setupDefault ();
_FontSize = FontSize + CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont).getValSInt32(); _FontSize = FontSize + CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont).getValSInt32();
_FontSizeCoef = true;
_Color = Color; _Color = Color;
_Shadow = Shadow; _Shadow = Shadow;
_ShadowOutline = ShadowOutline; _ShadowOutline = ShadowOutline;
@ -185,6 +187,7 @@ namespace NLGUI
_PosRef = vt._PosRef; _PosRef = vt._PosRef;
_FontSize = vt._FontSize; _FontSize = vt._FontSize;
_FontSizeCoef = vt._FontSizeCoef;
_Embolden = vt._Embolden; _Embolden = vt._Embolden;
_Oblique = vt._Oblique; _Oblique = vt._Oblique;
_Underlined = vt._Underlined; _Underlined = vt._Underlined;
@ -248,9 +251,15 @@ namespace NLGUI
else else
if( name == "fontsize" ) if( name == "fontsize" )
{ {
return toString( if (_FontSizeCoef)
_FontSize - CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont ).getValSInt32() return toString(_FontSize - CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont ).getValSInt32());
);
return toString(_FontSize);
}
else
if ( name == "fontsize_coef" )
{
return toString(_FontSizeCoef);
} }
else else
if( name == "fontweight" ) if( name == "fontweight" )
@ -425,6 +434,22 @@ namespace NLGUI
return true; return true;
} }
else else
if( name == "fontsize_coef" )
{
bool b;
bool oldValue = _FontSizeCoef;
if (fromString( value, b) )
_FontSizeCoef = b;
// must only change font size when current state changes
if (_FontSizeCoef != oldValue)
{
if (_FontSizeCoef)
_FontSize += CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont ).getValSInt32();
else
_FontSize -= CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont ).getValSInt32();
}
}
else
if( name == "fontweight" ) if( name == "fontweight" )
{ {
if (value == "bold") if (value == "bold")
@ -653,10 +678,11 @@ namespace NLGUI
{ {
xmlSetProp( node, BAD_CAST "color", BAD_CAST toString( _Color ).c_str() ); xmlSetProp( node, BAD_CAST "color", BAD_CAST toString( _Color ).c_str() );
xmlSetProp( node, BAD_CAST "global_color", BAD_CAST toString( _ModulateGlobalColor ).c_str() ); xmlSetProp( node, BAD_CAST "global_color", BAD_CAST toString( _ModulateGlobalColor ).c_str() );
xmlSetProp( node, BAD_CAST "fontsize",
BAD_CAST toString( sint32 fontSize = _FontSize;
_FontSize - CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont ).getValSInt32() if (_FontSizeCoef) fontSize -= CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont ).getValSInt32();
).c_str() ); xmlSetProp( node, BAD_CAST "fontsize", BAD_CAST toString(fontSize).c_str() );
xmlSetProp( node, BAD_CAST "fontsize_coef", BAD_CAST toString(_FontSizeCoef).c_str() );
std::string fontweight("normal"); std::string fontweight("normal");
if (_Embolden) if (_Embolden)
@ -755,6 +781,16 @@ namespace NLGUI
_FontSize += CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont).getValSInt32(); _FontSize += CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont).getValSInt32();
} }
prop = (char*) xmlGetProp( cur, (xmlChar*)"fontsize_coef" );
_FontSizeCoef = true;
if (prop)
{
_FontSizeCoef = convertBool(prop);
if (!_FontSizeCoef)
_FontSize -= CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont).getValSInt32();
}
prop = (char*) xmlGetProp( cur, (xmlChar*)"fontweight" ); prop = (char*) xmlGetProp( cur, (xmlChar*)"fontweight" );
_Embolden = false; _Embolden = false;
if (prop) if (prop)
@ -1395,9 +1431,11 @@ namespace NLGUI
} }
// *************************************************************************** // ***************************************************************************
void CViewText::setFontSize (sint nFontSize) void CViewText::setFontSize (sint nFontSize, bool coef)
{ {
_FontSize = nFontSize + CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont).getValSInt32(); _FontSize = nFontSize;
if (coef) _FontSize += CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont).getValSInt32();
_FontSizeCoef = coef;
computeFontSize (); computeFontSize ();
invalidateContent(); invalidateContent();
} }
@ -1405,7 +1443,10 @@ namespace NLGUI
// *************************************************************************** // ***************************************************************************
sint CViewText::getFontSize() const sint CViewText::getFontSize() const
{ {
if (_FontSizeCoef)
return _FontSize - CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont).getValSInt32(); return _FontSize - CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont).getValSInt32();
return _FontSize;
} }
// *************************************************************************** // ***************************************************************************