Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- TargetControlTypeAttribute.cs
- WinFormsComponentEditor.cs
- GestureRecognizer.cs
- SharedPerformanceCounter.cs
- AlternationConverter.cs
- BaseCollection.cs
- HyperlinkAutomationPeer.cs
- DataBoundControl.cs
- DateTimeOffset.cs
- WindowsFormsSynchronizationContext.cs
- CapiNative.cs
- UidManager.cs
- ColumnPropertiesGroup.cs
- TriggerCollection.cs
- CustomLineCap.cs
- BinaryObjectReader.cs
- Misc.cs
- UnsafeNativeMethods.cs
- UInt16Converter.cs
- WasEndpointConfigContainer.cs
- CopyAttributesAction.cs
- Module.cs
- NamespaceEmitter.cs
- MergeFailedEvent.cs
- Label.cs
- ParseChildrenAsPropertiesAttribute.cs
- ChainOfResponsibility.cs
- HttpResponse.cs
- StringResourceManager.cs
- ShimAsPublicXamlType.cs
- XmlSchemaParticle.cs
- TransactionException.cs
- StrokeCollectionConverter.cs
- StorageRoot.cs
- ValidateNames.cs
- MachineKeySection.cs
- MessagePartProtectionMode.cs
- ISAPIRuntime.cs
- TextStore.cs
- PeerCustomResolverBindingElement.cs
- CacheChildrenQuery.cs
- ProvidersHelper.cs
- DbInsertCommandTree.cs
- Command.cs
- translator.cs
- HttpRequestBase.cs
- AsymmetricKeyExchangeFormatter.cs
- DataSourceSelectArguments.cs
- NameHandler.cs
- ValueHandle.cs
- OleAutBinder.cs
- RangeEnumerable.cs
- HttpListenerException.cs
- URL.cs
- ObjectDataSourceStatusEventArgs.cs
- DBParameter.cs
- StreamWithDictionary.cs
- HttpProcessUtility.cs
- SoundPlayerAction.cs
- TdsParserSafeHandles.cs
- shaperfactoryquerycachekey.cs
- WebPartCatalogAddVerb.cs
- KerberosRequestorSecurityToken.cs
- TextModifier.cs
- GuidTagList.cs
- SerializeAbsoluteContext.cs
- Serializer.cs
- PolicyConversionContext.cs
- CodeGeneratorOptions.cs
- EditorZoneBase.cs
- Ray3DHitTestResult.cs
- ReceiveCompletedEventArgs.cs
- ViewManagerAttribute.cs
- ParamArrayAttribute.cs
- TypeDescriptorContext.cs
- LoadedEvent.cs
- EmptyEnumerable.cs
- UnsafeMethods.cs
- XNodeNavigator.cs
- MouseDevice.cs
- XmlArrayItemAttributes.cs
- NativeMethods.cs
- DependencyProperty.cs
- SendMailErrorEventArgs.cs
- NativeMethods.cs
- ZipIOCentralDirectoryFileHeader.cs
- StorageMappingItemCollection.cs
- TextEditorLists.cs
- CodeChecksumPragma.cs
- BooleanFacetDescriptionElement.cs
- CustomValidator.cs
- RoleService.cs
- URLString.cs
- ComponentResourceKey.cs
- PassportPrincipal.cs
- ToolStripPanel.cs
- SimpleBitVector32.cs
- FunctionQuery.cs
- EventsTab.cs
- TextEditorCharacters.cs