Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / 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 : [....] - 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
- ConnectionManager.cs
- _NegoStream.cs
- CreateUserWizardStep.cs
- PolyBezierSegment.cs
- LinkClickEvent.cs
- IPPacketInformation.cs
- ReadOnlyAttribute.cs
- ObjectConverter.cs
- XmlSchemaObjectCollection.cs
- ProcessModelInfo.cs
- TextServicesDisplayAttribute.cs
- SerializationObjectManager.cs
- AnnotationResourceChangedEventArgs.cs
- ConnectorDragDropGlyph.cs
- FixedLineResult.cs
- Utils.cs
- Queue.cs
- XmlLanguageConverter.cs
- SchemaMerger.cs
- XamlSerializer.cs
- Triangle.cs
- HttpModuleAction.cs
- EventBindingService.cs
- TextDecorationUnitValidation.cs
- OletxResourceManager.cs
- EntityDataSourceQueryBuilder.cs
- ProxyFragment.cs
- ServerIdentity.cs
- CodeTypeReferenceSerializer.cs
- NotSupportedException.cs
- UTF8Encoding.cs
- CodeDelegateCreateExpression.cs
- XappLauncher.cs
- TextOptionsInternal.cs
- RichTextBox.cs
- TemplateComponentConnector.cs
- LineBreakRecord.cs
- ToolBar.cs
- WS2007HttpBindingCollectionElement.cs
- PathGeometry.cs
- ErrorEventArgs.cs
- WorkflowApplicationAbortedEventArgs.cs
- SessionStateModule.cs
- OutgoingWebResponseContext.cs
- WebControlsSection.cs
- XmlSchemaElement.cs
- SourceSwitch.cs
- ClientSponsor.cs
- Stroke.cs
- QuaternionRotation3D.cs
- MasterPage.cs
- OSFeature.cs
- CacheModeConverter.cs
- FormViewPagerRow.cs
- WindowsEditBoxRange.cs
- ThaiBuddhistCalendar.cs
- DataBinder.cs
- EntityStoreSchemaGenerator.cs
- ZoneButton.cs
- RequestBringIntoViewEventArgs.cs
- PersonalizationDictionary.cs
- ExternalFile.cs
- MetadataCacheItem.cs
- AstNode.cs
- XmlUtf8RawTextWriter.cs
- IPAddressCollection.cs
- OperationContext.cs
- SelectedDatesCollection.cs
- DesignerForm.cs
- SafeNativeMethods.cs
- FileUtil.cs
- DATA_BLOB.cs
- BaseParser.cs
- TypedDataSetSchemaImporterExtensionFx35.cs
- QueryOperatorEnumerator.cs
- RequiredAttributeAttribute.cs
- SaveFileDialog.cs
- InvalidAsynchronousStateException.cs
- MsmqHostedTransportManager.cs
- HttpClientCertificate.cs
- DerivedKeySecurityToken.cs
- DbMetaDataFactory.cs
- Tuple.cs
- QueryStringHandler.cs
- ItemAutomationPeer.cs
- SystemIPInterfaceStatistics.cs
- CuspData.cs
- DecodeHelper.cs
- URI.cs
- WebServiceClientProxyGenerator.cs
- HandlerBase.cs
- Exceptions.cs
- TextRenderer.cs
- CuspData.cs
- ExpandCollapsePattern.cs
- DesignerDataSchemaClass.cs
- DefaultDialogButtons.cs
- IdentitySection.cs
- OptionUsage.cs
- SolidColorBrush.cs