X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Ftext-effects-style.cpp;h=d8d35def9164a14076a028e285197dc6a23f30a9;hp=75fabd77d3253a6e3716bb8058a272d64a7e9526;hb=cc06ca1ff697d568fde8de7a4d147fb9d9442fbc;hpb=565f93cb19bc3e1058fc057bea74c973489deab3 diff --git a/dali-toolkit/internal/text/text-effects-style.cpp b/dali-toolkit/internal/text/text-effects-style.cpp old mode 100644 new mode 100755 index 75fabd7..d8d35de --- a/dali-toolkit/internal/text/text-effects-style.cpp +++ b/dali-toolkit/internal/text/text-effects-style.cpp @@ -35,6 +35,8 @@ namespace { const std::string COLOR_KEY( "color" ); const std::string OFFSET_KEY( "offset" ); +const std::string BLUR_RADIUS_KEY( "blurRadius" ); +const std::string WIDTH_KEY( "width" ); const std::string HEIGHT_KEY( "height" ); const std::string ENABLE_KEY( "enable" ); const std::string TRUE_TOKEN( "true" ); @@ -45,7 +47,9 @@ bool ParseShadowProperties( const Property::Map& shadowPropertiesMap, bool& colorDefined, Vector4& color, bool& offsetDefined, - Vector2& offset ) + Vector2& offset, + bool& blurRadiusDefined, + float& blurRadius ) { const unsigned int numberOfItems = shadowPropertiesMap.Count(); @@ -59,18 +63,45 @@ bool ParseShadowProperties( const Property::Map& shadowPropertiesMap, /// Color key. colorDefined = true; - const std::string colorStr = valueGet.second.Get(); - - Text::ColorStringToVector4( colorStr.c_str(), colorStr.size(), color ); + if( valueGet.second.GetType() == Dali::Property::STRING ) + { + const std::string colorStr = valueGet.second.Get(); + Text::ColorStringToVector4( colorStr.c_str(), colorStr.size(), color ); + } + else + { + color = valueGet.second.Get(); + } } else if( OFFSET_KEY == valueGet.first.stringKey ) { /// Offset key. offsetDefined = true; - const std::string offsetStr = valueGet.second.Get(); + if( valueGet.second.GetType() == Dali::Property::STRING ) + { + const std::string offsetStr = valueGet.second.Get(); + StringToVector2( offsetStr.c_str(), offsetStr.size(), offset ); + } + else + { + offset = valueGet.second.Get(); + } + } + else if( BLUR_RADIUS_KEY == valueGet.first.stringKey ) + { + /// Blur radius key. + blurRadiusDefined = true; - StringToVector2( offsetStr.c_str(), offsetStr.size(), offset ); + if( valueGet.second.GetType() == Dali::Property::STRING ) + { + const std::string blurRadiusStr = valueGet.second.Get(); + blurRadius = StringToFloat( blurRadiusStr.c_str() ); + } + else + { + blurRadius = valueGet.second.Get(); + } } } @@ -94,26 +125,75 @@ bool ParseUnderlineProperties( const Property::Map& underlinePropertiesMap, 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() ); + if( valueGet.second.GetType() == Dali::Property::STRING ) + { + const std::string enableStr = valueGet.second.Get(); + enabled = Text::TokenComparison( TRUE_TOKEN, enableStr.c_str(), enableStr.size() ); + } + else + { + enabled = valueGet.second.Get(); + } } 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 ); + if( valueGet.second.GetType() == Dali::Property::STRING ) + { + const std::string colorStr = valueGet.second.Get(); + Text::ColorStringToVector4( colorStr.c_str(), colorStr.size(), color ); + } + else + { + color = valueGet.second.Get(); + } } else if( HEIGHT_KEY == valueGet.first.stringKey ) { /// Height key. heightDefined = true; - const std::string heightStr = valueGet.second.Get(); + if( valueGet.second.GetType() == Dali::Property::STRING ) + { + const std::string heightStr = valueGet.second.Get(); + height = StringToFloat( heightStr.c_str() ); + } + else + { + height = valueGet.second.Get(); + } + } + } + + return 0u == numberOfItems; +} + +bool ParseOutlineProperties( const Property::Map& underlinePropertiesMap, + bool& colorDefined, + Vector4& color, + bool& widthDefined, + unsigned int& width ) +{ + 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 ); - height = StringToFloat( heightStr.c_str() ); + if( COLOR_KEY == valueGet.first.stringKey ) + { + /// Color key. + colorDefined = true; + color = valueGet.second.Get(); + } + else if( WIDTH_KEY == valueGet.first.stringKey ) + { + /// Width key. + widthDefined = true; + width = static_cast( valueGet.second.Get() ); } } @@ -157,7 +237,7 @@ bool SetUnderlineProperties( ControllerPtr controller, const Property::Value& va heightDefined, height ); - controller->UnderlineSetByString( !empty); + controller->UnderlineSetByString( !empty ); } } else @@ -290,6 +370,8 @@ bool SetShadowProperties( ControllerPtr controller, const Property::Value& value Vector4 color; bool offsetDefined = false; Vector2 offset; + bool blurRadiusDefined = false; + float blurRadius; bool empty = true; @@ -305,7 +387,9 @@ bool SetShadowProperties( ControllerPtr controller, const Property::Value& value colorDefined, color, offsetDefined, - offset ); + offset, + blurRadiusDefined, + blurRadius ); controller->ShadowSetByString( !empty ); @@ -316,7 +400,9 @@ bool SetShadowProperties( ControllerPtr controller, const Property::Value& value colorDefined, color, offsetDefined, - offset ); + offset, + blurRadiusDefined, + blurRadius ); controller->ShadowSetByString( false ); } @@ -335,6 +421,12 @@ bool SetShadowProperties( ControllerPtr controller, const Property::Value& value controller->SetShadowOffset( offset ); update = true; } + + if( blurRadiusDefined && ( controller->GetShadowBlurRadius() != blurRadius ) ) + { + controller->SetShadowBlurRadius( blurRadius ); + update = true; + } } else { @@ -369,6 +461,7 @@ void GetShadowProperties( ControllerPtr controller, Property::Value& value, Effe { const Vector4& color = controller->GetShadowColor(); const Vector2& offset = controller->GetShadowOffset(); + const float& blurRadius = controller->GetShadowBlurRadius(); if ( controller->IsShadowSetByString() ) { @@ -380,7 +473,11 @@ void GetShadowProperties( ControllerPtr controller, Property::Value& value, Effe std::string offsetStr; Vector2ToString( offset, offsetStr ); - shadowProperties += "\"offset\":\"" + offsetStr + "\"}"; + shadowProperties += "\"offset\":\"" + offsetStr + "\","; + + std::string blurRadiusStr; + FloatToString( blurRadius, blurRadiusStr ); + shadowProperties += "\"blurRadius\":\"" + blurRadiusStr + "\"}"; value = shadowProperties; } @@ -388,13 +485,9 @@ void GetShadowProperties( ControllerPtr controller, Property::Value& value, Effe { Property::Map map; - std::string colorStr; - Vector4ToColorString( color, colorStr ); - map.Insert( COLOR_KEY, colorStr ); - - std::string offsetStr; - Vector2ToString( offset, offsetStr ); - map.Insert( OFFSET_KEY, offsetStr ); + map.Insert( COLOR_KEY, color ); + map.Insert( OFFSET_KEY, offset ); + map.Insert( BLUR_RADIUS_KEY, blurRadius ); value = map; } @@ -463,24 +556,76 @@ bool SetOutlineProperties( ControllerPtr controller, const Property::Value& valu if( controller ) { - const std::string properties = value.Get< std::string >(); - switch( type ) { case EffectStyle::DEFAULT: { - // Stores the default outline's properties string to be recovered by the GetOutlineProperties() function. - controller->SetDefaultOutlineProperties( properties ); + const Property::Map& propertiesMap = value.Get(); + + bool colorDefined = false; + Vector4 color; + bool widthDefined = false; + unsigned int width = 0u; + + bool empty = true; + + if ( propertiesMap.Empty() ) + { + // Map empty so check if a string provided + // This is purely to maintain backward compatibility, but we don't parse the string to be a property map. + const std::string propertyString = value.Get(); + + // Stores the default outline's properties string to be recovered by the GetOutlineProperties() function. + controller->SetDefaultOutlineProperties( propertyString ); + + controller->OutlineSetByString( true ); + } + else + { + empty = ParseOutlineProperties( propertiesMap, + colorDefined, + color, + widthDefined, + width ); + + controller->OutlineSetByString( false ); + } + + if( !empty ) + { + // Sets the default outline values. + if( colorDefined && ( controller->GetOutlineColor() != color ) ) + { + controller->SetOutlineColor( color ); + update = true; + } + + if( widthDefined && ( controller->GetOutlineWidth() != width ) ) + { + controller->SetOutlineWidth( width ); + update = true; + } + } + else + { + // Disable outline + if( 0u != controller->GetOutlineWidth() ) + { + controller->SetOutlineWidth( 0u ); + update = true; + } + } break; } case EffectStyle::INPUT: { - // Stores the input outline's properties string to be recovered by the GetOutlineProperties() function. - controller->SetInputOutlineProperties( properties ); + const std::string& outlineProperties = value.Get(); + + controller->SetInputOutlineProperties( outlineProperties ); break; } - } - } + } // switch + } // if( controller ) return update; } @@ -493,8 +638,24 @@ void GetOutlineProperties( ControllerPtr controller, Property::Value& value, Eff { case EffectStyle::DEFAULT: { - value = controller->GetDefaultOutlineProperties(); - break; + if ( controller->IsOutlineSetByString() ) + { + value = controller->GetDefaultOutlineProperties(); + break; + } + else + { + const Vector4& color = controller->GetOutlineColor(); + const unsigned int width = controller->GetOutlineWidth(); + + Property::Map map; + map.Insert( COLOR_KEY, color ); + map.Insert( WIDTH_KEY, static_cast( width ) ); + + value = map; + + break; + } } case EffectStyle::INPUT: {