public override float GetValue(Window wnd) { // get window to use. var sourceWindow = String.IsNullOrEmpty(d_childName) ? wnd : wnd.GetChild(d_childName); if (d_type == DimensionType.Invalid) { // check property data type and convert to float if necessary var pi = sourceWindow.GetPropertyInstance(d_property); if (pi.GetDataType() == typeof(bool).Name) { return(sourceWindow.GetProperty <bool>(d_property) ? 1.0f : 0.0f); } // return float property value. return(sourceWindow.GetProperty <float>(d_property)); } var d = sourceWindow.GetProperty <UDim>(d_property); var s = sourceWindow.GetPixelSize(); switch (d_type) { case DimensionType.Width: return(CoordConverter.AsAbsolute(d, s.Width)); case DimensionType.Height: return(CoordConverter.AsAbsolute(d, s.Height)); default: throw new InvalidRequestException("unknown or unsupported DimensionType encountered."); } }
/// <summary> /// Return a Rectd describing the absolute pixel area represented by this /// ComponentArea. /// </summary> /// <param name="wnd"> /// Window object to be used when calculating final pixel area. /// </param> /// <param name="container"> /// Rect object to be used as a base or container when converting relative /// dimensions. /// </param> /// <returns> /// Rectf object describing the pixels area represented by this /// ComponentArea when using \a wnd and \a container as a reference for /// calculating the final pixel dimensions. /// </returns> public Rectf GetPixelRect(Window wnd, Rectf container) { var pixelRect = new Rectf(); // use a property? if (IsAreaFetchedFromProperty()) { pixelRect = CoordConverter.AsAbsolute(wnd.GetProperty <URect>(_namedSource), wnd.GetPixelSize()); } else if (IsAreaFetchedFromNamedArea()) { return(WidgetLookManager.GetSingleton() .GetWidgetLook(_namedAreaSourceLook) .GetNamedArea(_namedSource) .GetArea() .GetPixelRect(wnd, container)); } else { // not via property or named area- calculate using Dimensions // sanity check, we mus be able to form a Rect from what we represent. global::System.Diagnostics.Debug.Assert(d_left.GetDimensionType() == DimensionType.LeftEdge || d_left.GetDimensionType() == DimensionType.XPosition); global::System.Diagnostics.Debug.Assert(d_top.GetDimensionType() == DimensionType.TopEdge || d_top.GetDimensionType() == DimensionType.YPosition); global::System.Diagnostics.Debug.Assert(d_right_or_width.GetDimensionType() == DimensionType.RightEdge || d_right_or_width.GetDimensionType() == DimensionType.Width); global::System.Diagnostics.Debug.Assert(d_bottom_or_height.GetDimensionType() == DimensionType.BottomEdge || d_bottom_or_height.GetDimensionType() == DimensionType.Height); pixelRect.Left = d_left.GetBaseDimension().GetValue(wnd, container) + container.Left; pixelRect.Top = d_top.GetBaseDimension().GetValue(wnd, container) + container.Top; if (d_right_or_width.GetDimensionType() == DimensionType.Width) { pixelRect.Width = d_right_or_width.GetBaseDimension().GetValue(wnd, container); } else { pixelRect.Right = d_right_or_width.GetBaseDimension().GetValue(wnd, container) + container.Left; } if (d_bottom_or_height.GetDimensionType() == DimensionType.Height) { pixelRect.Height = d_bottom_or_height.GetBaseDimension().GetValue(wnd, container); } else { pixelRect.Bottom = d_bottom_or_height.GetBaseDimension().GetValue(wnd, container) + container.Top; } } return(pixelRect); }
// Implementation of the base class interface public override float GetValue(Window wnd) { Window widget; // if target widget name is empty, then use the input window. if (String.IsNullOrEmpty(d_widgetName)) { widget = wnd; } // name not empty, so find window with required name else { widget = wnd.GetChild(d_widgetName); } // get size of parent; required to extract pixel values var parentSize = widget.GetParentPixelSize(); switch (d_what) { case DimensionType.Width: return(widget.GetPixelSize().Width); case DimensionType.Height: return(widget.GetPixelSize().Height); case DimensionType.XOffset: System.GetSingleton().Logger .LogEvent("WigetDim.GetValue - Nonsensical DimensionType of XOffset specified! returning 0.0f"); return(0.0f); case DimensionType.YOffset: System.GetSingleton().Logger .LogEvent("WigetDim.GetValue - Nonsensical DimensionType of YOffset specified! returning 0.0f"); return(0.0f); case DimensionType.LeftEdge: case DimensionType.XPosition: return(CoordConverter.AsAbsolute(widget.GetPosition().d_x, parentSize.Width)); case DimensionType.TopEdge: case DimensionType.YPosition: return(CoordConverter.AsAbsolute(widget.GetPosition().d_y, parentSize.Height)); case DimensionType.RightEdge: return(CoordConverter.AsAbsolute(widget.GetArea().d_max.d_x, parentSize.Width)); case DimensionType.BottomEdge: return(CoordConverter.AsAbsolute(widget.GetArea().d_max.d_y, parentSize.Height)); default: throw new InvalidRequestException("unknown or unsupported DimensionType encountered."); } }
public override float GetValue(Window wnd, Rectf container) { switch (d_what) { case DimensionType.LeftEdge: case DimensionType.RightEdge: case DimensionType.XPosition: case DimensionType.XOffset: case DimensionType.Width: return(CoordConverter.AsAbsolute(d_value, container.Width)); case DimensionType.TopEdge: case DimensionType.BottomEdge: case DimensionType.YPosition: case DimensionType.YOffset: case DimensionType.Height: return(CoordConverter.AsAbsolute(d_value, container.Height)); default: throw new InvalidRequestException("unknown or unsupported DimensionType encountered."); } }
/// <summary> /// return the current constraint area of the mouse cursor. /// </summary> /// <returns> /// Rect object describing the active area that the mouse cursor is constrained to. /// </returns> public Rectf GetConstraintArea() { return(CoordConverter.AsAbsolute(d_constraints, System.GetSingleton().GetRenderer().GetDisplaySize())); }