| File: System\Windows\Forms\Layout\LayoutEngine.cs | Web Access |
| Project: src\winforms\src\System.Windows.Forms\System.Windows.Forms.csproj (System.Windows.Forms) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Drawing; namespace System.Windows.Forms.Layout; public abstract class LayoutEngine { internal static IArrangedElement CastToArrangedElement(object obj) { if (obj is not IArrangedElement element) { throw new NotSupportedException(string.Format(SR.LayoutEngineUnsupportedType, obj.GetType())); } return element; } internal virtual Size GetPreferredSize(IArrangedElement container, Size proposedConstraints) { return Size.Empty; } public virtual void InitLayout(object child, BoundsSpecified specified) { ArgumentNullException.ThrowIfNull(child); InitLayoutCore(CastToArrangedElement(child), specified); } private protected virtual void InitLayoutCore(IArrangedElement element, BoundsSpecified bounds) { } internal virtual void ProcessSuspendedLayoutEventArgs(IArrangedElement container, LayoutEventArgs args) { } public virtual bool Layout(object container, LayoutEventArgs layoutEventArgs) { ArgumentNullException.ThrowIfNull(container); return LayoutCore(CastToArrangedElement(container), layoutEventArgs); } private protected virtual bool LayoutCore(IArrangedElement container, LayoutEventArgs layoutEventArgs) { return false; } }