Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / MS / Internal / PtsHost / EmbeddedObject.cs / 1 / 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 : grzegorz - 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 : grzegorz - 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
- TemplateBuilder.cs
- UIElement3D.cs
- ColumnResult.cs
- DrawingContextDrawingContextWalker.cs
- RangeExpression.cs
- FlagPanel.cs
- XmlTypeMapping.cs
- CountdownEvent.cs
- NativeMethods.cs
- HttpFileCollectionWrapper.cs
- SessionEndingEventArgs.cs
- AssemblyBuilder.cs
- XPathBinder.cs
- FrameworkTemplate.cs
- TypedColumnHandler.cs
- TypeToArgumentTypeConverter.cs
- PatternMatcher.cs
- XmlSortKeyAccumulator.cs
- TreeViewImageGenerator.cs
- ToolBarButton.cs
- AttachedPropertyBrowsableAttribute.cs
- DataListItem.cs
- CodeNamespaceCollection.cs
- AppLevelCompilationSectionCache.cs
- designeractionlistschangedeventargs.cs
- UpdateException.cs
- HostedHttpContext.cs
- Size3DValueSerializer.cs
- BinaryCommonClasses.cs
- NoResizeHandleGlyph.cs
- PrinterResolution.cs
- DockingAttribute.cs
- CustomSignedXml.cs
- PersonalizationState.cs
- RecordsAffectedEventArgs.cs
- ReflectionPermission.cs
- WebPartAuthorizationEventArgs.cs
- WaitForChangedResult.cs
- Icon.cs
- PresentationTraceSources.cs
- ToggleProviderWrapper.cs
- EdmFunctionAttribute.cs
- SourceFileInfo.cs
- SQLMoneyStorage.cs
- ColumnCollection.cs
- GroupStyle.cs
- LayoutDump.cs
- WindowsListBox.cs
- BinaryMessageEncodingBindingElement.cs
- FrameworkPropertyMetadata.cs
- SqlCharStream.cs
- _FixedSizeReader.cs
- UrlAuthorizationModule.cs
- SecureStringHasher.cs
- NonParentingControl.cs
- EntityDataSourceContextCreatingEventArgs.cs
- PersonalizationState.cs
- URLString.cs
- AllMembershipCondition.cs
- DuplicateWaitObjectException.cs
- SQLMembershipProvider.cs
- XamlSerializerUtil.cs
- UIntPtr.cs
- TraceXPathNavigator.cs
- SpeechAudioFormatInfo.cs
- FileSecurity.cs
- Dispatcher.cs
- HtmlEmptyTagControlBuilder.cs
- smtppermission.cs
- RectKeyFrameCollection.cs
- DispatcherFrame.cs
- MessageSmuggler.cs
- Profiler.cs
- UidPropertyAttribute.cs
- RepeatEnumerable.cs
- DataGridViewCellCancelEventArgs.cs
- CompilationPass2Task.cs
- RoleManagerModule.cs
- ToolboxItemCollection.cs
- IPPacketInformation.cs
- ColumnWidthChangingEvent.cs
- PropertyPathWorker.cs
- LineServices.cs
- Effect.cs
- SeverityFilter.cs
- SmiEventSink.cs
- XmlNamespaceMapping.cs
- PageVisual.cs
- BaseCollection.cs
- FrameworkPropertyMetadata.cs
- DataServiceHostFactory.cs
- BitmapSizeOptions.cs
- XmlDownloadManager.cs
- EmptyEnumerable.cs
- SingleAnimationBase.cs
- InvalidOperationException.cs
- PropertyValueUIItem.cs
- SoapSchemaImporter.cs
- CacheRequest.cs
- CompiledRegexRunnerFactory.cs