X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Ftext-font-style.cpp;h=6a573373417e554486c06696e61566be4df755c6;hb=306ab4095235efd0289e9da4e3994f456cbda2aa;hp=6fff87e9e61832665cd1b2e438ef2d9fd5f92339;hpb=6b7c807d4a72e4fae1bbcc7aa64c024f5f84944d;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/text/text-font-style.cpp b/dali-toolkit/internal/text/text-font-style.cpp index 6fff87e..6a57337 100644 --- a/dali-toolkit/internal/text/text-font-style.cpp +++ b/dali-toolkit/internal/text/text-font-style.cpp @@ -23,6 +23,7 @@ // INTERNAL INCLUDES #include +#include namespace Dali { @@ -39,6 +40,10 @@ const std::string STYLE_KEY( "style" ); const std::string WEIGHT_KEY( "weight" ); const std::string WIDTH_KEY( "width" ); const std::string SLANT_KEY( "slant" ); +const std::string FAMILY_KEY( "family" ); +const std::string TYPE_KEY( "type" ); + +const std::string SYSTEM_TOKEN( "system" ); #if defined(DEBUG_ENABLED) Debug::Filter* gLogFilter = Debug::Filter::New(Debug::Concise, true, "LOG_TEXT_CONTROLS"); @@ -46,16 +51,74 @@ Debug::Filter* gLogFilter = Debug::Filter::New(Debug::Concise, true, "LOG_TEXT_C } // namespace -void SetFontStyleProperty( ControllerPtr controller, const Property::Value& value, FontStyle::Type type ) +void SetFontFamilyProperty( ControllerPtr controller, const Property::Value& value ) { if( controller ) { - const std::string style = value.Get< std::string >(); - DALI_LOG_INFO( gLogFilter, Debug::General, "Text Control %p FONT_STYLE %s\n", controller.Get(), style.c_str() ); + const std::string fontFamilyValue = value.Get(); + + if( fontFamilyValue.empty() ) + { + // Resets the default's font family name. + controller->SetDefaultFontFamily( "" ); + return; + } + + Property::Map map; + ParsePropertyString( fontFamilyValue, map ); + + if( map.Empty() ) + { + // There is no map. The font has been passed as a font's family name with no format. + controller->SetDefaultFontFamily( fontFamilyValue ); + } + else + { + /// Family key + Property::Value* familyValue = map.Find( FAMILY_KEY ); + + std::string fontFamilyName; + if( NULL != familyValue ) + { + fontFamilyName = familyValue->Get(); + } + + /// Type key + Property::Value* typeValue = map.Find( TYPE_KEY ); + + std::string typeStr; + if( NULL != typeValue ) + { + typeStr = typeValue->Get(); + } + + if( TokenComparison( SYSTEM_TOKEN, typeStr.c_str(), typeStr.size() ) ) + { + controller->UpdateAfterFontChange( fontFamilyName ); + } + else + { + controller->SetDefaultFontFamily( fontFamilyName ); + } + } + } +} - // Parses and applies the style. +void SetFontStyleProperty( ControllerPtr controller, const Property::Value& value, FontStyle::Type type ) +{ + if( controller ) + { Property::Map map; - ParsePropertyString( style, map ); + if( Property::STRING == value.GetType() ) + { + const std::string& fontStyleProperties = value.Get(); + + ParsePropertyString( fontStyleProperties, map ); + } + else + { + map = value.Get(); + } if( !map.Empty() ) { @@ -231,76 +294,45 @@ void GetFontStyleProperty( ControllerPtr controller, Property::Value& value, Fon } } - if( weightDefined || widthDefined || slantDefined ) + Property::Map map; + + if( weightDefined ) { - std::string styleString("{"); - if( weightDefined ) + if( TextAbstraction::FontWeight::NONE != weight ) { - if( TextAbstraction::FontWeight::NONE != weight ) - { - const std::string weightStr( GetEnumerationName( weight, - FONT_WEIGHT_STRING_TABLE, - FONT_WEIGHT_STRING_TABLE_COUNT ) ); + const std::string weightStr( GetEnumerationName( weight, + FONT_WEIGHT_STRING_TABLE, + FONT_WEIGHT_STRING_TABLE_COUNT ) ); - styleString += "\"weight\":\"" + weightStr + "\""; - } - else - { - weightDefined = false; - } + map.Insert( WEIGHT_KEY, weightStr ); } + } - if( widthDefined ) + if( widthDefined ) + { + if( TextAbstraction::FontWidth::NONE != width ) { - if( TextAbstraction::FontWidth::NONE != width ) - { - const std::string widthStr( GetEnumerationName( width, - FONT_WIDTH_STRING_TABLE, - FONT_WIDTH_STRING_TABLE_COUNT ) ); + const std::string widthStr( GetEnumerationName( width, + FONT_WIDTH_STRING_TABLE, + FONT_WIDTH_STRING_TABLE_COUNT ) ); - if( weightDefined ) - { - styleString += ","; - } - styleString += "\"width\":\"" + widthStr + "\""; - } - else - { - widthDefined = false; - } + map.Insert( WIDTH_KEY, widthStr ); } + } - if( slantDefined ) + if( slantDefined ) + { + if( TextAbstraction::FontSlant::NONE != slant ) { - if( TextAbstraction::FontSlant::NONE != slant ) - { - const std::string slantStr( GetEnumerationName( slant, - FONT_SLANT_STRING_TABLE, - FONT_SLANT_STRING_TABLE_COUNT ) ); + const std::string slantStr( GetEnumerationName( slant, + FONT_SLANT_STRING_TABLE, + FONT_SLANT_STRING_TABLE_COUNT ) ); - if( weightDefined || widthDefined ) - { - styleString += ","; - } - styleString += "\"slant\":\"" + slantStr + "\""; - } - else - { - slantDefined = false; - } + map.Insert( SLANT_KEY, slantStr ); } - - if( weightDefined || widthDefined || slantDefined ) - { - styleString += "}"; - } - else - { - styleString.clear(); - } - - value = styleString; } + + value = map; } }