Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / Layout / LayoutEngine.cs / 1305376 / LayoutEngine.cs
//#define LAYOUT_PERFWATCH
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Windows.Forms.Layout {
using System;
using System.Collections;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Drawing;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Security.Permissions;
///
public abstract class LayoutEngine {
internal IArrangedElement CastToArrangedElement(object obj) {
IArrangedElement element = obj as IArrangedElement;
if(obj == null) {
throw new NotSupportedException(SR.GetString(SR.LayoutEngineUnsupportedType, obj.GetType()));
}
return element;
}
internal virtual Size GetPreferredSize(IArrangedElement container, Size proposedConstraints) { return Size.Empty; }
///
[System.Runtime.TargetedPatchingOptOutAttribute("Performance critical to inline across NGen image boundaries")]
public virtual void InitLayout(object child, BoundsSpecified specified) {
InitLayoutCore(CastToArrangedElement(child), specified);
}
internal virtual void InitLayoutCore(IArrangedElement element, BoundsSpecified bounds) {}
internal virtual void ProcessSuspendedLayoutEventArgs(IArrangedElement container, LayoutEventArgs args) {}
#if LAYOUT_PERFWATCH
private static int LayoutWatch = 100;
#endif
///
[SuppressMessage("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers")]
public virtual bool Layout(object container, LayoutEventArgs layoutEventArgs) {
#if LAYOUT_PERFWATCH
Debug.WriteLine(container.GetType().Name + "::Layout("
+ (layoutEventArgs.AffectedControl != null ? layoutEventArgs.AffectedControl.Name : "null")
+ ", " + layoutEventArgs.AffectedProperty + ")");
Debug.Indent();
Stopwatch sw = new Stopwatch();
sw.Start();
#endif
bool parentNeedsLayout = LayoutCore(CastToArrangedElement(container), layoutEventArgs);
#if LAYOUT_PERFWATCH
sw.Stop();
if (sw.ElapsedMilliseconds > LayoutWatch && Debugger.IsAttached) {
Debugger.Break();
}
Debug.Unindent();
Debug.WriteLine(container.GetType().Name + "::Layout elapsed " + sw.ElapsedMilliseconds.ToString() + " returned: " + parentNeedsLayout);
#endif
return parentNeedsLayout;
}
internal virtual bool LayoutCore(IArrangedElement container, LayoutEventArgs layoutEventArgs) { return false; }
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RadioButtonRenderer.cs
- InputProcessorProfilesLoader.cs
- ProjectionPruner.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- BitConverter.cs
- XmlEncodedRawTextWriter.cs
- PaperSize.cs
- BridgeDataReader.cs
- Constraint.cs
- ConfigXmlText.cs
- MultipartContentParser.cs
- FigureParaClient.cs
- GroupDescription.cs
- HiddenFieldPageStatePersister.cs
- ToolStripPanelCell.cs
- SourceItem.cs
- FunctionQuery.cs
- XmlTextWriter.cs
- SiteMap.cs
- Stylesheet.cs
- GlyphTypeface.cs
- TextBoxDesigner.cs
- FloaterBaseParagraph.cs
- RTLAwareMessageBox.cs
- CodeCommentStatement.cs
- TypeListConverter.cs
- RegexWriter.cs
- OSFeature.cs
- EntityDataSourceUtil.cs
- TableLayoutPanelCellPosition.cs
- Point3D.cs
- ReferenceTypeElement.cs
- QueryOperationResponseOfT.cs
- Hashtable.cs
- TextLineBreak.cs
- ReadOnlyMetadataCollection.cs
- SamlAuthorizationDecisionStatement.cs
- FileNotFoundException.cs
- ImageListImageEditor.cs
- ProfessionalColors.cs
- InstanceDataCollection.cs
- ProxyFragment.cs
- PerfCounterSection.cs
- EtwTrace.cs
- Sql8ConformanceChecker.cs
- StateFinalizationDesigner.cs
- DesignerTextWriter.cs
- NumericExpr.cs
- BindableTemplateBuilder.cs
- ListContractAdapter.cs
- SqlParameterCollection.cs
- ExtentCqlBlock.cs
- FillRuleValidation.cs
- webbrowsersite.cs
- TypeContext.cs
- WindowShowOrOpenTracker.cs
- sortedlist.cs
- ResourceAttributes.cs
- Point.cs
- DrawingGroup.cs
- UrlUtility.cs
- DoubleStorage.cs
- WebConvert.cs
- DataTableReaderListener.cs
- RijndaelManagedTransform.cs
- BlurBitmapEffect.cs
- DataTemplateSelector.cs
- ValueType.cs
- MouseEventArgs.cs
- EntityType.cs
- MediaSystem.cs
- ExclusiveTcpListener.cs
- SqlClientMetaDataCollectionNames.cs
- HatchBrush.cs
- CalendarKeyboardHelper.cs
- Quad.cs
- _AuthenticationState.cs
- DecoderFallbackWithFailureFlag.cs
- DriveInfo.cs
- PointAnimationBase.cs
- ItemCollectionEditor.cs
- XmlElementAttributes.cs
- DataServiceProcessingPipelineEventArgs.cs
- InvalidFilterCriteriaException.cs
- KerberosTicketHashIdentifierClause.cs
- Module.cs
- UriScheme.cs
- RadioButton.cs
- WebConfigurationHostFileChange.cs
- Semaphore.cs
- WaveHeader.cs
- URLAttribute.cs
- SamlSecurityTokenAuthenticator.cs
- CancellationTokenRegistration.cs
- PageCatalogPartDesigner.cs
- Animatable.cs
- DataKeyArray.cs
- SequentialUshortCollection.cs
- XmlBufferReader.cs
- DataRow.cs