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
- ProcessManager.cs
- DataViewSettingCollection.cs
- VerticalConnector.xaml.cs
- SchemaImporter.cs
- XsltConvert.cs
- UnconditionalPolicy.cs
- SmiTypedGetterSetter.cs
- DateBoldEvent.cs
- SortAction.cs
- DrawingImage.cs
- PrintPageEvent.cs
- Baml2006KeyRecord.cs
- MetadataAssemblyHelper.cs
- RequestCacheValidator.cs
- XmlCountingReader.cs
- TwoPhaseCommit.cs
- SqlBooleanMismatchVisitor.cs
- SoapRpcMethodAttribute.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- LineSegment.cs
- SpellerInterop.cs
- SqlXml.cs
- WindowsToolbarAsMenu.cs
- DataServiceRequestArgs.cs
- DataGridPagingPage.cs
- XmlDocumentSurrogate.cs
- MoveSizeWinEventHandler.cs
- ContentDisposition.cs
- ApplicationSecurityManager.cs
- TableRowsCollectionEditor.cs
- ReflectionPermission.cs
- TemplateControlCodeDomTreeGenerator.cs
- Membership.cs
- RevocationPoint.cs
- UITypeEditor.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- XmlUtil.cs
- SaveWorkflowCommand.cs
- XmlnsPrefixAttribute.cs
- SurrogateSelector.cs
- Nodes.cs
- AspCompat.cs
- xml.cs
- InputQueueChannel.cs
- Int16Storage.cs
- ListItem.cs
- AutomationPeer.cs
- WebErrorHandler.cs
- HtmlMeta.cs
- FlowchartDesigner.xaml.cs
- SqlWebEventProvider.cs
- FileDataSourceCache.cs
- DataSourceCollectionBase.cs
- HttpCacheVaryByContentEncodings.cs
- StrongNameIdentityPermission.cs
- BehaviorEditorPart.cs
- DataGridViewCellPaintingEventArgs.cs
- ConditionalAttribute.cs
- NullReferenceException.cs
- OdbcStatementHandle.cs
- FilterEventArgs.cs
- XmlHierarchyData.cs
- WeakReferenceEnumerator.cs
- EdgeModeValidation.cs
- DelegatedStream.cs
- RegularExpressionValidator.cs
- MetabaseSettings.cs
- WebSysDescriptionAttribute.cs
- TextDecorations.cs
- RuntimeComponentFilter.cs
- AppDomain.cs
- MatrixUtil.cs
- InputScopeNameConverter.cs
- Interlocked.cs
- CounterSet.cs
- NamedPipeAppDomainProtocolHandler.cs
- DBSchemaRow.cs
- DeferredSelectedIndexReference.cs
- EntityClientCacheKey.cs
- LogStore.cs
- EventDescriptor.cs
- ChildDocumentBlock.cs
- DrawItemEvent.cs
- ParallelTimeline.cs
- TemplateColumn.cs
- State.cs
- PenLineJoinValidation.cs
- ChtmlMobileTextWriter.cs
- DispatcherExceptionEventArgs.cs
- SpotLight.cs
- GeometryValueSerializer.cs
- LineServices.cs
- WCFModelStrings.Designer.cs
- InternalCache.cs
- OutputCache.cs
- AsymmetricKeyExchangeFormatter.cs
- InputMethod.cs
- WebPartTransformer.cs
- DynamicRendererThreadManager.cs
- FrameDimension.cs