Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / MS / Internal / PtsHost / ListParagraph.cs / 1305600 / ListParagraph.cs
//---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // // File: ListParagraph.cs // // Description: ListParagraph represents collection of list items. // // History: // 06/06/2003 : [....] - 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 : [....] - 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
- CopyOfAction.cs
- ResourceDescriptionAttribute.cs
- ValidationError.cs
- ReverseInheritProperty.cs
- WorkflowExecutor.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- RepeaterItem.cs
- Operand.cs
- BufferModeSettings.cs
- PagePropertiesChangingEventArgs.cs
- unsafenativemethodsother.cs
- Empty.cs
- CLSCompliantAttribute.cs
- Send.cs
- ChineseLunisolarCalendar.cs
- KnownColorTable.cs
- CopyOfAction.cs
- SqlDependencyListener.cs
- X509RawDataKeyIdentifierClause.cs
- ObjectNotFoundException.cs
- LinkConverter.cs
- Clock.cs
- FormViewRow.cs
- PathSegmentCollection.cs
- SystemIPv4InterfaceProperties.cs
- CodeMethodInvokeExpression.cs
- DataViewSetting.cs
- Paragraph.cs
- ServiceDiscoveryBehavior.cs
- EventLogPermission.cs
- SystemIPInterfaceProperties.cs
- RelationshipConstraintValidator.cs
- ExpressionBindings.cs
- DataServiceResponse.cs
- RelationshipManager.cs
- RestHandler.cs
- VectorKeyFrameCollection.cs
- VisualBrush.cs
- NativeMethods.cs
- QilBinary.cs
- StylusEventArgs.cs
- ParagraphVisual.cs
- recordstatescratchpad.cs
- DataViewSettingCollection.cs
- XmlDataSource.cs
- ComPersistableTypeElement.cs
- DisableDpiAwarenessAttribute.cs
- DataPagerFieldCollection.cs
- HyperLinkColumn.cs
- StateMachineExecutionState.cs
- elementinformation.cs
- MultiByteCodec.cs
- TreeViewHitTestInfo.cs
- DeviceSpecificChoiceCollection.cs
- LineProperties.cs
- HttpConfigurationContext.cs
- EntityContainerRelationshipSetEnd.cs
- ScrollProviderWrapper.cs
- ScrollContentPresenter.cs
- HtmlMeta.cs
- SqlDependencyUtils.cs
- CompiledXpathExpr.cs
- MetadataSerializer.cs
- ComPlusThreadInitializer.cs
- XmlIterators.cs
- UpDownEvent.cs
- activationcontext.cs
- References.cs
- SymLanguageVendor.cs
- StateItem.cs
- CompilerLocalReference.cs
- TypedColumnHandler.cs
- Header.cs
- MDIClient.cs
- XmlBoundElement.cs
- GroupItem.cs
- RemotingException.cs
- ObservableDictionary.cs
- Item.cs
- SqlUDTStorage.cs
- CodePageUtils.cs
- LifetimeServices.cs
- AppDomainShutdownMonitor.cs
- FontDriver.cs
- ListDictionaryInternal.cs
- SemaphoreSlim.cs
- RouteParser.cs
- TreeNodeBindingCollection.cs
- util.cs
- ExtendedPropertyDescriptor.cs
- DragDeltaEventArgs.cs
- FilteredReadOnlyMetadataCollection.cs
- ActivityDesignerAccessibleObject.cs
- ReflectionUtil.cs
- DependencyPropertyKind.cs
- ProfileManager.cs
- WinEventQueueItem.cs
- Int16Converter.cs
- VisualTreeUtils.cs
- MtomMessageEncodingElement.cs