+ * Flags for re-sending data to the vector animation thread
+ */
+ enum ResendFlags
+ {
+ RESEND_PLAY_RANGE = 1 << 0,
+ RESEND_LOOP_COUNT = 1 << 1,
+ RESEND_STOP_BEHAVIOR = 1 << 2,
+ RESEND_LOOPING_MODE = 1 << 3,
+ RESEND_CURRENT_FRAME = 1 << 4,
+ RESEND_SIZE = 1 << 5,
+ RESEND_PLAY_STATE = 1 << 6
+ };
+
+ /**
+ * @brief Structure used to pass parameters to the vector animation task
+ */
+ struct AnimationData
+ {
+ AnimationData()
+ : resendFlag(0),
+ playRange(),
+ playState(),
+ stopBehavior(DevelImageVisual::StopBehavior::CURRENT_FRAME),
+ loopingMode(DevelImageVisual::LoopingMode::RESTART),
+ currentFrame(0),
+ width(0),
+ height(0),
+ loopCount(-1)
+ {
+ }
+
+ AnimationData& operator=(const AnimationData& rhs)
+ {
+ resendFlag |= rhs.resendFlag; // OR resend flag
+ playRange = rhs.playRange;
+ playState = rhs.playState;
+ stopBehavior = rhs.stopBehavior;
+ loopingMode = rhs.loopingMode;
+ currentFrame = rhs.currentFrame;
+ width = rhs.width;
+ height = rhs.height;
+ loopCount = rhs.loopCount;
+ return *this;
+ }
+
+ uint32_t resendFlag;
+ Property::Array playRange;
+ DevelImageVisual::PlayState::Type playState;
+ DevelImageVisual::StopBehavior::Type stopBehavior;
+ DevelImageVisual::LoopingMode::Type loopingMode;
+ uint32_t currentFrame;
+ uint32_t width;
+ uint32_t height;
+ int32_t loopCount;
+ };
+
+ /**