Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ArglessEventHandlerProxy.cs
- StateRuntime.cs
- Misc.cs
- TileBrush.cs
- XmlSerializer.cs
- Wildcard.cs
- Interlocked.cs
- DataViewSettingCollection.cs
- BitmapEffectInputData.cs
- contentDescriptor.cs
- UInt16Converter.cs
- BitmapEffectGroup.cs
- Rect3D.cs
- PropagatorResult.cs
- Converter.cs
- Schema.cs
- GradientStopCollection.cs
- AnnotationComponentManager.cs
- RemoteHelper.cs
- RtfFormatStack.cs
- WpfPayload.cs
- DocumentOrderQuery.cs
- CodeDirectionExpression.cs
- ProfilePropertySettingsCollection.cs
- FileDialog.cs
- SequenceDesigner.cs
- ImportCatalogPart.cs
- TraceSwitch.cs
- FunctionImportMapping.ReturnTypeRenameMapping.cs
- SafeSecurityHandles.cs
- Reference.cs
- SkinBuilder.cs
- TextSearch.cs
- FixedPageAutomationPeer.cs
- StrokeNodeData.cs
- PrefixHandle.cs
- ToolTipAutomationPeer.cs
- SymmetricAlgorithm.cs
- FrameworkElement.cs
- TemplateBamlTreeBuilder.cs
- DbParameterHelper.cs
- RadioButtonBaseAdapter.cs
- elementinformation.cs
- ToolBarDesigner.cs
- BadImageFormatException.cs
- PeerDefaultCustomResolverClient.cs
- FontFamily.cs
- StringConverter.cs
- RequestDescription.cs
- X509Certificate2Collection.cs
- GetImportedCardRequest.cs
- SignedXml.cs
- GridViewRowEventArgs.cs
- PolyQuadraticBezierSegment.cs
- WinFormsComponentEditor.cs
- ScrollPatternIdentifiers.cs
- GridItemPattern.cs
- MimeReturn.cs
- GeneralTransform.cs
- AstTree.cs
- UriTemplateVariableQueryValue.cs
- FormsAuthentication.cs
- ReversePositionQuery.cs
- SocketInformation.cs
- CollectionViewGroupInternal.cs
- XamlDebuggerXmlReader.cs
- GacUtil.cs
- RelatedEnd.cs
- SegmentInfo.cs
- UnsafeNativeMethods.cs
- EDesignUtil.cs
- WindowsListViewGroupSubsetLink.cs
- XmlEncodedRawTextWriter.cs
- ValidationError.cs
- LinkTarget.cs
- CustomPopupPlacement.cs
- SqlCacheDependencyDatabase.cs
- MemoryPressure.cs
- HtmlValidatorAdapter.cs
- HorizontalAlignConverter.cs
- ResourceWriter.cs
- ApplicationFileParser.cs
- MdiWindowListStrip.cs
- SymbolEqualComparer.cs
- Label.cs
- DataIdProcessor.cs
- EditorZone.cs
- VSWCFServiceContractGenerator.cs
- ModuleBuilder.cs
- ToolStripItemBehavior.cs
- SrgsSubset.cs
- DetailsViewCommandEventArgs.cs
- MetafileHeader.cs
- CodePageEncoding.cs
- TextEditorLists.cs
- LinkDescriptor.cs
- XPathNodeHelper.cs
- SafeNativeMethods.cs
- DictationGrammar.cs
- SemanticBasicElement.cs