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
- Expression.DebuggerProxy.cs
- CodeLabeledStatement.cs
- UpdateExpressionVisitor.cs
- SwitchLevelAttribute.cs
- ConfigurationErrorsException.cs
- KnownColorTable.cs
- SourceItem.cs
- AspNetHostingPermission.cs
- SqlException.cs
- Options.cs
- SynchronizedInputProviderWrapper.cs
- RegistryHandle.cs
- IisTraceWebEventProvider.cs
- EntityContainerAssociationSetEnd.cs
- RegexNode.cs
- ControlAdapter.cs
- BitmapFrameEncode.cs
- RangeBase.cs
- MimeReflector.cs
- SamlAuthenticationClaimResource.cs
- XmlCompatibilityReader.cs
- ResourcePool.cs
- New.cs
- GenerateTemporaryAssemblyTask.cs
- OleDbSchemaGuid.cs
- Comparer.cs
- GridViewRowEventArgs.cs
- FormatterServicesNoSerializableCheck.cs
- ProfilePropertySettingsCollection.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- QueryRewriter.cs
- DefaultTraceListener.cs
- RuleSetDialog.cs
- DataGridViewElement.cs
- RowsCopiedEventArgs.cs
- PersonalizationStateQuery.cs
- Primitive.cs
- Misc.cs
- FormParameter.cs
- CachedFontFamily.cs
- ServiceBusyException.cs
- ConsumerConnectionPoint.cs
- ConvertTextFrag.cs
- UriTemplateDispatchFormatter.cs
- Console.cs
- ObjectListShowCommandsEventArgs.cs
- ValidatorCollection.cs
- ColumnHeader.cs
- TextEditorSpelling.cs
- CryptoApi.cs
- RegexWorker.cs
- XmlLanguageConverter.cs
- KeyEventArgs.cs
- QuotaThrottle.cs
- CompModSwitches.cs
- NoneExcludedImageIndexConverter.cs
- TextElementEnumerator.cs
- BitmapEffectState.cs
- LiteralControl.cs
- InputLanguageEventArgs.cs
- StringResourceManager.cs
- ManagementEventWatcher.cs
- PartDesigner.cs
- BaseAsyncResult.cs
- MaterialGroup.cs
- StrongNamePublicKeyBlob.cs
- IResourceProvider.cs
- EnterpriseServicesHelper.cs
- ComplexLine.cs
- PageContent.cs
- DATA_BLOB.cs
- ApplicationContext.cs
- XDeferredAxisSource.cs
- CompilerInfo.cs
- HttpWebRequest.cs
- AuthenticationSection.cs
- RenderingBiasValidation.cs
- BookmarkScopeHandle.cs
- PerfCounters.cs
- ProcessThread.cs
- ListBoxItemWrapperAutomationPeer.cs
- XmlAttributeOverrides.cs
- RtfControls.cs
- LocalizeDesigner.cs
- ErrorHandler.cs
- XPathDocumentBuilder.cs
- RenamedEventArgs.cs
- QueryMatcher.cs
- BasePropertyDescriptor.cs
- StrokeCollectionConverter.cs
- DataGridItemAttachedStorage.cs
- MenuItemBindingCollection.cs
- PerfCounterSection.cs
- StylusPoint.cs
- DataRowExtensions.cs
- SchemaEntity.cs
- UrlMappingCollection.cs
- UpdateManifestForBrowserApplication.cs
- IssuanceLicense.cs
- PostBackOptions.cs