+ /**
+ * Sets the mix color ( including opacity ) of the visual.
+ * @param[in] mixColor The new mix color
+ */
+ void SetMixColor(const Vector4& color);
+
+ /**
+ * Sets the mix color of the visual.
+ * @param[in] mixColor The new mix color
+ */
+ void SetMixColor(const Vector3& color);
+
+ /**
+ * Animate the property if it exists in the visual or renderer.
+ *
+ * If it's a visual property such as mix color or a transform property,
+ * saves the target value to the local data.
+ *
+ * If the visual isn't staged (i.e. it doesn't have a renderer),
+ * then this will not add an animation.
+ *
+ * If the animator is valid and the transition handle is empty - it will
+ * be created.
+ *
+ * @param[in] transition The animation to create or attach to
+ * @param[in] animator The animation parameters of the property.
+ */
+ void AnimateProperty(Dali::Animation& transition,
+ Internal::TransitionData::Animator& animator);
+
+ /**
+ * @brief Add an observer to watch for when the Visuals have events to notify
+ * Currently only supports a single observer
+ */
+ void AddEventObserver(Visual::EventObserver& observer);
+
+ /**
+ * @brief Remove an observer
+ */
+ void RemoveEventObserver(Visual::EventObserver& observer);
+
+ /**
+ * @brief Called when the visuals resources are loaded / ready
+ */
+ void ResourceReady(Toolkit::Visual::ResourceStatus resourceStatus);
+
+ /**
+ * @brief Called when the visuals resources are loaded / ready
+ * @return true if ready, false otherwise
+ */
+ virtual bool IsResourceReady() const;
+
+ /**
+ * @brief Get the loading state of the visual resource
+ * @return Return the loading status (PREPARING, READY and FAILED) of visual resource
+ */
+ Toolkit::Visual::ResourceStatus GetResourceStatus() const;
+
+ /**
+ * @brief Get the fitting mode for the visual
+ */
+ FittingMode GetFittingMode() const;
+
+ /**
+ * @brief Get the actual Visual Object.
+ * @return The actual visual object
+ * @note Should be overridden by deriving controls if they are acting as a proxy to other visual objects.
+ */
+ virtual Base& GetVisualObject();
+
+ /**
+ * @brief Query whether resources requires to be loaded synchronously.
+ * @return Returns true if synchronous resource loading is required, false otherwise.
+ */
+ bool IsSynchronousLoadingRequired() const;
+
+ /**
+ * @brief Get the type of this visual.
+ *
+ * @return The the type of this visual.
+ */
+ Toolkit::Visual::Type GetType() const;
+
+ /**
+ * @brief Retrieve the property object associated with the property key.
+ *
+ * @param[in] key The Property key of the visual.
+ * @return The Property object
+ */
+ Dali::Property GetPropertyObject(Dali::Property::Key key);