+ virtual float GetHeightForWidth( float width ) = 0;
+
+ /**
+ * @brief This method is called during size negotiation when a width is required for a given height.
+ *
+ * Derived classes should override this if they wish to customize the width returned.
+ *
+ * @SINCE_1_0.0
+ * @param height Height to use.
+ * @return The width based on the width.
+ */
+ virtual float GetWidthForHeight( float height ) = 0;
+
+ /**
+ * @brief Determine if this actor is dependent on it's children for relayout.
+ *
+ * @SINCE_1_0.0
+ * @param dimension The dimension(s) to check for
+ * @return Return if the actor is dependent on it's children.
+ */
+ virtual bool RelayoutDependentOnChildren( Dimension::Type dimension = Dimension::ALL_DIMENSIONS ) = 0;
+
+ /**
+ * @brief Virtual method to notify deriving classes that relayout dependencies have been
+ * met and the size for this object is about to be calculated for the given dimension
+ *
+ * @SINCE_1_0.0
+ * @param dimension The dimension that is about to be calculated
+ */
+ virtual void OnCalculateRelayoutSize( Dimension::Type dimension ) = 0;
+
+ /**
+ * @brief Virtual method to notify deriving classes that the size for a dimension
+ * has just been negotiated
+ *
+ * @SINCE_1_0.0
+ * @param[in] size The new size for the given dimension
+ * @param[in] dimension The dimension that was just negotiated
+ */
+ virtual void OnLayoutNegotiated( float size, Dimension::Type dimension ) = 0;
+
+ /**
+ * @brief Retrieve the extension for this control.
+ *
+ * @SINCE_1_0.0
+ * @return The extension if available, NULL otherwise
+ */
+ virtual Extension* GetExtension()
+ {
+ return NULL;
+ }