+ /**
+ * @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 or failed (mean, broken image ready)
+ * @return true if ready or failed (mean, broken image 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;