Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / 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 ([....])
//
//-----------------------------------------------------------------------
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
- XmlSchemaSequence.cs
- SiteMapNodeItemEventArgs.cs
- StorageFunctionMapping.cs
- PersistenceMetadataNamespace.cs
- ObjectParameter.cs
- ValidatorCollection.cs
- ConfigXmlText.cs
- WebBrowserNavigatedEventHandler.cs
- DeviceSpecific.cs
- AstTree.cs
- OperationInfoBase.cs
- AppliedDeviceFiltersEditor.cs
- PointLightBase.cs
- Single.cs
- ListView.cs
- ObjectItemCollectionAssemblyCacheEntry.cs
- RequestCachePolicyConverter.cs
- Drawing.cs
- TimeStampChecker.cs
- StrokeFIndices.cs
- CodeTypeMemberCollection.cs
- RegistryKey.cs
- TimerElapsedEvenArgs.cs
- XmlDataSourceDesigner.cs
- SystemIPInterfaceStatistics.cs
- EntityViewGenerationConstants.cs
- Button.cs
- Adorner.cs
- XmlCharCheckingWriter.cs
- DataGridViewButtonColumn.cs
- WaitHandle.cs
- BindingBase.cs
- MessageQueueCriteria.cs
- QilReplaceVisitor.cs
- StreamAsIStream.cs
- NavigationPropertyEmitter.cs
- CLRBindingWorker.cs
- ListViewTableRow.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- MemoryStream.cs
- Brush.cs
- TemplateControlParser.cs
- FieldToken.cs
- VirtualDirectoryMappingCollection.cs
- DeclaredTypeElement.cs
- APCustomTypeDescriptor.cs
- MouseButtonEventArgs.cs
- ManifestResourceInfo.cs
- AssertFilter.cs
- TreeViewImageGenerator.cs
- Utils.cs
- ChannelTerminatedException.cs
- ParallelActivityDesigner.cs
- MissingMemberException.cs
- DictionaryManager.cs
- XpsPartBase.cs
- ActiveXHost.cs
- DefaultObjectMappingItemCollection.cs
- HttpClientCertificate.cs
- Matrix3DConverter.cs
- PkcsUtils.cs
- FilterableAttribute.cs
- DoubleLinkList.cs
- EdmToObjectNamespaceMap.cs
- DatePicker.cs
- DecimalAnimation.cs
- IDReferencePropertyAttribute.cs
- IsolatedStorageFileStream.cs
- ViewStateAttachedPropertyFeature.cs
- Policy.cs
- ReadOnlyNameValueCollection.cs
- ModelMemberCollection.cs
- PlainXmlDeserializer.cs
- RadioButton.cs
- HtmlInputHidden.cs
- DoubleAnimationUsingPath.cs
- DateTimeFormat.cs
- ComEventsInfo.cs
- DbConnectionFactory.cs
- SplineQuaternionKeyFrame.cs
- FormsAuthenticationConfiguration.cs
- GeometryCombineModeValidation.cs
- Interlocked.cs
- VisualStyleInformation.cs
- SQLDouble.cs
- RoutedPropertyChangedEventArgs.cs
- TransformerConfigurationWizardBase.cs
- SiblingIterators.cs
- CompatibleComparer.cs
- ISAPIRuntime.cs
- HtmlControl.cs
- DataList.cs
- OleDbConnection.cs
- OpenTypeLayout.cs
- BackStopAuthenticationModule.cs
- SafeNativeMethods.cs
- WmlValidationSummaryAdapter.cs
- HtmlControl.cs
- WindowsListViewItem.cs
- TextModifier.cs