Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / MS / Internal / IO / Packaging / xmlfixedPageInfo.cs / 1305600 / xmlfixedPageInfo.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description:
// Implements a DOM-based subclass of the FixedPageInfo abstract class.
// The class functions as an array of XmlGlyphRunInfo's in markup order.
//
// History:
// 05/06/2004: JohnLarc: Initial implementation
//---------------------------------------------------------------------------
using System;
using System.Windows; // For ExceptionStringTable
using System.Xml; // For DOM objects
using System.Diagnostics; // For Assert
using System.Globalization; // For CultureInfo
namespace MS.Internal.IO.Packaging
{
internal class XmlFixedPageInfo : MS.Internal.FixedPageInfo
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
///
/// Initialize object from DOM node.
///
///
/// The DOM node is assumed to be a XAML FixedPage element. Its namespace URI
/// is subsequently used to look for its nested Glyphs elements (see private property NodeList).
///
internal XmlFixedPageInfo(XmlNode fixedPageNode)
{
_pageNode = fixedPageNode;
Debug.Assert(_pageNode != null);
if (_pageNode.LocalName != _fixedPageName || _pageNode.NamespaceURI != ElementTableKey.FixedMarkupNamespace)
{
throw new ArgumentException(SR.Get(SRID.UnexpectedXmlNodeInXmlFixedPageInfoConstructor,
_pageNode.NamespaceURI, _pageNode.LocalName,
ElementTableKey.FixedMarkupNamespace, _fixedPageName));
}
}
#endregion Constructors
//------------------------------------------------------
//
// Internal Methods
//
//-----------------------------------------------------
#region Internal Methods
///
/// Get the glyph run at zero-based position 'position'.
///
///
/// Returns null for a nonexistent position. No exception raised.
///
internal override GlyphRunInfo GlyphRunAtPosition(int position)
{
if (position < 0 || position >= GlyphRunList.Length)
{
return null;
}
if (GlyphRunList[position] == null)
{
GlyphRunList[position] = new XmlGlyphRunInfo(NodeList[position]);
}
return GlyphRunList[position];
}
#endregion Internal Methods
//------------------------------------------------------
//
// Internal Properties
//
//------------------------------------------------------
#region Internal Properties
///
/// Indicates the number of glyph runs on the page.
///
internal override int GlyphRunCount
{
get
{
return GlyphRunList.Length;
}
}
#endregion Internal Properties
//-----------------------------------------------------
//
// Private Properties
//
//------------------------------------------------------
#region Private Properties
///
/// Lazily initialize _glyphRunList, an array of XmlGlyphInfo objects,
/// using the NodeList private property.
///
///
/// When using Visual Studio to step through code using this property, make sure the option
/// "Allow property evaluation in variables windows" is unchecked.
///
private XmlGlyphRunInfo[] GlyphRunList
{
get
{
if (_glyphRunList == null)
{
_glyphRunList = new XmlGlyphRunInfo[NodeList.Count];
}
return _glyphRunList;
}
}
///
/// Lazily initialize the list of Glyphs elements on the page using XPath.
///
///
/// When using Visual Studio to step through code using this property, make sure the option
/// "Allow property evaluation in variables windows" is unchecked.
///
private XmlNodeList NodeList
{
get
{
if (_nodeList == null)
{
string glyphRunQuery = String.Format(CultureInfo.InvariantCulture, ".//*[namespace-uri()='{0}' and local-name()='{1}']",
ElementTableKey.FixedMarkupNamespace,
_glyphRunName);
_nodeList = _pageNode.SelectNodes(glyphRunQuery);
}
return _nodeList;
}
}
#endregion Private Properties
//-----------------------------------------------------
//
// Private Fields
//
//-----------------------------------------------------
#region Private Fields
#region Constants
private const string _fixedPageName = "FixedPage";
private const string _glyphRunName = "Glyphs";
#endregion Constants
private XmlNode _pageNode;
private XmlNodeList _nodeList = null;
private XmlGlyphRunInfo[] _glyphRunList = null;
#endregion Private Fields
}
}
// 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.
//
//
// Description:
// Implements a DOM-based subclass of the FixedPageInfo abstract class.
// The class functions as an array of XmlGlyphRunInfo's in markup order.
//
// History:
// 05/06/2004: JohnLarc: Initial implementation
//---------------------------------------------------------------------------
using System;
using System.Windows; // For ExceptionStringTable
using System.Xml; // For DOM objects
using System.Diagnostics; // For Assert
using System.Globalization; // For CultureInfo
namespace MS.Internal.IO.Packaging
{
internal class XmlFixedPageInfo : MS.Internal.FixedPageInfo
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
///
/// Initialize object from DOM node.
///
///
/// The DOM node is assumed to be a XAML FixedPage element. Its namespace URI
/// is subsequently used to look for its nested Glyphs elements (see private property NodeList).
///
internal XmlFixedPageInfo(XmlNode fixedPageNode)
{
_pageNode = fixedPageNode;
Debug.Assert(_pageNode != null);
if (_pageNode.LocalName != _fixedPageName || _pageNode.NamespaceURI != ElementTableKey.FixedMarkupNamespace)
{
throw new ArgumentException(SR.Get(SRID.UnexpectedXmlNodeInXmlFixedPageInfoConstructor,
_pageNode.NamespaceURI, _pageNode.LocalName,
ElementTableKey.FixedMarkupNamespace, _fixedPageName));
}
}
#endregion Constructors
//------------------------------------------------------
//
// Internal Methods
//
//-----------------------------------------------------
#region Internal Methods
///
/// Get the glyph run at zero-based position 'position'.
///
///
/// Returns null for a nonexistent position. No exception raised.
///
internal override GlyphRunInfo GlyphRunAtPosition(int position)
{
if (position < 0 || position >= GlyphRunList.Length)
{
return null;
}
if (GlyphRunList[position] == null)
{
GlyphRunList[position] = new XmlGlyphRunInfo(NodeList[position]);
}
return GlyphRunList[position];
}
#endregion Internal Methods
//------------------------------------------------------
//
// Internal Properties
//
//------------------------------------------------------
#region Internal Properties
///
/// Indicates the number of glyph runs on the page.
///
internal override int GlyphRunCount
{
get
{
return GlyphRunList.Length;
}
}
#endregion Internal Properties
//-----------------------------------------------------
//
// Private Properties
//
//------------------------------------------------------
#region Private Properties
///
/// Lazily initialize _glyphRunList, an array of XmlGlyphInfo objects,
/// using the NodeList private property.
///
///
/// When using Visual Studio to step through code using this property, make sure the option
/// "Allow property evaluation in variables windows" is unchecked.
///
private XmlGlyphRunInfo[] GlyphRunList
{
get
{
if (_glyphRunList == null)
{
_glyphRunList = new XmlGlyphRunInfo[NodeList.Count];
}
return _glyphRunList;
}
}
///
/// Lazily initialize the list of Glyphs elements on the page using XPath.
///
///
/// When using Visual Studio to step through code using this property, make sure the option
/// "Allow property evaluation in variables windows" is unchecked.
///
private XmlNodeList NodeList
{
get
{
if (_nodeList == null)
{
string glyphRunQuery = String.Format(CultureInfo.InvariantCulture, ".//*[namespace-uri()='{0}' and local-name()='{1}']",
ElementTableKey.FixedMarkupNamespace,
_glyphRunName);
_nodeList = _pageNode.SelectNodes(glyphRunQuery);
}
return _nodeList;
}
}
#endregion Private Properties
//-----------------------------------------------------
//
// Private Fields
//
//-----------------------------------------------------
#region Private Fields
#region Constants
private const string _fixedPageName = "FixedPage";
private const string _glyphRunName = "Glyphs";
#endregion Constants
private XmlNode _pageNode;
private XmlNodeList _nodeList = null;
private XmlGlyphRunInfo[] _glyphRunList = null;
#endregion Private Fields
}
}
// 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
- TextWriterTraceListener.cs
- ToolTip.cs
- TreeNodeMouseHoverEvent.cs
- _SslState.cs
- SqlWriter.cs
- AssertSection.cs
- EntityViewGenerator.cs
- HMACSHA256.cs
- TreeView.cs
- TabControl.cs
- QilExpression.cs
- Configuration.cs
- SizeAnimationBase.cs
- VectorCollectionConverter.cs
- GridViewUpdatedEventArgs.cs
- HScrollBar.cs
- TimelineGroup.cs
- TimestampInformation.cs
- EncryptedData.cs
- ServiceHost.cs
- ControlPaint.cs
- MaterialCollection.cs
- WindowsPrincipal.cs
- EndpointInfoCollection.cs
- TagPrefixAttribute.cs
- ChangeDirector.cs
- EventData.cs
- SspiWrapper.cs
- SqlRowUpdatingEvent.cs
- SubMenuStyleCollection.cs
- OAVariantLib.cs
- BufferModeSettings.cs
- EntityKeyElement.cs
- ManipulationStartingEventArgs.cs
- MatrixUtil.cs
- OneToOneMappingSerializer.cs
- SqlUtil.cs
- DiscoveryServiceExtension.cs
- QueryAccessibilityHelpEvent.cs
- PropertyTab.cs
- Decoder.cs
- Validator.cs
- Point3DValueSerializer.cs
- IdentityReference.cs
- DefaultValueTypeConverter.cs
- CharacterMetricsDictionary.cs
- InputDevice.cs
- OpenFileDialog.cs
- MatchAttribute.cs
- SmtpClient.cs
- MsmqInputMessage.cs
- PtsHost.cs
- OutputScope.cs
- LoginName.cs
- CryptoApi.cs
- ISFTagAndGuidCache.cs
- DrawingGroup.cs
- _AutoWebProxyScriptHelper.cs
- objectquery_tresulttype.cs
- OdbcHandle.cs
- Select.cs
- KnownAssemblyEntry.cs
- SendKeys.cs
- UIElementParagraph.cs
- TextWriterTraceListener.cs
- ReadWriteSpinLock.cs
- unsafenativemethodstextservices.cs
- HelpProvider.cs
- XmlEntity.cs
- SemanticResolver.cs
- PointAnimationUsingKeyFrames.cs
- IndexExpression.cs
- System.Data_BID.cs
- SQLDateTimeStorage.cs
- DbConnectionOptions.cs
- DoubleConverter.cs
- SafeMILHandleMemoryPressure.cs
- JsonClassDataContract.cs
- SymLanguageType.cs
- ClientEventManager.cs
- FormsAuthenticationCredentials.cs
- OutputCacheModule.cs
- TypeDescriptionProvider.cs
- AssemblyNameProxy.cs
- Tuple.cs
- CompositeControl.cs
- DataGridViewHitTestInfo.cs
- FontStyleConverter.cs
- MgmtResManager.cs
- ProbeMatchesCD1.cs
- TextEditorMouse.cs
- SortKey.cs
- ThaiBuddhistCalendar.cs
- RowParagraph.cs
- InputDevice.cs
- FlowDocumentPage.cs
- ConfigurationElementCollection.cs
- ReflectionPermission.cs
- HttpCacheVary.cs
- TypeHelper.cs