+ if(mFrameDelayTimer && IsOnScene() && mActionStatus != DevelAnimatedImageVisual::Action::PLAY)
+ {
+ mFrameDelayTimer.Start();
+ }
+ mActionStatus = DevelAnimatedImageVisual::Action::PLAY;
+ break;
+ }
+ case DevelAnimatedImageVisual::Action::STOP:
+ {
+ // STOP reset functionality will actually be done in a future change
+ // Stop will be executed on next timer tick
+ mActionStatus = DevelAnimatedImageVisual::Action::STOP;
+ if(IsOnScene())
+ {
+ DisplayNextFrame();
+ }
+ break;
+ }
+ case DevelAnimatedImageVisual::Action::JUMP_TO:
+ {
+ int32_t frameNumber;
+ if(attributes.Get(frameNumber))
+ {
+ if(frameNumber < 0 || frameNumber >= static_cast<int32_t>(mFrameCount))
+ {
+ DALI_LOG_ERROR("Invalid frame index used.\n");
+ }
+ else
+ {
+ mIsJumpTo = true;
+ mFrameIndexForJumpTo = frameNumber;
+ if(IsOnScene())
+ {
+ DisplayNextFrame();
+ }
+ }
+ }
+ break;
+ }
+ }
+}
+
+void AnimatedImageVisual::DoSetProperties(const Property::Map& propertyMap)
+{
+ // url[s] already passed in from constructor
+ for(Property::Map::SizeType iter = 0; iter < propertyMap.Count(); ++iter)
+ {
+ KeyValuePair keyValue = propertyMap.GetKeyValue(iter);
+ if(keyValue.first.type == Property::Key::INDEX)
+ {
+ DoSetProperty(keyValue.first.indexKey, keyValue.second);