Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Framework / MS / Internal / PtsHost / ListParaClient.cs / 1 / ListParaClient.cs
//---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // // File: ListParaClient.cs // // Description: ListParaClient is responsible for handling display // related data of list paragraphs. // // History: // 02/07/2004 : ghermann - created. // //--------------------------------------------------------------------------- using System; using System.Diagnostics; using System.Security; using System.Windows; using System.Windows.Media; using System.Windows.Documents; using MS.Internal.Documents; using MS.Internal.Text; using MS.Internal.PtsHost.UnsafeNativeMethods; namespace MS.Internal.PtsHost { ////// ListParaClient is responsible for handling display related data /// of break paragraphs. /// internal sealed class ListParaClient : ContainerParaClient { ////// Constructor. /// /// /// ListParagraph associated with this para client. /// internal ListParaClient(ListParagraph paragraph) : base(paragraph) { } ////// Validate visual node associated with paragraph. /// /// /// Inherited update info /// ////// Critical - as this calls Critical function PTS.FsQuerySubtrackDetails /// and some PtsHelper functions. /// Safe - operation is safe and method doesn't disclose any information got through critical calls /// [SecurityCritical, SecurityTreatAsSafe] internal override void ValidateVisual(PTS.FSKUPDATE fskupdInherited) { // Query paragraph details PTS.FSSUBTRACKDETAILS subtrackDetails; PTS.Validate(PTS.FsQuerySubtrackDetails(PtsContext.Context, _paraHandle.Value, out subtrackDetails)); // Draw border and background info. MbpInfo mbp = MbpInfo.FromElement(Paragraph.Element); if (ThisFlowDirection != PageFlowDirection) { mbp.MirrorBP(); } uint fswdir = PTS.FlowDirectionToFswdir((FlowDirection)Paragraph.Element.GetValue(FrameworkElement.FlowDirectionProperty)); Brush backgroundBrush = (Brush)Paragraph.Element.GetValue(TextElement.BackgroundProperty); TextProperties textProperties = new TextProperties(Paragraph.Element, StaticTextPointer.Null, false /* inline objects */, false /* get background */); // There might be possibility to get empty sub-track, skip the sub-track in such case. if (subtrackDetails.cParas != 0) { PTS.FSPARADESCRIPTION [] arrayParaDesc; PtsHelper.ParaListFromSubtrack(PtsContext, _paraHandle.Value, ref subtrackDetails, out arrayParaDesc); using(DrawingContext ctx = _visual.RenderOpen()) { _visual.DrawBackgroundAndBorderIntoContext(ctx, backgroundBrush, mbp.BorderBrush, mbp.Border, _rect.FromTextDpi(), IsFirstChunk, IsLastChunk); // Get list of paragraphs ListMarkerLine listMarkerLine = new ListMarkerLine(Paragraph.StructuralCache.TextFormatterHost, this); int indexFirstParaInSubtrack = 0; for(int index = 0; index < subtrackDetails.cParas; index++) { List list = Paragraph.Element as List; BaseParaClient listItemParaClient = PtsContext.HandleToObject(arrayParaDesc[index].pfsparaclient) as BaseParaClient; PTS.ValidateHandle(listItemParaClient); if(index == 0) { indexFirstParaInSubtrack = list.GetListItemIndex(listItemParaClient.Paragraph.Element as ListItem); } if(listItemParaClient.IsFirstChunk) { int dvBaseline = listItemParaClient.GetFirstTextLineBaseline(); if(PageFlowDirection != ThisFlowDirection) { ctx.PushTransform(new MatrixTransform(-1.0, 0.0, 0.0, 1.0, TextDpi.FromTextDpi(2 * listItemParaClient.Rect.u + listItemParaClient.Rect.du), 0.0)); } int adjustedIndex; if (int.MaxValue - index < indexFirstParaInSubtrack) { adjustedIndex = int.MaxValue; } else { adjustedIndex = indexFirstParaInSubtrack + index; } LineProperties lineProps = new LineProperties(Paragraph.Element, Paragraph.StructuralCache.FormattingOwner, textProperties, new MarkerProperties(list, adjustedIndex)); listMarkerLine.FormatAndDrawVisual(ctx, lineProps, listItemParaClient.Rect.u, dvBaseline); if(PageFlowDirection != ThisFlowDirection) { ctx.Pop(); } } } listMarkerLine.Dispose(); } // Render list of paragraphs PtsHelper.UpdateParaListVisuals(PtsContext, _visual.Children, fskupdInherited, arrayParaDesc); } else { _visual.Children.Clear(); } } } } // 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: ListParaClient.cs // // Description: ListParaClient is responsible for handling display // related data of list paragraphs. // // History: // 02/07/2004 : ghermann - created. // //--------------------------------------------------------------------------- using System; using System.Diagnostics; using System.Security; using System.Windows; using System.Windows.Media; using System.Windows.Documents; using MS.Internal.Documents; using MS.Internal.Text; using MS.Internal.PtsHost.UnsafeNativeMethods; namespace MS.Internal.PtsHost { ////// ListParaClient is responsible for handling display related data /// of break paragraphs. /// internal sealed class ListParaClient : ContainerParaClient { ////// Constructor. /// /// /// ListParagraph associated with this para client. /// internal ListParaClient(ListParagraph paragraph) : base(paragraph) { } ////// Validate visual node associated with paragraph. /// /// /// Inherited update info /// ////// Critical - as this calls Critical function PTS.FsQuerySubtrackDetails /// and some PtsHelper functions. /// Safe - operation is safe and method doesn't disclose any information got through critical calls /// [SecurityCritical, SecurityTreatAsSafe] internal override void ValidateVisual(PTS.FSKUPDATE fskupdInherited) { // Query paragraph details PTS.FSSUBTRACKDETAILS subtrackDetails; PTS.Validate(PTS.FsQuerySubtrackDetails(PtsContext.Context, _paraHandle.Value, out subtrackDetails)); // Draw border and background info. MbpInfo mbp = MbpInfo.FromElement(Paragraph.Element); if (ThisFlowDirection != PageFlowDirection) { mbp.MirrorBP(); } uint fswdir = PTS.FlowDirectionToFswdir((FlowDirection)Paragraph.Element.GetValue(FrameworkElement.FlowDirectionProperty)); Brush backgroundBrush = (Brush)Paragraph.Element.GetValue(TextElement.BackgroundProperty); TextProperties textProperties = new TextProperties(Paragraph.Element, StaticTextPointer.Null, false /* inline objects */, false /* get background */); // There might be possibility to get empty sub-track, skip the sub-track in such case. if (subtrackDetails.cParas != 0) { PTS.FSPARADESCRIPTION [] arrayParaDesc; PtsHelper.ParaListFromSubtrack(PtsContext, _paraHandle.Value, ref subtrackDetails, out arrayParaDesc); using(DrawingContext ctx = _visual.RenderOpen()) { _visual.DrawBackgroundAndBorderIntoContext(ctx, backgroundBrush, mbp.BorderBrush, mbp.Border, _rect.FromTextDpi(), IsFirstChunk, IsLastChunk); // Get list of paragraphs ListMarkerLine listMarkerLine = new ListMarkerLine(Paragraph.StructuralCache.TextFormatterHost, this); int indexFirstParaInSubtrack = 0; for(int index = 0; index < subtrackDetails.cParas; index++) { List list = Paragraph.Element as List; BaseParaClient listItemParaClient = PtsContext.HandleToObject(arrayParaDesc[index].pfsparaclient) as BaseParaClient; PTS.ValidateHandle(listItemParaClient); if(index == 0) { indexFirstParaInSubtrack = list.GetListItemIndex(listItemParaClient.Paragraph.Element as ListItem); } if(listItemParaClient.IsFirstChunk) { int dvBaseline = listItemParaClient.GetFirstTextLineBaseline(); if(PageFlowDirection != ThisFlowDirection) { ctx.PushTransform(new MatrixTransform(-1.0, 0.0, 0.0, 1.0, TextDpi.FromTextDpi(2 * listItemParaClient.Rect.u + listItemParaClient.Rect.du), 0.0)); } int adjustedIndex; if (int.MaxValue - index < indexFirstParaInSubtrack) { adjustedIndex = int.MaxValue; } else { adjustedIndex = indexFirstParaInSubtrack + index; } LineProperties lineProps = new LineProperties(Paragraph.Element, Paragraph.StructuralCache.FormattingOwner, textProperties, new MarkerProperties(list, adjustedIndex)); listMarkerLine.FormatAndDrawVisual(ctx, lineProps, listItemParaClient.Rect.u, dvBaseline); if(PageFlowDirection != ThisFlowDirection) { ctx.Pop(); } } } listMarkerLine.Dispose(); } // Render list of paragraphs PtsHelper.UpdateParaListVisuals(PtsContext, _visual.Children, fskupdInherited, arrayParaDesc); } else { _visual.Children.Clear(); } } } } // 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
- ValueTypeFixupInfo.cs
- XmlSchemaObjectTable.cs
- WebPartMinimizeVerb.cs
- BulletedList.cs
- State.cs
- ToolStripOverflowButton.cs
- XPathSelectionIterator.cs
- PageTheme.cs
- BinaryFormatterWriter.cs
- ListViewDeletedEventArgs.cs
- MethodImplAttribute.cs
- ReservationCollection.cs
- ContainerControl.cs
- AcceleratedTokenProviderState.cs
- MailMessage.cs
- AddInServer.cs
- Transform.cs
- List.cs
- TypefaceMetricsCache.cs
- BitmapEffectInputData.cs
- PropertyEntry.cs
- CodeSnippetStatement.cs
- ManagedFilter.cs
- panel.cs
- PerspectiveCamera.cs
- ImageList.cs
- base64Transforms.cs
- _NetworkingPerfCounters.cs
- FrameworkElement.cs
- HScrollProperties.cs
- ParsedAttributeCollection.cs
- ServiceBuildProvider.cs
- TagElement.cs
- BrushConverter.cs
- XmlSerializerFactory.cs
- ColumnHeaderCollectionEditor.cs
- PrintEvent.cs
- EnumMember.cs
- SqlDelegatedTransaction.cs
- HijriCalendar.cs
- X509Certificate.cs
- PassportIdentity.cs
- ByteConverter.cs
- StreamDocument.cs
- WebPermission.cs
- BindingBase.cs
- AspNetRouteServiceHttpHandler.cs
- ReflectionHelper.cs
- URIFormatException.cs
- SqlProcedureAttribute.cs
- DocumentViewerBaseAutomationPeer.cs
- ClientSettings.cs
- MSHTMLHost.cs
- OrderByBuilder.cs
- RemotingSurrogateSelector.cs
- Msec.cs
- ModuleBuilderData.cs
- DeobfuscatingStream.cs
- MessagePropertyVariants.cs
- RecognizedAudio.cs
- WebPageTraceListener.cs
- AttachInfo.cs
- ConfigurationStrings.cs
- EdmMember.cs
- UIElement3DAutomationPeer.cs
- NamedPipeChannelListener.cs
- EditBehavior.cs
- LinqDataSourceUpdateEventArgs.cs
- SocketException.cs
- PtsContext.cs
- SoapExtension.cs
- CrossSiteScriptingValidation.cs
- Int64Converter.cs
- IPAddressCollection.cs
- ReadOnlyHierarchicalDataSource.cs
- ControlBindingsConverter.cs
- DetailsViewRow.cs
- HttpFileCollection.cs
- SecurityElement.cs
- HtmlGenericControl.cs
- NullableDecimalAverageAggregationOperator.cs
- BinHexEncoding.cs
- ItemAutomationPeer.cs
- ObjectContextServiceProvider.cs
- SmtpFailedRecipientException.cs
- Drawing.cs
- FieldBuilder.cs
- ProtocolsConfiguration.cs
- SignatureToken.cs
- ScriptComponentDescriptor.cs
- PointLightBase.cs
- InstanceDataCollectionCollection.cs
- InternalSendMessage.cs
- SQLResource.cs
- DataObjectCopyingEventArgs.cs
- HostedTransportConfigurationBase.cs
- SchemaImporterExtension.cs
- XmlChildEnumerator.cs
- ToolStripSeparator.cs
- DesignerActionList.cs