Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- HtmlHistory.cs
- GeometryConverter.cs
- HtmlInputText.cs
- PersonalizationState.cs
- MailHeaderInfo.cs
- StopStoryboard.cs
- COM2ExtendedBrowsingHandler.cs
- CopyCodeAction.cs
- Point3DIndependentAnimationStorage.cs
- ContainerAction.cs
- ToolStripAdornerWindowService.cs
- CodeGenHelper.cs
- ImageListStreamer.cs
- LogFlushAsyncResult.cs
- RuntimeHelpers.cs
- ScopedKnownTypes.cs
- WebServiceResponseDesigner.cs
- OverflowException.cs
- XmlElementCollection.cs
- EntityContainerEmitter.cs
- KeyValuePairs.cs
- StringCollection.cs
- HttpProfileBase.cs
- SynchronizationHandlesCodeDomSerializer.cs
- TypeBuilderInstantiation.cs
- BackStopAuthenticationModule.cs
- VsPropertyGrid.cs
- HttpHandlerAction.cs
- StringCollection.cs
- WebServiceErrorEvent.cs
- FieldAccessException.cs
- DbConnectionPoolIdentity.cs
- VarInfo.cs
- WaitHandleCannotBeOpenedException.cs
- GlobalId.cs
- NameObjectCollectionBase.cs
- Console.cs
- OptimalBreakSession.cs
- TextBlockAutomationPeer.cs
- CultureSpecificStringDictionary.cs
- ObjectSecurityT.cs
- SortFieldComparer.cs
- DriveNotFoundException.cs
- ValueQuery.cs
- TextTreeRootNode.cs
- CompositeCollection.cs
- DebuggerService.cs
- TemplateLookupAction.cs
- DbTransaction.cs
- ResourcesGenerator.cs
- WsatAdminException.cs
- IncrementalReadDecoders.cs
- NavigationWindow.cs
- CodeBlockBuilder.cs
- CompositeDataBoundControl.cs
- NonParentingControl.cs
- IPGlobalProperties.cs
- HttpContext.cs
- ProtocolsConfigurationHandler.cs
- DesignerInterfaces.cs
- XmlNavigatorStack.cs
- ControlCollection.cs
- StrongNameHelpers.cs
- SQLBytesStorage.cs
- BypassElementCollection.cs
- LambdaCompiler.Generated.cs
- XmlSchemaSimpleContentExtension.cs
- DesignerMetadata.cs
- IdentityModelDictionary.cs
- TableItemStyle.cs
- HostedElements.cs
- SessionPageStateSection.cs
- MetaForeignKeyColumn.cs
- dataSvcMapFileLoader.cs
- X509CertificateChain.cs
- GPRECTF.cs
- DbConnectionPool.cs
- SequenceFullException.cs
- Inline.cs
- CompilerGlobalScopeAttribute.cs
- StrokeNodeData.cs
- XmlTextEncoder.cs
- Fx.cs
- DesignerDataRelationship.cs
- IteratorFilter.cs
- DataGridViewColumnConverter.cs
- CalendarAutoFormatDialog.cs
- RequestStatusBarUpdateEventArgs.cs
- HandlerWithFactory.cs
- SoapSchemaExporter.cs
- DbgCompiler.cs
- ChangePassword.cs
- SelectedCellsCollection.cs
- Stylesheet.cs
- GridViewUpdateEventArgs.cs
- WebSysDescriptionAttribute.cs
- ScriptingJsonSerializationSection.cs
- ScanQueryOperator.cs
- ManagementInstaller.cs
- MDIClient.cs