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
- FloaterBaseParagraph.cs
- CompilationLock.cs
- ColumnPropertiesGroup.cs
- WindowsUpDown.cs
- CounterCreationData.cs
- WorkflowDesignerColors.cs
- ToolBarButtonClickEvent.cs
- RotationValidation.cs
- ReadOnlyNameValueCollection.cs
- IncrementalReadDecoders.cs
- SQLChars.cs
- TransactionOptions.cs
- AvTraceDetails.cs
- ClientType.cs
- SafeTimerHandle.cs
- DataObjectPastingEventArgs.cs
- WebPartConnectionCollection.cs
- CompositionCommandSet.cs
- ConfigXmlComment.cs
- HotSpotCollectionEditor.cs
- MissingSatelliteAssemblyException.cs
- RecognitionResult.cs
- HttpCacheVaryByContentEncodings.cs
- NativeMethods.cs
- Msmq3PoisonHandler.cs
- XPathItem.cs
- PropertyDescriptorCollection.cs
- DropDownButton.cs
- ConnectionManagementElementCollection.cs
- TextUtf8RawTextWriter.cs
- LessThan.cs
- CaseDesigner.xaml.cs
- FieldToken.cs
- RootBrowserWindowProxy.cs
- RouteUrlExpressionBuilder.cs
- DataGridViewColumnEventArgs.cs
- ImageBrush.cs
- SubclassTypeValidatorAttribute.cs
- BaseComponentEditor.cs
- XmlValidatingReaderImpl.cs
- ServerIdentity.cs
- HelloOperation11AsyncResult.cs
- DataGridColumnFloatingHeader.cs
- WorkflowCreationContext.cs
- XmlQueryType.cs
- WindowVisualStateTracker.cs
- MemberRelationshipService.cs
- WinFormsUtils.cs
- SafeHandle.cs
- FlowLayout.cs
- SHA256Managed.cs
- ObjectDataSource.cs
- ParallelActivityDesigner.cs
- TagPrefixAttribute.cs
- StandardToolWindows.cs
- XPathScanner.cs
- SchemaMapping.cs
- UInt32Storage.cs
- Border.cs
- ValuePattern.cs
- HttpApplication.cs
- OdbcRowUpdatingEvent.cs
- OleDbInfoMessageEvent.cs
- ListViewSelectEventArgs.cs
- Types.cs
- DBNull.cs
- PageBreakRecord.cs
- SerialPinChanges.cs
- BamlMapTable.cs
- DataGridToolTip.cs
- AutoGeneratedField.cs
- TextTreeInsertElementUndoUnit.cs
- FontFamilyConverter.cs
- Cursor.cs
- ImmutableDispatchRuntime.cs
- BitmapFrame.cs
- basevalidator.cs
- ParameterToken.cs
- XmlAtomicValue.cs
- WebPartConnectionsCancelEventArgs.cs
- MailAddressCollection.cs
- DataControlFieldCell.cs
- IsolationInterop.cs
- LinkButton.cs
- FindCompletedEventArgs.cs
- ActivitySurrogate.cs
- SiteOfOriginContainer.cs
- Crypto.cs
- WebPartConnectionsConfigureVerb.cs
- AttachmentService.cs
- SQLMoney.cs
- StringUtil.cs
- TitleStyle.cs
- TableStyle.cs
- HtmlInputHidden.cs
- ValidationHelpers.cs
- XmlWriter.cs
- ServiceHostingEnvironment.cs
- XhtmlBasicLiteralTextAdapter.cs
- GeometryCombineModeValidation.cs