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
- JsonEncodingStreamWrapper.cs
- ActivityTypeDesigner.xaml.cs
- ClientSession.cs
- ContractMapping.cs
- FormsAuthenticationConfiguration.cs
- WCFBuildProvider.cs
- SHA384Managed.cs
- pingexception.cs
- CalendarModeChangedEventArgs.cs
- PriorityQueue.cs
- RtfToken.cs
- _DisconnectOverlappedAsyncResult.cs
- SecurityToken.cs
- ErrorStyle.cs
- FileFormatException.cs
- ReliableMessagingHelpers.cs
- CalloutQueueItem.cs
- DataColumnCollection.cs
- Encoder.cs
- DropSourceBehavior.cs
- EpmSourceTree.cs
- IconConverter.cs
- XamlStackWriter.cs
- TimeSpanConverter.cs
- KeyTimeConverter.cs
- WebContext.cs
- RegexFCD.cs
- SID.cs
- SelectingProviderEventArgs.cs
- ConfigurationLoader.cs
- RepeaterItemCollection.cs
- SmtpFailedRecipientException.cs
- Stacktrace.cs
- TextFormatterImp.cs
- SystemIcmpV6Statistics.cs
- StateValidator.cs
- QilChoice.cs
- HandledMouseEvent.cs
- UITypeEditor.cs
- RuntimeWrappedException.cs
- EntityDataSourceColumn.cs
- StyleSelector.cs
- LayoutManager.cs
- XamlFilter.cs
- TransformerTypeCollection.cs
- AttachedPropertyBrowsableAttribute.cs
- WindowsIPAddress.cs
- BinaryMessageEncodingElement.cs
- SelectionList.cs
- JavaScriptString.cs
- MenuAutomationPeer.cs
- NumericUpDown.cs
- Matrix.cs
- DiffuseMaterial.cs
- SafeNativeMethods.cs
- ProtocolViolationException.cs
- Vector3DCollectionConverter.cs
- StyleCollection.cs
- SpecialFolderEnumConverter.cs
- Int32Storage.cs
- TdsEnums.cs
- Material.cs
- ForceCopyBuildProvider.cs
- LabelLiteral.cs
- EntityKeyElement.cs
- Memoizer.cs
- Hyperlink.cs
- InstalledVoice.cs
- WSFederationHttpSecurityMode.cs
- ProgressBar.cs
- DataViewSetting.cs
- BaseCollection.cs
- FragmentNavigationEventArgs.cs
- RepeaterCommandEventArgs.cs
- GestureRecognizer.cs
- DeflateStream.cs
- ShaperBuffers.cs
- HtmlUtf8RawTextWriter.cs
- PropertyMap.cs
- SortQuery.cs
- COM2PropertyDescriptor.cs
- ObjectViewListener.cs
- ProcessModelInfo.cs
- EntityConnectionStringBuilder.cs
- AVElementHelper.cs
- MatchSingleFxEngineOpcode.cs
- CodeTypeOfExpression.cs
- RegistryKey.cs
- MsmqIntegrationProcessProtocolHandler.cs
- RadioButtonStandardAdapter.cs
- DataControlCommands.cs
- XslCompiledTransform.cs
- ReflectEventDescriptor.cs
- Expander.cs
- UpDownBaseDesigner.cs
- ToolStripGrip.cs
- DateTimeConstantAttribute.cs
- LeaseManager.cs
- MainMenu.cs
- WorkflowApplicationUnhandledExceptionEventArgs.cs