Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Core / CSharp / MS / Internal / FontFace / TypefaceCollection.cs / 1 / TypefaceCollection.cs
//------------------------------------------------------------------------ // // Microsoft Windows Client Platform // Copyright (C) Microsoft Corporation, 2002 // // File: TypefaceCollection.cs // // Contents: Collection of typefaces // // Created: 5-15-2003 Michael Leonov (mleonov) // //----------------------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Windows; using System.Windows.Media; using MS.Internal.FontCache; using System.Globalization; using SR = MS.Internal.PresentationCore.SR; using SRID = MS.Internal.PresentationCore.SRID; namespace MS.Internal.FontFace { internal unsafe struct TypefaceCollection : ICollection{ private CachedFontFamily _family; private FontFamily _fontFamily; public TypefaceCollection(FontFamily fontFamily, CachedFontFamily family) { _fontFamily = fontFamily; _family = family; } #region ICollection Members public void Add(Typeface item) { throw new NotSupportedException(); } public void Clear() { throw new NotSupportedException(); } public bool Contains(Typeface item) { foreach (Typeface t in this) { if (t.Equals(item)) return true; } return false; } public void CopyTo(Typeface[] array, int arrayIndex) { if (array == null) { throw new ArgumentNullException("array"); } if (array.Rank != 1) { throw new ArgumentException(SR.Get(SRID.Collection_BadRank)); } // The extra "arrayIndex >= array.Length" check in because even if _collection.Count // is 0 the index is not allowed to be equal or greater than the length // (from the MSDN ICollection docs) if (arrayIndex < 0 || arrayIndex >= array.Length || (arrayIndex + Count) > array.Length) { throw new ArgumentOutOfRangeException("arrayIndex"); } foreach (Typeface t in this) { array[arrayIndex++] = t; } } public int Count { get { return _family.NumberOfFaces; } } public bool IsReadOnly { get { return true; } } public bool Remove(Typeface item) { throw new NotSupportedException(); } #endregion #region IEnumerable Members public IEnumerator GetEnumerator() { return new Enumerator(this); } #endregion #region IEnumerable Members System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return new Enumerator(this); } #endregion private struct Enumerator : IEnumerator { public Enumerator(TypefaceCollection typefaceCollection) { _typefaceCollection = typefaceCollection; // Unfortunately we cannot call Reset() here because not all of the fields are initialized. _familyEnumerator = ((IEnumerable )typefaceCollection._family).GetEnumerator(); } #region IEnumerator Members public Typeface Current { get { CachedFontFace face = _familyEnumerator.Current; return new Typeface(_typefaceCollection._fontFamily, face.Style, face.Weight, face.Stretch); } } #endregion #region IDisposable Members public void Dispose() {} #endregion #region IEnumerator Members object System.Collections.IEnumerator.Current { get { return ((IEnumerator )this).Current; } } public bool MoveNext() { return _familyEnumerator.MoveNext(); } public void Reset() { _familyEnumerator = ((IEnumerable )_typefaceCollection._family).GetEnumerator(); } #endregion private IEnumerator _familyEnumerator; private TypefaceCollection _typefaceCollection; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------ // // Microsoft Windows Client Platform // Copyright (C) Microsoft Corporation, 2002 // // File: TypefaceCollection.cs // // Contents: Collection of typefaces // // Created: 5-15-2003 Michael Leonov (mleonov) // //----------------------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Windows; using System.Windows.Media; using MS.Internal.FontCache; using System.Globalization; using SR = MS.Internal.PresentationCore.SR; using SRID = MS.Internal.PresentationCore.SRID; namespace MS.Internal.FontFace { internal unsafe struct TypefaceCollection : ICollection { private CachedFontFamily _family; private FontFamily _fontFamily; public TypefaceCollection(FontFamily fontFamily, CachedFontFamily family) { _fontFamily = fontFamily; _family = family; } #region ICollection Members public void Add(Typeface item) { throw new NotSupportedException(); } public void Clear() { throw new NotSupportedException(); } public bool Contains(Typeface item) { foreach (Typeface t in this) { if (t.Equals(item)) return true; } return false; } public void CopyTo(Typeface[] array, int arrayIndex) { if (array == null) { throw new ArgumentNullException("array"); } if (array.Rank != 1) { throw new ArgumentException(SR.Get(SRID.Collection_BadRank)); } // The extra "arrayIndex >= array.Length" check in because even if _collection.Count // is 0 the index is not allowed to be equal or greater than the length // (from the MSDN ICollection docs) if (arrayIndex < 0 || arrayIndex >= array.Length || (arrayIndex + Count) > array.Length) { throw new ArgumentOutOfRangeException("arrayIndex"); } foreach (Typeface t in this) { array[arrayIndex++] = t; } } public int Count { get { return _family.NumberOfFaces; } } public bool IsReadOnly { get { return true; } } public bool Remove(Typeface item) { throw new NotSupportedException(); } #endregion #region IEnumerable Members public IEnumerator GetEnumerator() { return new Enumerator(this); } #endregion #region IEnumerable Members System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return new Enumerator(this); } #endregion private struct Enumerator : IEnumerator { public Enumerator(TypefaceCollection typefaceCollection) { _typefaceCollection = typefaceCollection; // Unfortunately we cannot call Reset() here because not all of the fields are initialized. _familyEnumerator = ((IEnumerable )typefaceCollection._family).GetEnumerator(); } #region IEnumerator Members public Typeface Current { get { CachedFontFace face = _familyEnumerator.Current; return new Typeface(_typefaceCollection._fontFamily, face.Style, face.Weight, face.Stretch); } } #endregion #region IDisposable Members public void Dispose() {} #endregion #region IEnumerator Members object System.Collections.IEnumerator.Current { get { return ((IEnumerator )this).Current; } } public bool MoveNext() { return _familyEnumerator.MoveNext(); } public void Reset() { _familyEnumerator = ((IEnumerable )_typefaceCollection._family).GetEnumerator(); } #endregion private IEnumerator _familyEnumerator; private TypefaceCollection _typefaceCollection; } } } // 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
- ControlAdapter.cs
- XmlArrayAttribute.cs
- AvTraceDetails.cs
- ServerValidateEventArgs.cs
- HostedImpersonationContext.cs
- MenuItemCollectionEditorDialog.cs
- CheckBoxPopupAdapter.cs
- TreeView.cs
- WeakReference.cs
- SqlBooleanMismatchVisitor.cs
- HttpCacheVaryByContentEncodings.cs
- TextFormatterContext.cs
- HttpChannelHelper.cs
- EffectiveValueEntry.cs
- TextTreeRootNode.cs
- ToolStripPanelRenderEventArgs.cs
- WindowsPrincipal.cs
- AssemblyNameUtility.cs
- TabControl.cs
- Renderer.cs
- SqlAggregateChecker.cs
- CommandLibraryHelper.cs
- EntityClassGenerator.cs
- InputLangChangeRequestEvent.cs
- ResXFileRef.cs
- DiagnosticTrace.cs
- AlternateView.cs
- PixelFormats.cs
- DataGridTablesFactory.cs
- NoPersistScope.cs
- RelatedImageListAttribute.cs
- SerializationEventsCache.cs
- LabelExpression.cs
- ReferentialConstraint.cs
- EdmSchemaAttribute.cs
- IPEndPointCollection.cs
- DataSourceXmlAttributeAttribute.cs
- TextTreeInsertUndoUnit.cs
- ContainerTracking.cs
- BaseTemplateCodeDomTreeGenerator.cs
- Font.cs
- PropertyContainer.cs
- DesignerEditorPartChrome.cs
- SafeSecurityHandles.cs
- SQLRoleProvider.cs
- WebPartManagerInternals.cs
- StandardToolWindows.cs
- RegisteredDisposeScript.cs
- NamespaceCollection.cs
- SkinBuilder.cs
- Compress.cs
- ValidationSummary.cs
- CryptoConfig.cs
- SqlInternalConnectionSmi.cs
- SqlFlattener.cs
- PrintingPermission.cs
- PropertyPath.cs
- EntityContainerRelationshipSetEnd.cs
- GenericTypeParameterConverter.cs
- XmlElementCollection.cs
- AsyncCompletedEventArgs.cs
- ConstraintStruct.cs
- Size.cs
- DocumentViewerAutomationPeer.cs
- ResourceContainer.cs
- ValidatingReaderNodeData.cs
- XamlLoadErrorInfo.cs
- WindowsGraphicsWrapper.cs
- sqlcontext.cs
- MorphHelper.cs
- RawTextInputReport.cs
- TextEditorSpelling.cs
- NTAccount.cs
- NestedContainer.cs
- SapiAttributeParser.cs
- PrintEvent.cs
- Wrapper.cs
- DbInsertCommandTree.cs
- ControlEvent.cs
- Vector3DConverter.cs
- FontDialog.cs
- CodeObjectCreateExpression.cs
- VisualStates.cs
- EdmPropertyAttribute.cs
- SafeRegistryKey.cs
- Base64Encoder.cs
- Menu.cs
- TreeViewItem.cs
- Soap11ServerProtocol.cs
- WebEvents.cs
- SerializationFieldInfo.cs
- PropertyBuilder.cs
- WebPartConnectionsCloseVerb.cs
- ComponentResourceKeyConverter.cs
- ConnectionStringsExpressionBuilder.cs
- XmlDataDocument.cs
- ClientOptions.cs
- ConnectionManager.cs
- IntSecurity.cs
- TripleDESCryptoServiceProvider.cs