Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ColumnMapCopier.cs
- CodeDelegateInvokeExpression.cs
- HitTestFilterBehavior.cs
- _CacheStreams.cs
- ArgIterator.cs
- MachineSettingsSection.cs
- HostingPreferredMapPath.cs
- PointKeyFrameCollection.cs
- TemplateManager.cs
- NavigationWindowAutomationPeer.cs
- PrintController.cs
- TimeZone.cs
- ComponentChangedEvent.cs
- ManagementObjectSearcher.cs
- KeyValueConfigurationElement.cs
- DesignerProperties.cs
- TextContainerChangedEventArgs.cs
- SQlBooleanStorage.cs
- CompositeActivityMarkupSerializer.cs
- AmbientValueAttribute.cs
- SubMenuStyle.cs
- Logging.cs
- DataGridViewComboBoxCell.cs
- Operator.cs
- ReadWriteSpinLock.cs
- StrokeCollection2.cs
- AliasExpr.cs
- StaticExtension.cs
- SiteMembershipCondition.cs
- FilteredDataSetHelper.cs
- LinkLabel.cs
- MD5CryptoServiceProvider.cs
- GestureRecognizer.cs
- GeneralTransform.cs
- DiffuseMaterial.cs
- DmlSqlGenerator.cs
- CompiledQueryCacheKey.cs
- ResXResourceSet.cs
- PermissionListSet.cs
- CurrentChangingEventManager.cs
- SmiEventSink_Default.cs
- ACL.cs
- SiteMapSection.cs
- ScaleTransform.cs
- HwndPanningFeedback.cs
- WmlTextViewAdapter.cs
- Vertex.cs
- ControlType.cs
- CollectionsUtil.cs
- ToolBarButtonClickEvent.cs
- MappingSource.cs
- DesignTimeVisibleAttribute.cs
- SimpleTextLine.cs
- VisualTreeUtils.cs
- ToolBarOverflowPanel.cs
- ControlParameter.cs
- SchemaElementDecl.cs
- WebPartConnectionsEventArgs.cs
- EventDescriptorCollection.cs
- SmiContextFactory.cs
- BindingList.cs
- ProcessHostServerConfig.cs
- FormViewPagerRow.cs
- ScopelessEnumAttribute.cs
- FontUnitConverter.cs
- HttpBufferlessInputStream.cs
- SequenceDesigner.cs
- StylusShape.cs
- StrokeRenderer.cs
- SafeUserTokenHandle.cs
- PropertyInformationCollection.cs
- OdbcDataAdapter.cs
- SqlOuterApplyReducer.cs
- Substitution.cs
- BindingWorker.cs
- DataGridViewColumnCollection.cs
- SwitchAttribute.cs
- ServerIdentity.cs
- ToolStripTextBox.cs
- PersonalizationDictionary.cs
- LoadedOrUnloadedOperation.cs
- SystemColorTracker.cs
- IxmlLineInfo.cs
- LoopExpression.cs
- WriteTimeStream.cs
- StringStorage.cs
- ServicePoint.cs
- TraceRecord.cs
- RenderContext.cs
- TextLineResult.cs
- SimpleHandlerFactory.cs
- PersonalizationProviderHelper.cs
- ScriptControlDescriptor.cs
- ProvidersHelper.cs
- TextRangeEdit.cs
- _UriTypeConverter.cs
- DBParameter.cs
- Authorization.cs
- BasicExpressionVisitor.cs
- WebZone.cs