END_TEST;
}
+int UtcDaliArcVisualGetPropertyMap02(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline( "UtcDaliArcVisualGetPropertyMap02" );
+
+ float thickness = 20.0f;
+ float startAngle = 0.0f, sweepAngle = 90.0f;
+
+ Property::Map propertyMap;
+ propertyMap.Add(Visual::Property::TYPE, DevelVisual::ARC)
+ .Add(Visual::Property::MIX_COLOR, Color::RED)
+ .Add(DevelArcVisual::Property::THICKNESS, thickness )
+ .Add(DevelArcVisual::Property::START_ANGLE, startAngle )
+ .Add(DevelArcVisual::Property::SWEEP_ANGLE, sweepAngle )
+ .Add(DevelArcVisual::Property::CAP, DevelArcVisual::Cap::ROUND );
+
+ Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap );
+ DALI_TEST_CHECK( visual );
+
+ Property::Map resultMap;
+ visual.CreatePropertyMap( resultMap );
+
+ // check the property values from the returned map from a visual
+ Property::Value* value = resultMap.Find( Visual::Property::MIX_COLOR, Property::VECTOR4 );
+ DALI_TEST_CHECK( value );
+ DALI_TEST_EQUALS( value->Get< Vector4 >(), Color::RED, TEST_LOCATION );
+
+ value = resultMap.Find( DevelArcVisual::Property::THICKNESS, Property::FLOAT );
+ DALI_TEST_CHECK( value );
+ DALI_TEST_EQUALS( value->Get< float >(), thickness, TEST_LOCATION );
+
+ value = resultMap.Find( DevelArcVisual::Property::START_ANGLE, Property::FLOAT );
+ DALI_TEST_CHECK( value );
+ DALI_TEST_EQUALS( value->Get< float >(), startAngle, TEST_LOCATION );
+
+ value = resultMap.Find( DevelArcVisual::Property::SWEEP_ANGLE, Property::FLOAT );
+ DALI_TEST_CHECK( value );
+ DALI_TEST_EQUALS( value->Get< float >(), sweepAngle, TEST_LOCATION );
+
+ value = resultMap.Find( DevelArcVisual::Property::CAP, Property::INTEGER );
+ DALI_TEST_CHECK( value );
+ DALI_TEST_CHECK( value->Get< int >() == DevelArcVisual::Cap::ROUND );
+
+ END_TEST;
+}
+
int UtcDaliArcVisualUpdateProperty(void)
{
ToolkitTestApplication application;
{
/**
* @brief The thickness of the arc.
- * @details Name "thickness", type Property::FLOAT.
+ * @details Name "thickness", type Property::FLOAT, animatable.
* @note Mandatory.
*/
THICKNESS = VISUAL_PROPERTY_START_INDEX,
/**
* @brief The start angle where the arc begins in degrees.
- * @details Name "startAngle", type Property::FLOAT.
+ * @details Name "startAngle", type Property::FLOAT, animatable.
* @note Optional. If not specified, the default is 0.
*/
START_ANGLE,
/**
* @brief The sweep angle of the arc in degrees.
- * @details Name "sweepAngle", type Property::FLOAT.
+ * @details Name "sweepAngle", type Property::FLOAT, animatable.
* The arc starts at a specified start angle and sweeps clockwise, drawing slices of pie.
* @note Optional. If not specified, the default is 360.
*/
ResourceReady( Toolkit::Visual::ResourceStatus::READY );
}
+void ArcVisual::DoSetOffScene(Actor& actor)
+{
+ if(mImpl->mRenderer)
+ {
+ // Update values from Renderer
+ mThickness = mImpl->mRenderer.GetProperty<float>(mThicknessIndex);
+ mStartAngle = mImpl->mRenderer.GetProperty<float>(mStartAngleIndex);
+ mSweepAngle = mImpl->mRenderer.GetProperty<float>(mSweepAngleIndex);
+ }
+
+ actor.RemoveRenderer(mImpl->mRenderer);
+ mImpl->mRenderer.Reset();
+
+ mThicknessIndex = Property::INVALID_INDEX;
+ mStartAngleIndex = Property::INVALID_INDEX;
+ mSweepAngleIndex = Property::INVALID_INDEX;
+}
+
void ArcVisual::DoCreatePropertyMap( Property::Map& map ) const
{
+ float thickness, startAngle, sweepAngle;
+ if(mImpl->mRenderer)
+ {
+ // Update values from Renderer
+ thickness = mImpl->mRenderer.GetProperty<float>(mThicknessIndex);
+ startAngle = mImpl->mRenderer.GetProperty<float>(mStartAngleIndex);
+ sweepAngle = mImpl->mRenderer.GetProperty<float>(mSweepAngleIndex);
+ }
+ else
+ {
+ thickness = mThickness;
+ startAngle = mStartAngle;
+ sweepAngle = mSweepAngle;
+ }
+
map.Clear();
map.Insert( Toolkit::Visual::Property::TYPE, Toolkit::DevelVisual::ARC );
- map.Insert( Toolkit::DevelArcVisual::Property::THICKNESS, mThickness );
- map.Insert( Toolkit::DevelArcVisual::Property::START_ANGLE, mStartAngle );
- map.Insert( Toolkit::DevelArcVisual::Property::SWEEP_ANGLE, mSweepAngle );
+ map.Insert(Toolkit::DevelArcVisual::Property::THICKNESS, thickness);
+ map.Insert(Toolkit::DevelArcVisual::Property::START_ANGLE, startAngle);
+ map.Insert(Toolkit::DevelArcVisual::Property::SWEEP_ANGLE, sweepAngle);
map.Insert( Toolkit::DevelArcVisual::Property::CAP, mCapType );
}
mImpl->mRenderer = Renderer::New( geometry, shader );
- mThicknessIndex = mImpl->mRenderer.RegisterProperty( THICKNESS_NAME, mThickness );
- mStartAngleIndex = mImpl->mRenderer.RegisterProperty( START_ANGLE_NAME, mStartAngle );
- mSweepAngleIndex = mImpl->mRenderer.RegisterProperty( SWEEP_ANGLE_NAME, mSweepAngle );
+ mThicknessIndex = mImpl->mRenderer.RegisterProperty(DevelArcVisual::Property::THICKNESS, THICKNESS_NAME, mThickness);
+ mStartAngleIndex = mImpl->mRenderer.RegisterProperty(DevelArcVisual::Property::START_ANGLE, START_ANGLE_NAME, mStartAngle);
+ mSweepAngleIndex = mImpl->mRenderer.RegisterProperty(DevelArcVisual::Property::SWEEP_ANGLE, SWEEP_ANGLE_NAME, mSweepAngle);
mRadiusIndex = mImpl->mRenderer.RegisterProperty( RADIUS_NAME, mRadius );
void DoSetOnScene( Actor& actor ) override;
/**
+ * @copydoc Visual::Base::DoSetOffScene
+ */
+ void DoSetOffScene(Actor& actor) override;
+
+ /**
* @copydoc Visual::Base::OnSetTransform
*/
void OnSetTransform() override;