Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Framework / MS / Internal / PtsHost / ListParagraph.cs / 1 / ListParagraph.cs
//----------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// File: ListParagraph.cs
//
// Description: ListParagraph represents collection of list items.
//
// History:
// 06/06/2003 : grzegorz - moving from Avalon branch.
//
//---------------------------------------------------------------------------
#pragma warning disable 1634, 1691 // avoid generating warnings about unknown
// message numbers and unknown pragmas for PRESharp contol
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Documents;
using MS.Internal.Text;
namespace MS.Internal.PtsHost
{
///
/// ListParagraph represents collection of list items.
///
internal sealed class ListParagraph : ContainerParagraph
{
///
/// Constructor.
///
///
/// Element associated with paragraph.
///
///
/// Content's structural cache
///
internal ListParagraph(DependencyObject element, StructuralCache structuralCache)
: base(element, structuralCache)
{
}
///
/// CreateParaclient
///
///
/// OUT: opaque to PTS paragraph client
///
internal override void CreateParaclient(
out IntPtr paraClientHandle)
{
#pragma warning disable 6518
// Disable PRESharp warning 6518. ListParaClient is an UnmamangedHandle, that adds itself
// to HandleMapper that holds a reference to it. PTS manages lifetime of this object, and
// calls DestroyParaclient to get rid of it. DestroyParaclient will call Dispose() on the object
// and remove it from HandleMapper.
ListParaClient paraClient = new ListParaClient(this);
paraClientHandle = paraClient.Handle;
#pragma warning restore 6518
}
///
/// Determine paragraph type at the current TextPointer and
/// create it. Only ListItem elements are considered. Any other
/// content is skipped.
///
///
/// TextPointer at which paragraph is to be created
///
///
/// True if empty paragraph is acceptable
///
///
/// BaseParagraph that was created
///
protected override BaseParagraph GetParagraph(ITextPointer textPointer, bool fEmptyOk)
{
Invariant.Assert(textPointer is TextPointer);
BaseParagraph paragraph = null;
while (paragraph == null)
{
TextPointerContext runType = textPointer.GetPointerContext(LogicalDirection.Forward);
if (runType == TextPointerContext.ElementStart)
{
TextElement element = ((TextPointer)textPointer).GetAdjacentElementFromOuterPosition(LogicalDirection.Forward);
if (element is ListItem)
{
//
paragraph = new ListItemParagraph(element, StructuralCache);
break;
}
else if (element is List)
{
//
paragraph = new ListParagraph(element, StructuralCache);
break;
}
// Skip all elements, which are not valid list item children
if (((TextPointer)textPointer).IsFrozen)
{
// Need to clone TextPointer before moving it.
textPointer = textPointer.CreatePointer();
}
textPointer.MoveToPosition(element.ElementEnd);
}
else if (runType == TextPointerContext.ElementEnd)
{
// End of list, if the same as Owner of associated element
// Skip content otherwise
if (Element == ((TextPointer)textPointer).Parent)
{
break;
}
if (((TextPointer)textPointer).IsFrozen)
{
// Need to clone TextPointer before moving it.
textPointer = textPointer.CreatePointer();
}
textPointer.MoveToNextContextPosition(LogicalDirection.Forward);
}
else
{
// Skip content
if (((TextPointer)textPointer).IsFrozen)
{
// Need to clone TextPointer before moving it.
textPointer = textPointer.CreatePointer();
}
textPointer.MoveToNextContextPosition(LogicalDirection.Forward);
}
}
if (paragraph != null)
{
StructuralCache.CurrentFormatContext.DependentMax = (TextPointer)textPointer;
}
return paragraph;
}
}
}
#pragma warning enable 1634, 1691
// 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: ListParagraph.cs
//
// Description: ListParagraph represents collection of list items.
//
// History:
// 06/06/2003 : grzegorz - moving from Avalon branch.
//
//---------------------------------------------------------------------------
#pragma warning disable 1634, 1691 // avoid generating warnings about unknown
// message numbers and unknown pragmas for PRESharp contol
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Documents;
using MS.Internal.Text;
namespace MS.Internal.PtsHost
{
///
/// ListParagraph represents collection of list items.
///
internal sealed class ListParagraph : ContainerParagraph
{
///
/// Constructor.
///
///
/// Element associated with paragraph.
///
///
/// Content's structural cache
///
internal ListParagraph(DependencyObject element, StructuralCache structuralCache)
: base(element, structuralCache)
{
}
///
/// CreateParaclient
///
///
/// OUT: opaque to PTS paragraph client
///
internal override void CreateParaclient(
out IntPtr paraClientHandle)
{
#pragma warning disable 6518
// Disable PRESharp warning 6518. ListParaClient is an UnmamangedHandle, that adds itself
// to HandleMapper that holds a reference to it. PTS manages lifetime of this object, and
// calls DestroyParaclient to get rid of it. DestroyParaclient will call Dispose() on the object
// and remove it from HandleMapper.
ListParaClient paraClient = new ListParaClient(this);
paraClientHandle = paraClient.Handle;
#pragma warning restore 6518
}
///
/// Determine paragraph type at the current TextPointer and
/// create it. Only ListItem elements are considered. Any other
/// content is skipped.
///
///
/// TextPointer at which paragraph is to be created
///
///
/// True if empty paragraph is acceptable
///
///
/// BaseParagraph that was created
///
protected override BaseParagraph GetParagraph(ITextPointer textPointer, bool fEmptyOk)
{
Invariant.Assert(textPointer is TextPointer);
BaseParagraph paragraph = null;
while (paragraph == null)
{
TextPointerContext runType = textPointer.GetPointerContext(LogicalDirection.Forward);
if (runType == TextPointerContext.ElementStart)
{
TextElement element = ((TextPointer)textPointer).GetAdjacentElementFromOuterPosition(LogicalDirection.Forward);
if (element is ListItem)
{
//
paragraph = new ListItemParagraph(element, StructuralCache);
break;
}
else if (element is List)
{
//
paragraph = new ListParagraph(element, StructuralCache);
break;
}
// Skip all elements, which are not valid list item children
if (((TextPointer)textPointer).IsFrozen)
{
// Need to clone TextPointer before moving it.
textPointer = textPointer.CreatePointer();
}
textPointer.MoveToPosition(element.ElementEnd);
}
else if (runType == TextPointerContext.ElementEnd)
{
// End of list, if the same as Owner of associated element
// Skip content otherwise
if (Element == ((TextPointer)textPointer).Parent)
{
break;
}
if (((TextPointer)textPointer).IsFrozen)
{
// Need to clone TextPointer before moving it.
textPointer = textPointer.CreatePointer();
}
textPointer.MoveToNextContextPosition(LogicalDirection.Forward);
}
else
{
// Skip content
if (((TextPointer)textPointer).IsFrozen)
{
// Need to clone TextPointer before moving it.
textPointer = textPointer.CreatePointer();
}
textPointer.MoveToNextContextPosition(LogicalDirection.Forward);
}
}
if (paragraph != null)
{
StructuralCache.CurrentFormatContext.DependentMax = (TextPointer)textPointer;
}
return paragraph;
}
}
}
#pragma warning enable 1634, 1691
// 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
- TextEditorMouse.cs
- EncoderBestFitFallback.cs
- AutoScrollExpandMessageFilter.cs
- EntityProviderServices.cs
- TriggerBase.cs
- WebPartActionVerb.cs
- TimeStampChecker.cs
- XPathChildIterator.cs
- Parameter.cs
- DateRangeEvent.cs
- MessageAction.cs
- Serializer.cs
- AttributeData.cs
- MenuItemStyleCollection.cs
- ArgumentOutOfRangeException.cs
- Effect.cs
- RequestCache.cs
- GeometryGroup.cs
- CodeTypeDeclarationCollection.cs
- DataSourceView.cs
- DetailsViewRow.cs
- ObjectDataSourceEventArgs.cs
- FocusManager.cs
- ConnectionsZone.cs
- DataBoundControlDesigner.cs
- MetaData.cs
- HttpCapabilitiesSectionHandler.cs
- CounterSample.cs
- PipelineModuleStepContainer.cs
- SqlRowUpdatedEvent.cs
- Image.cs
- ContainerUIElement3D.cs
- DrawingContext.cs
- TypeForwardedFromAttribute.cs
- TreeNodeStyleCollection.cs
- DbBuffer.cs
- OutputWindow.cs
- GorillaCodec.cs
- CompareInfo.cs
- SecureEnvironment.cs
- OracleString.cs
- PeerEndPoint.cs
- ServiceConfigurationTraceRecord.cs
- DataGridViewComboBoxCell.cs
- FindCriteriaCD1.cs
- UriScheme.cs
- Region.cs
- ToolBarPanel.cs
- SchemaTypeEmitter.cs
- HijriCalendar.cs
- FileUpload.cs
- EntityDataSourceContainerNameItem.cs
- MessageSecurityOverTcp.cs
- DbDataRecord.cs
- InternalResources.cs
- Attribute.cs
- DataServiceRequestException.cs
- TrackingDataItemValue.cs
- FixedSOMSemanticBox.cs
- NullRuntimeConfig.cs
- WorkflowControlEndpoint.cs
- Message.cs
- FileUpload.cs
- TemplateKey.cs
- TransformDescriptor.cs
- ListDictionary.cs
- cache.cs
- XmlIlVisitor.cs
- WebPartEventArgs.cs
- PointLight.cs
- ReadOnlyCollectionBase.cs
- AsyncPostBackTrigger.cs
- SqlStream.cs
- GeneralTransform.cs
- EncodingInfo.cs
- MulticastNotSupportedException.cs
- ChannelSinkStacks.cs
- WeakEventManager.cs
- MSHTMLHost.cs
- SemaphoreSecurity.cs
- BamlVersionHeader.cs
- SoapFault.cs
- EventLevel.cs
- unsafenativemethodsother.cs
- LicenseProviderAttribute.cs
- ScopelessEnumAttribute.cs
- QueryResponse.cs
- Or.cs
- COAUTHIDENTITY.cs
- WizardPanel.cs
- ContentOperations.cs
- AddInControllerImpl.cs
- ConnectionManagementSection.cs
- MarkupExtensionReturnTypeAttribute.cs
- ValidationEventArgs.cs
- DynamicResourceExtensionConverter.cs
- PackageDigitalSignature.cs
- FilteredReadOnlyMetadataCollection.cs
- ExecutedRoutedEventArgs.cs
- DataPagerFieldCommandEventArgs.cs