+ * @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);
+
+protected:
+ /**