Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / MS / Internal / IO / Packaging / xmlfixedPageInfo.cs / 1 / 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
- WriterOutput.cs
- SafeNativeMethods.cs
- MarginsConverter.cs
- QueryExpr.cs
- KeyFrames.cs
- InputElement.cs
- OperandQuery.cs
- PackageStore.cs
- TextFormatterContext.cs
- TableRow.cs
- CommentGlyph.cs
- MouseButton.cs
- SamlSubjectStatement.cs
- ProxyWebPartManager.cs
- PtsHelper.cs
- DragEventArgs.cs
- BasePattern.cs
- RecognizerInfo.cs
- XmlUnspecifiedAttribute.cs
- ControlParameter.cs
- SiteMap.cs
- DbMetaDataCollectionNames.cs
- Identifier.cs
- Set.cs
- RequestContext.cs
- XmlBinaryReader.cs
- ReadOnlyState.cs
- TdsEnums.cs
- XmlMemberMapping.cs
- XmlDictionaryString.cs
- ConfigurationConverterBase.cs
- IdleTimeoutMonitor.cs
- SafeEventLogWriteHandle.cs
- DetailsViewPagerRow.cs
- PartitionedStreamMerger.cs
- ParserStack.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- WinEventTracker.cs
- PrimitiveCodeDomSerializer.cs
- MethodExpr.cs
- ObjectHelper.cs
- Error.cs
- CompensationToken.cs
- FixedTextSelectionProcessor.cs
- TextDecorationCollection.cs
- TransformDescriptor.cs
- UpdateTracker.cs
- RadialGradientBrush.cs
- Timer.cs
- counter.cs
- ToolStripRenderEventArgs.cs
- TextPattern.cs
- ACE.cs
- BigInt.cs
- XmlHierarchyData.cs
- UpdateTranslator.cs
- SchemaReference.cs
- QueryCacheManager.cs
- EnumBuilder.cs
- TraceSection.cs
- RootBuilder.cs
- InternalEnumValidator.cs
- TextBox.cs
- HtmlEmptyTagControlBuilder.cs
- FrameSecurityDescriptor.cs
- SerializationAttributes.cs
- ProfileInfo.cs
- UnsafeNetInfoNativeMethods.cs
- BindableTemplateBuilder.cs
- regiisutil.cs
- XmlTextAttribute.cs
- KeyEventArgs.cs
- IsolatedStorageFilePermission.cs
- OverlappedAsyncResult.cs
- ResourceSet.cs
- DetailsViewDeletedEventArgs.cs
- RightsController.cs
- ObjectConverter.cs
- x509store.cs
- MessageAction.cs
- StringToken.cs
- OSFeature.cs
- MessageSmuggler.cs
- XhtmlBasicTextBoxAdapter.cs
- QilBinary.cs
- UserControlBuildProvider.cs
- FloatUtil.cs
- StoryFragments.cs
- GlyphCache.cs
- XmlSchemaImport.cs
- InteropAutomationProvider.cs
- XhtmlBasicSelectionListAdapter.cs
- CompModSwitches.cs
- CommonXSendMessage.cs
- ColorAnimationBase.cs
- WriteTimeStream.cs
- SpecularMaterial.cs
- PieceNameHelper.cs
- MultiSelectRootGridEntry.cs
- AtomicFile.cs