Commit 3da1423d03d3bd5b323bc7a18b18c01d592d96cc

Authored by Adeel Kazmi
Committed by Gerrit Code Review
2 parents b16077f4 55bf9907

Merge "Animated control background color of text label" into devel/master

examples/text-label/text-label-example.cpp
@@ -34,42 +34,69 @@ using namespace MultiLanguageStrings; @@ -34,42 +34,69 @@ using namespace MultiLanguageStrings;
34 34
35 namespace 35 namespace
36 { 36 {
37 - const char* const BACKGROUND_IMAGE = DEMO_IMAGE_DIR "grab-handle.png";  
38 -  
39 - const unsigned int KEY_ZERO = 10;  
40 - const unsigned int KEY_ONE = 11;  
41 - const unsigned int KEY_F = 41;  
42 - const unsigned int KEY_H = 43;  
43 - const unsigned int KEY_V = 55;  
44 - const unsigned int KEY_M = 58;  
45 - const unsigned int KEY_L = 46;  
46 - const unsigned int KEY_S = 39;  
47 - const unsigned int KEY_PLUS = 21;  
48 - const unsigned int KEY_MINUS = 20;  
49 -  
50 - const char* H_ALIGNMENT_STRING_TABLE[] =  
51 - {  
52 - "BEGIN",  
53 - "CENTER",  
54 - "END"  
55 - }; 37 +const char* const BACKGROUND_IMAGE = DEMO_IMAGE_DIR "grab-handle.png";
  38 +
  39 +const unsigned int KEY_ZERO = 10;
  40 +const unsigned int KEY_ONE = 11;
  41 +const unsigned int KEY_F = 41;
  42 +const unsigned int KEY_H = 43;
  43 +const unsigned int KEY_V = 55;
  44 +const unsigned int KEY_M = 58;
  45 +const unsigned int KEY_L = 46;
  46 +const unsigned int KEY_S = 39;
  47 +const unsigned int KEY_PLUS = 21;
  48 +const unsigned int KEY_MINUS = 20;
  49 +
  50 +const char* H_ALIGNMENT_STRING_TABLE[] =
  51 +{
  52 + "BEGIN",
  53 + "CENTER",
  54 + "END"
  55 +};
  56 +
  57 +const unsigned int H_ALIGNMENT_STRING_COUNT = sizeof( H_ALIGNMENT_STRING_TABLE ) / sizeof( H_ALIGNMENT_STRING_TABLE[0u] );
  58 +
  59 +const char* V_ALIGNMENT_STRING_TABLE[] =
  60 +{
  61 + "TOP",
  62 + "CENTER",
  63 + "BOTTOM"
  64 +};
  65 +
  66 +const unsigned int V_ALIGNMENT_STRING_COUNT = sizeof( V_ALIGNMENT_STRING_TABLE ) / sizeof( V_ALIGNMENT_STRING_TABLE[0u] );
56 67
57 - const unsigned int H_ALIGNMENT_STRING_COUNT = sizeof( H_ALIGNMENT_STRING_TABLE ) / sizeof( H_ALIGNMENT_STRING_TABLE[0u] ); 68 +int ConvertToEven(int value)
  69 +{
  70 + return (value % 2 == 0) ? value : (value + 1);
  71 +}
58 72
59 - const char* V_ALIGNMENT_STRING_TABLE[] = 73 +struct HSVColorConstraint
  74 +{
  75 + HSVColorConstraint(float hue, float saturation, float value)
  76 + : hue(hue),
  77 + saturation(saturation),
  78 + value(value)
60 { 79 {
61 - "TOP",  
62 - "CENTER",  
63 - "BOTTOM"  
64 - }; 80 + }
65 81
66 - const unsigned int V_ALIGNMENT_STRING_COUNT = sizeof( V_ALIGNMENT_STRING_TABLE ) / sizeof( V_ALIGNMENT_STRING_TABLE[0u] ); 82 + void operator()(Vector4& current, const PropertyInputContainer& inputs )
  83 + {
  84 + current = hsv2rgb(Vector4(inputs[0]->GetFloat(), saturation, value, current.a));
  85 + }
67 86
68 - int ConvertToEven(int value) 87 + Vector4 hsv2rgb(Vector4 colorHSV)
69 { 88 {
70 - return (value % 2 == 0) ? value : (value + 1); 89 + float r=colorHSV.z*(1+colorHSV.y*(cos(colorHSV.x)-1));
  90 + float g=colorHSV.z*(1+colorHSV.y*(cos(colorHSV.x-2.09439)-1));
  91 + float b=colorHSV.z*(1+colorHSV.y*(cos(colorHSV.x+2.09439)-1));
  92 + return Vector4(r, g, b, colorHSV.a);
71 } 93 }
72 -} 94 + float hue;
  95 + float saturation;
  96 + float value;
  97 +};
  98 +
  99 +} // anonymous namespace
73 100
74 /** 101 /**
75 * @brief The main class of the demo. 102 * @brief The main class of the demo.
@@ -134,6 +161,20 @@ public: @@ -134,6 +161,20 @@ public:
134 mLabel.SetBackgroundColor( Color::WHITE ); 161 mLabel.SetBackgroundColor( Color::WHITE );
135 mContainer.Add( mLabel ); 162 mContainer.Add( mLabel );
136 163
  164 + mHueAngleIndex = mLabel.RegisterProperty( "hue", 0.0f );
  165 + Renderer bgRenderer = mLabel.GetRendererAt(0);
  166 + mOverrideMixColorIndex = bgRenderer.GetPropertyIndex( ColorVisual::Property::MIX_COLOR );
  167 +
  168 + Constraint constraint = Constraint::New<Vector4>( bgRenderer, mOverrideMixColorIndex, HSVColorConstraint(0.0f, 0.5f, 0.8f));
  169 + constraint.AddSource( Source( mLabel, mHueAngleIndex ) );
  170 + constraint.SetRemoveAction( Constraint::Discard );
  171 + constraint.Apply();
  172 +
  173 + Animation anim = Animation::New(50.0f);
  174 + anim.AnimateTo(Property(mLabel, mHueAngleIndex), 6.28318f);
  175 + anim.SetLooping(true);
  176 + anim.Play();
  177 +
137 Property::Value labelText = mLabel.GetProperty( TextLabel::Property::TEXT ); 178 Property::Value labelText = mLabel.GetProperty( TextLabel::Property::TEXT );
138 std::cout << "Displaying text: \"" << labelText.Get< std::string >() << "\"" << std::endl; 179 std::cout << "Displaying text: \"" << labelText.Get< std::string >() << "\"" << std::endl;
139 } 180 }
@@ -284,6 +325,8 @@ private: @@ -284,6 +325,8 @@ private:
284 325
285 unsigned int mLanguageId; 326 unsigned int mLanguageId;
286 unsigned int mAlignment; 327 unsigned int mAlignment;
  328 + Property::Index mHueAngleIndex;
  329 + Property::Index mOverrideMixColorIndex;
287 }; 330 };
288 331
289 void RunTest( Application& application ) 332 void RunTest( Application& application )