diff --git a/code/nel/include/nel/gui/view_text.h b/code/nel/include/nel/gui/view_text.h index b9ef7211c..5fe86dee5 100644 --- a/code/nel/include/nel/gui/view_text.h +++ b/code/nel/include/nel/gui/view_text.h @@ -82,7 +82,7 @@ namespace NLGUI void setText (const ucstring &text); void setFontName (const std::string &name); - void setFontSize (sint nFontSize); + void setFontSize (sint nFontSize, bool coef = true); void setEmbolden (bool nEmbolden); void setOblique (bool nOblique); void setColor (const NLMISC::CRGBA &color); @@ -243,6 +243,7 @@ namespace NLGUI std::string _FontName; /// the font size sint _FontSize; + bool _FontSizeCoef; bool _Embolden; bool _Oblique; // width of the font in pixel. Just a Hint for tabing format (computed with '_') diff --git a/code/nel/src/gui/view_text.cpp b/code/nel/src/gui/view_text.cpp index 03dd52701..e991d8170 100644 --- a/code/nel/src/gui/view_text.cpp +++ b/code/nel/src/gui/view_text.cpp @@ -65,6 +65,7 @@ namespace NLGUI _FontSize = 12 + CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont ).getValSInt32(); + _FontSizeCoef = true; _FontName.clear(); _Embolden = false; _Oblique = false; @@ -141,6 +142,7 @@ namespace NLGUI setupDefault (); _FontSize = FontSize + CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont).getValSInt32(); + _FontSizeCoef = true; _Color = Color; _Shadow = Shadow; _ShadowOutline = ShadowOutline; @@ -185,6 +187,7 @@ namespace NLGUI _PosRef = vt._PosRef; _FontSize = vt._FontSize; + _FontSizeCoef = vt._FontSizeCoef; _Embolden = vt._Embolden; _Oblique = vt._Oblique; _Underlined = vt._Underlined; @@ -248,9 +251,15 @@ namespace NLGUI else if( name == "fontsize" ) { - return toString( - _FontSize - CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont ).getValSInt32() - ); + if (_FontSizeCoef) + return toString(_FontSize - CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont ).getValSInt32()); + + return toString(_FontSize); + } + else + if ( name == "fontsize_coef" ) + { + return toString(_FontSizeCoef); } else if( name == "fontweight" ) @@ -425,6 +434,22 @@ namespace NLGUI return true; } 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 (value == "bold") @@ -653,10 +678,11 @@ namespace NLGUI { 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 "fontsize", - BAD_CAST toString( - _FontSize - CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont ).getValSInt32() - ).c_str() ); + + sint32 fontSize = _FontSize; + if (_FontSizeCoef) fontSize -= CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont ).getValSInt32(); + 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"); if (_Embolden) @@ -755,6 +781,16 @@ namespace NLGUI _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" ); _Embolden = false; 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 (); invalidateContent(); } @@ -1405,7 +1443,10 @@ namespace NLGUI // *************************************************************************** sint CViewText::getFontSize() const { - return _FontSize - CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont).getValSInt32(); + if (_FontSizeCoef) + return _FontSize - CWidgetManager::getInstance()->getSystemOption( CWidgetManager::OptionAddCoefFont).getValSInt32(); + + return _FontSize; } // ***************************************************************************