X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=dali-toolkit%2Finternal%2Ftext%2Ftext-effects-style.cpp;h=44302d77ffcc21f62803af3b40671e88cf3ba8bf;hb=831bd867847c32ac74b56c08757b0bed74f73238;hp=1578329f16636ac330a320527bf5408b8621d516;hpb=44835162f4c0107591223e60557ee62b79cab35a;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/text/text-effects-style.cpp b/dali-toolkit/internal/text/text-effects-style.cpp index 1578329..44302d7 100644 --- a/dali-toolkit/internal/text/text-effects-style.cpp +++ b/dali-toolkit/internal/text/text-effects-style.cpp @@ -38,66 +38,121 @@ const std::string OFFSET_KEY( "offset" ); const std::string HEIGHT_KEY( "height" ); const std::string ENABLE_KEY( "enable" ); const std::string TRUE_TOKEN( "true" ); +const std::string FALSE_TOKEN( "false" ); } -bool SetUnderlineProperties( ControllerPtr controller, const Property::Value& value, EffectStyle::Type type ) +bool ParseShadowProperties( const Property::Map& shadowPropertiesMap, + bool& colorDefined, + Vector4& color, + bool& offsetDefined, + Vector2& offset ) { - bool update = false; + const unsigned int numberOfItems = shadowPropertiesMap.Count(); - if( controller ) + // Parses and applies the style. + for( unsigned int index = 0u; index < numberOfItems; ++index ) { - const std::string properties = value.Get(); + const KeyValuePair& valueGet = shadowPropertiesMap.GetKeyValue( index ); + + if( COLOR_KEY == valueGet.first.stringKey ) + { + /// Color key. + colorDefined = true; - // Parses and applies the style. - Property::Map map; - ParsePropertyString( properties, map ); + const std::string colorStr = valueGet.second.Get(); - if( !map.Empty() ) + Text::ColorStringToVector4( colorStr.c_str(), colorStr.size(), color ); + } + else if( OFFSET_KEY == valueGet.first.stringKey ) { - /// Enable key. - Property::Value* enableValue = map.Find( ENABLE_KEY ); + /// Offset key. + offsetDefined = true; - bool enabled = false; - const bool enabledDefined = enableValue != NULL; - if( enabledDefined ) - { - const std::string enableStr = enableValue->Get(); - enabled = TokenComparison( TRUE_TOKEN, enableStr.c_str(), enableStr.size() ); - } + const std::string offsetStr = valueGet.second.Get(); - /// Color key. - Property::Value* colorValue = map.Find( COLOR_KEY ); + StringToVector2( offsetStr.c_str(), offsetStr.size(), offset ); + } + } - Vector4 color; - const bool colorDefined = colorValue != NULL; - if( colorDefined ) - { - const std::string colorStr = colorValue->Get(); + return 0u == numberOfItems; +} - ColorStringToVector4( colorStr.c_str(), colorStr.size(), color ); - } +bool ParseUnderlineProperties( const Property::Map& underlinePropertiesMap, + bool& enabled, + bool& colorDefined, + Vector4& color, + bool& heightDefined, + float& height ) +{ + const unsigned int numberOfItems = underlinePropertiesMap.Count(); + // Parses and applies the style. + for( unsigned int index = 0u; index < numberOfItems; ++index ) + { + const KeyValuePair& valueGet = underlinePropertiesMap.GetKeyValue( index ); + + if( ENABLE_KEY == valueGet.first.stringKey ) + { + /// Enable key. + const std::string enableStr = valueGet.second.Get(); + enabled = Text::TokenComparison( TRUE_TOKEN, enableStr.c_str(), enableStr.size() ); + } + else if( COLOR_KEY == valueGet.first.stringKey ) + { + /// Color key. + colorDefined = true; + + const std::string colorStr = valueGet.second.Get(); + + Text::ColorStringToVector4( colorStr.c_str(), colorStr.size(), color ); + } + else if( HEIGHT_KEY == valueGet.first.stringKey ) + { /// Height key. - Property::Value* heightValue = map.Find( HEIGHT_KEY ); + heightDefined = true; - float height = 0.f; - const bool heightDefined = heightValue != NULL; - if( heightDefined ) - { - const std::string heightStr = heightValue->Get(); + const std::string heightStr = valueGet.second.Get(); - height = StringToFloat( heightStr.c_str() ); - } + height = StringToFloat( heightStr.c_str() ); + } + } + + return 0u == numberOfItems; +} - switch( type ) +bool SetUnderlineProperties( ControllerPtr controller, const Property::Value& value, EffectStyle::Type type ) +{ + bool update = false; + + if( controller ) + { + switch( type ) + { + case EffectStyle::DEFAULT: { - case EffectStyle::DEFAULT: + const Property::Map& propertiesMap = value.Get(); + + bool enabled = false; + bool colorDefined = false; + Vector4 color; + bool heightDefined = false; + float height = 0.f; + + const bool empty = ParseUnderlineProperties( propertiesMap, + enabled, + colorDefined, + color, + heightDefined, + height ); + + if( !empty ) { if( enabled != controller->IsUnderlineEnabled() ) { controller->SetUnderlineEnabled( enabled ); update = true; } + // Sets the default underline values. if( colorDefined && ( controller->GetUnderlineColor() != color ) ) { @@ -105,26 +160,13 @@ bool SetUnderlineProperties( ControllerPtr controller, const Property::Value& va update = true; } - if( heightDefined && fabsf( controller->GetUnderlineHeight() - height ) > Math::MACHINE_EPSILON_1000 ) + if( heightDefined && ( fabsf( controller->GetUnderlineHeight() - height ) > Math::MACHINE_EPSILON_1000 ) ) { controller->SetUnderlineHeight( height ); update = true; } - break; } - case EffectStyle::INPUT: - { - // Sets the input underline values. - // TODO: to be implemented. - break; - } - } - } - else - { - switch( type ) - { - case EffectStyle::DEFAULT: + else { // Disable underline. if( controller->IsUnderlineEnabled() ) @@ -132,18 +174,18 @@ bool SetUnderlineProperties( ControllerPtr controller, const Property::Value& va controller->SetUnderlineEnabled( false ); update = true; } - break; - } - case EffectStyle::INPUT: - { - // Sets the input underline values. - // TODO: to be implemented. - controller->SetInputUnderlineProperties( properties ); - break; } + break; } - } - } + case EffectStyle::INPUT: + { + const std::string& underlineProperties = value.Get(); + + controller->SetInputUnderlineProperties( underlineProperties ); + break; + } + } // switch + } // if( controller ) return update; } @@ -160,19 +202,20 @@ void GetUnderlineProperties( ControllerPtr controller, Property::Value& value, E const Vector4& color = controller->GetUnderlineColor(); const float height = controller->GetUnderlineHeight(); - std::string underlineProperties = "{\"enable\":"; - const std::string enabledStr = enabled ? "true" : "false"; - underlineProperties += "\"" + enabledStr + "\","; + Property::Map map; + + const std::string enabledStr = enabled ? TRUE_TOKEN : FALSE_TOKEN; + map.Insert( ENABLE_KEY, enabledStr ); std::string colorStr; Vector4ToColorString( color, colorStr ); - underlineProperties += "\"color\":\"" + colorStr + "\","; + map.Insert( COLOR_KEY, colorStr ); std::string heightStr; FloatToString( height, heightStr ); - underlineProperties += "\"height\":\"" + heightStr + "\"}"; + map.Insert( HEIGHT_KEY, heightStr ); - value = underlineProperties; + value = map; break; } case EffectStyle::INPUT: @@ -190,41 +233,24 @@ bool SetShadowProperties( ControllerPtr controller, const Property::Value& value if( controller ) { - const std::string properties = value.Get< std::string >(); - - // Parses and applies the style. - Property::Map map; - ParsePropertyString( properties, map ); - - if( !map.Empty() ) + switch( type ) { - /// Color key - Property::Value* colorValue = map.Find( COLOR_KEY ); - - Vector4 color; - const bool colorDefined = colorValue != NULL; - if( colorDefined ) + case EffectStyle::DEFAULT: { - const std::string colorStr = colorValue->Get(); + const Property::Map& propertiesMap = value.Get(); - ColorStringToVector4( colorStr.c_str(), colorStr.size(), color ); - } - - /// Offset key - Property::Value* offsetValue = map.Find( OFFSET_KEY ); - - Vector2 offset; - const bool offsetDefined = offsetValue != NULL; - if( offsetDefined ) - { - const std::string offsetStr = offsetValue->Get(); + bool colorDefined = false; + Vector4 color; + bool offsetDefined = false; + Vector2 offset; - StringToVector2( offsetStr.c_str(), offsetStr.size(), offset ); - } + const bool empty = ParseShadowProperties( propertiesMap, + colorDefined, + color, + offsetDefined, + offset ); - switch( type ) - { - case EffectStyle::DEFAULT: + if( !empty ) { // Sets the default shadow values. if( colorDefined && ( controller->GetShadowColor() != color ) ) @@ -238,39 +264,26 @@ bool SetShadowProperties( ControllerPtr controller, const Property::Value& value controller->SetShadowOffset( offset ); update = true; } - break; } - case EffectStyle::INPUT: - { - // Sets the input shadow values. - // TODO: to be implemented. - break; - } - } - } - else - { - switch( type ) - { - case EffectStyle::DEFAULT: + else { // Disable shadow. if( Vector2::ZERO != controller->GetShadowOffset() ) { controller->SetShadowOffset( Vector2::ZERO ); } - break; - } - case EffectStyle::INPUT: - { - // Sets the input shadow values. - // TODO: to be implemented. - controller->SetInputShadowProperties( properties ); - break; } + break; } - } - } + case EffectStyle::INPUT: + { + const std::string& shadowString = value.Get(); + + controller->SetInputShadowProperties( shadowString ); + break; + } + } // switch + } // if( controller ) return update; } @@ -286,17 +299,17 @@ void GetShadowProperties( ControllerPtr controller, Property::Value& value, Effe const Vector4& color = controller->GetShadowColor(); const Vector2& offset = controller->GetShadowOffset(); - std::string shadowProperties = "{"; + Property::Map map; std::string colorStr; Vector4ToColorString( color, colorStr ); - shadowProperties += "\"color\":\"" + colorStr + "\","; + map.Insert( COLOR_KEY, colorStr ); std::string offsetStr; Vector2ToString( offset, offsetStr ); - shadowProperties += "\"offset\":\"" + offsetStr + "\"}"; + map.Insert( OFFSET_KEY, offsetStr ); - value = shadowProperties; + value = map; break; } case EffectStyle::INPUT: