Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- ExecutionEngineException.cs
- OverflowException.cs
- ThreadPool.cs
- TextDecorationCollection.cs
- XmlNamedNodeMap.cs
- InstanceCreationEditor.cs
- ProcessProtocolHandler.cs
- XmlMembersMapping.cs
- Renderer.cs
- SoapUnknownHeader.cs
- CodeRemoveEventStatement.cs
- ServiceCredentials.cs
- QueryableDataSourceHelper.cs
- ControlOperationInvoker.cs
- ToolStripDropDownClosingEventArgs.cs
- BuildProvider.cs
- PageStatePersister.cs
- SortedDictionary.cs
- KeyTimeConverter.cs
- CurrentChangingEventArgs.cs
- PlaceHolder.cs
- StorageMappingItemCollection.cs
- PeerReferralPolicy.cs
- WebPartManagerInternals.cs
- DragDrop.cs
- SamlDoNotCacheCondition.cs
- remotingproxy.cs
- SqlCharStream.cs
- FileNotFoundException.cs
- TrackingServices.cs
- TextServicesProperty.cs
- PerformanceCounterPermissionEntryCollection.cs
- NetDispatcherFaultException.cs
- TextDocumentView.cs
- ImpersonationContext.cs
- DbXmlEnabledProviderManifest.cs
- UpdateProgress.cs
- XsltSettings.cs
- TdsRecordBufferSetter.cs
- AggregateNode.cs
- SiteMapSection.cs
- StateItem.cs
- BaseResourcesBuildProvider.cs
- SerializableAuthorizationContext.cs
- OracleCommandSet.cs
- DecoderFallbackWithFailureFlag.cs
- LineSegment.cs
- SafeRightsManagementPubHandle.cs
- HighlightVisual.cs
- ServiceManager.cs
- EntityContainerRelationshipSet.cs
- KnowledgeBase.cs
- WorkflowMarkupSerializationException.cs
- DataControlFieldCollection.cs
- TaskExtensions.cs
- IPPacketInformation.cs
- TextEndOfParagraph.cs
- FixedSOMLineCollection.cs
- FramingEncoders.cs
- RelatedImageListAttribute.cs
- ScriptingProfileServiceSection.cs
- CodeSubDirectory.cs
- DesignBindingConverter.cs
- OleDbRowUpdatingEvent.cs
- FrameworkContentElement.cs
- EntityDataSourceSelectingEventArgs.cs
- WebPartAuthorizationEventArgs.cs
- PolyLineSegment.cs
- X509IssuerSerialKeyIdentifierClause.cs
- CollectionDataContract.cs
- BmpBitmapDecoder.cs
- SystemNetworkInterface.cs
- HtmlGenericControl.cs
- DesignerSerializationVisibilityAttribute.cs
- GradientBrush.cs
- ContainerUIElement3D.cs
- ExpressionBinding.cs
- LoginName.cs
- HighlightComponent.cs
- XmlDataLoader.cs
- LazyLoadBehavior.cs
- InfoCardAsymmetricCrypto.cs
- Transform.cs
- BitmapCache.cs
- PropertyStore.cs
- EntityDataSourceDataSelectionPanel.cs
- TaskExceptionHolder.cs
- Encoder.cs
- RecommendedAsConfigurableAttribute.cs
- StringUtil.cs
- FileVersionInfo.cs
- HandledEventArgs.cs
- StringToken.cs
- WebBrowserNavigatedEventHandler.cs
- TextDecorationLocationValidation.cs
- MergePropertyDescriptor.cs
- SafeSecurityHelper.cs
- AxHostDesigner.cs
- Sql8ExpressionRewriter.cs
- FixedTextPointer.cs