Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / MS / Internal / PtsHost / EmbeddedObject.cs / 1305600 / EmbeddedObject.cs
// // Copyright (C) Microsoft Corporation. All rights reserved. // // File: EmbeddedObject.cs // // Description: Definition for embedded object inside a text paragraph. // // History: // 05/05/2003 : [....] - moving from Avalon branch. // //---------------------------------------------------------------------------- using System; using System.Windows; using MS.Internal.Documents; using MS.Internal.PtsHost.UnsafeNativeMethods; namespace MS.Internal.PtsHost { ////// EmbeddedObject class stores information about object embedded within /// a text paragraph. /// internal abstract class EmbeddedObject { ////// Constructor. /// /// /// Embedded object's character position. /// protected EmbeddedObject(int dcp) { Dcp = dcp; } ////// Dispose object. /// internal virtual void Dispose() { } ////// Update object using date from another embedded object of the same /// type. /// /// /// Source of updated data. /// internal abstract void Update(EmbeddedObject newObject); ////// Embedded object's owner. /// internal abstract DependencyObject Element { get; } ////// Position within a text paragraph (number of characters from the /// beginning of text paragraph). /// internal int Dcp; } ////// Stores information about attached object embedded within a text paragraph. /// internal class AttachedObject : EmbeddedObject { ////// Constructor. /// /// /// Attached object's character position. /// /// /// Paragraph associated with attached object. /// internal AttachedObject(int dcp, BaseParagraph para) : base(dcp) { Para = para; } ////// Dispose object. /// internal override void Dispose() { Para.Dispose(); Para = null; base.Dispose(); } ////// Update object using date from another attached object of the same /// type. /// /// /// Source of updated data. /// internal override void Update(EmbeddedObject newObject) { AttachedObject newAttachedObject = newObject as AttachedObject; ErrorHandler.Assert(newAttachedObject != null, ErrorHandler.EmbeddedObjectTypeMismatch); ErrorHandler.Assert(newAttachedObject.Element.Equals(Element), ErrorHandler.EmbeddedObjectOwnerMismatch); Dcp = newAttachedObject.Dcp; Para.SetUpdateInfo(PTS.FSKCHANGE.fskchInside, false); } ////// Attached object's owner. /// internal override DependencyObject Element { get { return Para.Element; } } ////// Paragraph associated with attached object. /// internal BaseParagraph Para; } ////// Stores information about inline object embedded within a text line. /// internal sealed class InlineObject : EmbeddedObject { ////// Constructor. /// /// /// Embedded object's character position. /// /// /// UIElementIsland associated with embedded object. /// /// /// TextParagraph associated with embedded object. /// internal InlineObject(int dcp, UIElementIsland uiElementIsland, TextParagraph para) : base(dcp) { _para = para; _uiElementIsland = uiElementIsland; _uiElementIsland.DesiredSizeChanged += new DesiredSizeChangedEventHandler(_para.OnUIElementDesiredSizeChanged); } ////// Dispose object. /// internal override void Dispose() { if (_uiElementIsland != null) { _uiElementIsland.DesiredSizeChanged -= new DesiredSizeChangedEventHandler(_para.OnUIElementDesiredSizeChanged); } base.Dispose(); } ////// Update object using date from another embedded object of the same /// type. /// /// /// Source of updated data. /// internal override void Update(EmbeddedObject newObject) { // These should definitely be the same InlineObject newInline = newObject as InlineObject; ErrorHandler.Assert(newInline != null, ErrorHandler.EmbeddedObjectTypeMismatch); ErrorHandler.Assert(newInline._uiElementIsland == _uiElementIsland, ErrorHandler.EmbeddedObjectOwnerMismatch); // We've ensured ownership is still with the old InlineObject, so we now null this out to prevent dispose from disconnecting. newInline._uiElementIsland = null; } ////// Embedded object's owner. /// internal override DependencyObject Element { get { return _uiElementIsland.Root; } } private UIElementIsland _uiElementIsland; private TextParagraph _para; } ////// Stores information about figure embedded within a text paragraph. /// internal sealed class FigureObject : AttachedObject { ////// Constructor. /// /// /// Figure object's character position. /// /// /// Paragraph associated with figure object. /// internal FigureObject(int dcp, FigureParagraph para) : base(dcp, para) { } } ////// Stores information about floater embedded within a text paragraph. /// internal sealed class FloaterObject : AttachedObject { ////// Constructor. /// /// /// Floater object's character position. /// /// /// Paragraph associated with floater object. /// internal FloaterObject(int dcp, FloaterParagraph para) : base(dcp, para) { } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. // // Copyright (C) Microsoft Corporation. All rights reserved. // // File: EmbeddedObject.cs // // Description: Definition for embedded object inside a text paragraph. // // History: // 05/05/2003 : [....] - moving from Avalon branch. // //---------------------------------------------------------------------------- using System; using System.Windows; using MS.Internal.Documents; using MS.Internal.PtsHost.UnsafeNativeMethods; namespace MS.Internal.PtsHost { ////// EmbeddedObject class stores information about object embedded within /// a text paragraph. /// internal abstract class EmbeddedObject { ////// Constructor. /// /// /// Embedded object's character position. /// protected EmbeddedObject(int dcp) { Dcp = dcp; } ////// Dispose object. /// internal virtual void Dispose() { } ////// Update object using date from another embedded object of the same /// type. /// /// /// Source of updated data. /// internal abstract void Update(EmbeddedObject newObject); ////// Embedded object's owner. /// internal abstract DependencyObject Element { get; } ////// Position within a text paragraph (number of characters from the /// beginning of text paragraph). /// internal int Dcp; } ////// Stores information about attached object embedded within a text paragraph. /// internal class AttachedObject : EmbeddedObject { ////// Constructor. /// /// /// Attached object's character position. /// /// /// Paragraph associated with attached object. /// internal AttachedObject(int dcp, BaseParagraph para) : base(dcp) { Para = para; } ////// Dispose object. /// internal override void Dispose() { Para.Dispose(); Para = null; base.Dispose(); } ////// Update object using date from another attached object of the same /// type. /// /// /// Source of updated data. /// internal override void Update(EmbeddedObject newObject) { AttachedObject newAttachedObject = newObject as AttachedObject; ErrorHandler.Assert(newAttachedObject != null, ErrorHandler.EmbeddedObjectTypeMismatch); ErrorHandler.Assert(newAttachedObject.Element.Equals(Element), ErrorHandler.EmbeddedObjectOwnerMismatch); Dcp = newAttachedObject.Dcp; Para.SetUpdateInfo(PTS.FSKCHANGE.fskchInside, false); } ////// Attached object's owner. /// internal override DependencyObject Element { get { return Para.Element; } } ////// Paragraph associated with attached object. /// internal BaseParagraph Para; } ////// Stores information about inline object embedded within a text line. /// internal sealed class InlineObject : EmbeddedObject { ////// Constructor. /// /// /// Embedded object's character position. /// /// /// UIElementIsland associated with embedded object. /// /// /// TextParagraph associated with embedded object. /// internal InlineObject(int dcp, UIElementIsland uiElementIsland, TextParagraph para) : base(dcp) { _para = para; _uiElementIsland = uiElementIsland; _uiElementIsland.DesiredSizeChanged += new DesiredSizeChangedEventHandler(_para.OnUIElementDesiredSizeChanged); } ////// Dispose object. /// internal override void Dispose() { if (_uiElementIsland != null) { _uiElementIsland.DesiredSizeChanged -= new DesiredSizeChangedEventHandler(_para.OnUIElementDesiredSizeChanged); } base.Dispose(); } ////// Update object using date from another embedded object of the same /// type. /// /// /// Source of updated data. /// internal override void Update(EmbeddedObject newObject) { // These should definitely be the same InlineObject newInline = newObject as InlineObject; ErrorHandler.Assert(newInline != null, ErrorHandler.EmbeddedObjectTypeMismatch); ErrorHandler.Assert(newInline._uiElementIsland == _uiElementIsland, ErrorHandler.EmbeddedObjectOwnerMismatch); // We've ensured ownership is still with the old InlineObject, so we now null this out to prevent dispose from disconnecting. newInline._uiElementIsland = null; } ////// Embedded object's owner. /// internal override DependencyObject Element { get { return _uiElementIsland.Root; } } private UIElementIsland _uiElementIsland; private TextParagraph _para; } ////// Stores information about figure embedded within a text paragraph. /// internal sealed class FigureObject : AttachedObject { ////// Constructor. /// /// /// Figure object's character position. /// /// /// Paragraph associated with figure object. /// internal FigureObject(int dcp, FigureParagraph para) : base(dcp, para) { } } ////// Stores information about floater embedded within a text paragraph. /// internal sealed class FloaterObject : AttachedObject { ////// Constructor. /// /// /// Floater object's character position. /// /// /// Paragraph associated with floater object. /// internal FloaterObject(int dcp, FloaterParagraph para) : base(dcp, para) { } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- StandardCommands.cs
- HtmlInputSubmit.cs
- XmlHierarchicalDataSourceView.cs
- TimeManager.cs
- OperationParameterInfo.cs
- ToolStripSplitStackLayout.cs
- SQLString.cs
- PtsCache.cs
- BaseTemplatedMobileComponentEditor.cs
- ComContractElementCollection.cs
- XsltQilFactory.cs
- JoinQueryOperator.cs
- HttpRuntimeSection.cs
- XmlSchemaObject.cs
- XmlDataSource.cs
- ExitEventArgs.cs
- WriteTimeStream.cs
- ToolStripControlHost.cs
- InstanceDescriptor.cs
- ThemeDirectoryCompiler.cs
- Visual3DCollection.cs
- ConfigurationStrings.cs
- StaticContext.cs
- XmlNodeChangedEventArgs.cs
- MetadataArtifactLoader.cs
- UserInitiatedRoutedEventPermissionAttribute.cs
- ActivityDesignerAccessibleObject.cs
- PropertyStore.cs
- SiteOfOriginContainer.cs
- SmtpDateTime.cs
- VirtualPathData.cs
- CapabilitiesRule.cs
- Maps.cs
- DataGridViewTopLeftHeaderCell.cs
- CompareValidator.cs
- TemplateBindingExpressionConverter.cs
- SoapExtension.cs
- Operand.cs
- ReferenceConverter.cs
- EnumerableRowCollection.cs
- OracleConnectionStringBuilder.cs
- RoutedEventConverter.cs
- HealthMonitoringSectionHelper.cs
- ContractValidationHelper.cs
- SerializationBinder.cs
- SystemUnicastIPAddressInformation.cs
- XmlNotation.cs
- StrongName.cs
- ControlType.cs
- DebugInfoGenerator.cs
- InstanceHandleConflictException.cs
- Resources.Designer.cs
- ProcessHostConfigUtils.cs
- SmiGettersStream.cs
- CqlParserHelpers.cs
- OleAutBinder.cs
- CodeDirectiveCollection.cs
- IgnoreDeviceFilterElement.cs
- Selection.cs
- IDataContractSurrogate.cs
- ChannelManagerHelpers.cs
- UshortList2.cs
- TemplateManager.cs
- ObjectDataSourceDisposingEventArgs.cs
- BulletedList.cs
- TableCell.cs
- DbDataSourceEnumerator.cs
- Message.cs
- autovalidator.cs
- IgnoreDeviceFilterElementCollection.cs
- DependentList.cs
- NameSpaceEvent.cs
- BitmapEffect.cs
- DataShape.cs
- MsmqIntegrationInputChannel.cs
- VisualStyleElement.cs
- TreeNodeMouseHoverEvent.cs
- Scene3D.cs
- LocalizationComments.cs
- OracleBoolean.cs
- ACL.cs
- mediaclock.cs
- UnionCodeGroup.cs
- oledbmetadatacolumnnames.cs
- HandledEventArgs.cs
- FieldDescriptor.cs
- PolyLineSegment.cs
- SystemGatewayIPAddressInformation.cs
- exports.cs
- PKCS1MaskGenerationMethod.cs
- XmlNamespaceMapping.cs
- MenuAdapter.cs
- DataSysAttribute.cs
- PointLightBase.cs
- StaticExtension.cs
- GridLengthConverter.cs
- ColumnHeaderCollectionEditor.cs
- ControlBuilder.cs
- UserInitiatedRoutedEventPermissionAttribute.cs
- LayoutInformation.cs