internal override void SetChildBounds() { var location = Vector2.Zero; foreach (var child in UIComponents) { var extra = child.PaddingInternal.Size + child.Border.Size + child.Margin.Size; var defaultSize = DefaultChildSizes; if (defaultSize.X == 0) { defaultSize.X = AbsolutePaddingRect.Size.X - extra.X - ExtraChildMargin.Size.X; } if (defaultSize.Y == 0) { defaultSize.Y = AbsolutePaddingRect.Size.Y - extra.Y - ExtraChildMargin.Size.Y; } var size = child.Size; if (size.X == 0) { size.X = defaultSize.X; } if (size.Y == 0) { size.Y = defaultSize.Y; } size += extra; child.AbsoluteOuterRect = BoxHelper.FromSize(AbsolutePaddingRect.Min + location + ExtraChildMargin.Min, size); location.Y += size.Y + ExtraChildMargin.Size.Y; // TODO: Use X for other alignment } }
public override void UpdateFrame() { if (Parent == null || !(Parent is UIComponent)) { var size = Size; if (size.X == 0) { size.X = SceneContext.Current.ScreenScaledSize.X; } if (size.Y == 0) { size.Y = SceneContext.Current.ScreenScaledSize.Y; } var newAbsoluteOuterRect = BoxHelper.FromSize(Location, size); //if (newAbsoluteOuterRect == AbsoluteOuterRect) // TODO: Fix // return; AbsoluteOuterRect = newAbsoluteOuterRect; CalculateSizes(); } Material.UseTransparency = true; // TODO: Set only where required }
internal virtual void SetComponentSize() { // TODO: Shrink AbsoluteOuterRect if Dock is set. // ... var oldDrawRect = AbsoluteDrawRect; Vector2 relSize; Vector2 relPos; // Draw relSize = AbsoluteOuterRect.Size - Margin.Size; relPos = Margin.Min; RelatativeDrawRect = BoxHelper.FromSize(relPos, relSize); AbsoluteDrawRect = BoxHelper.FromSize(AbsoluteOuterRect.Min + relPos, relSize); // Client relSize = AbsoluteOuterRect.Size - Margin.Size - Border.Size; relPos = Margin.Min + Border.Min; RelatativeClientRect = BoxHelper.FromSize(relPos, relSize); AbsoluteClientRect = BoxHelper.FromSize(AbsoluteOuterRect.Min + relPos, relSize); // Padding relSize = AbsoluteOuterRect.Size - Margin.Size - Border.Size - PaddingInternal.Size; relPos = Margin.Min + Border.Min + PaddingInternal.Min; RelatativePaddingRect = BoxHelper.FromSize(relPos, relSize); AbsolutePaddingRect = BoxHelper.FromSize(AbsoluteOuterRect.Min + relPos, relSize); if (!AbsoluteDrawRect.Size.Approximately(oldDrawRect.Size)) { ResizeImage(DrawSize); } if (AbsoluteDrawRect != oldDrawRect) { SetRectangleScaled(AbsoluteDrawRect.ToRectangleF()); if (!AbsoluteDrawRect.Size.Approximately(oldDrawRect.Size)) { OnResized(); } } }
internal override void SetChildBounds() { foreach (var child in UIComponents) { if (child.Size == Vector2.Zero) { child.AbsoluteOuterRect = AbsolutePaddingRect; } else { var location = child.Location; var size = child.Size + child.PaddingInternal.Size + child.Border.Size + child.Margin.Size; //location.X += Border.Left; //location.Y += Border.Top; //size.X -= child.Border.Size.X; //size.Y -= child.Border.Size.Y; child.AbsoluteOuterRect = BoxHelper.FromSize(AbsolutePaddingRect.Min + location, size); } } }