Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / textformatting / CharacterHit.cs / 1305600 / CharacterHit.cs
//----------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Description: The CharacterHit structure represents information about a character hit
// within a glyph run - the index of the first character that got hit and the information
// about leading or trailing edge.
//
// See spec at http://team/sites/Avalon/Specs/Glyph%20Run%20hit%20testing%20and%20caret%20placement%20API.htm#CharacterHit
//
//
// History:
// 11/30/2004 : mleonov - Created
//
//---------------------------------------------------------------------------
#region Using directives
using System;
#endregion
namespace System.Windows.Media.TextFormatting
{
///
/// The CharacterHit structure represents information about a character hit within a glyph run
/// - the index of the first character that got hit and the information about leading or trailing edge.
///
public struct CharacterHit : IEquatable
{
///
/// Constructs a new CharacterHit structure.
///
/// Index of the first character that got hit.
/// In case of leading edge this value is 0.
/// In case of trailing edge this value is the number of codepoints until the next valid caret position.
public CharacterHit(int firstCharacterIndex, int trailingLength)
{
_firstCharacterIndex = firstCharacterIndex;
_trailingLength = trailingLength;
}
///
/// Index of the first character that got hit.
///
public int FirstCharacterIndex
{
get
{
return _firstCharacterIndex;
}
}
///
/// In case of leading edge this value is 0.
/// In case of trailing edge this value is the number of codepoints until the next valid caret position.
///
public int TrailingLength
{
get
{
return _trailingLength;
}
}
///
/// Checks whether two character hit objects are equal.
///
/// First object to compare.
/// Second object to compare.
/// Returns true when the values of FirstCharacterIndex and TrailingLength are equal for both objects,
/// and false otherwise.
public static bool operator==(CharacterHit left, CharacterHit right)
{
return left._firstCharacterIndex == right._firstCharacterIndex &&
left._trailingLength == right._trailingLength;
}
///
/// Checks whether two character hit objects are not equal.
///
/// First object to compare.
/// Second object to compare.
/// Returns false when the values of FirstCharacterIndex and TrailingLength are equal for both objects,
/// and true otherwise.
public static bool operator!=(CharacterHit left, CharacterHit right)
{
return !(left == right);
}
///
/// Checks whether an object is equal to another character hit object.
///
/// CharacterHit object to compare with.
/// Returns true when the object is equal to the input object,
/// and false otherwise.
public bool Equals(CharacterHit obj)
{
return this == obj;
}
///
/// Checks whether an object is equal to another character hit object.
///
/// CharacterHit object to compare with.
/// Returns true when the object is equal to the input object,
/// and false otherwise.
public override bool Equals(object obj)
{
if (!(obj is CharacterHit))
return false;
return this == (CharacterHit)obj;
}
///
/// Compute hash code for this object.
///
/// A 32-bit signed integer hash code.
public override int GetHashCode()
{
return _firstCharacterIndex.GetHashCode() ^ _trailingLength.GetHashCode();
}
private int _firstCharacterIndex;
private int _trailingLength;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TemplateKey.cs
- Style.cs
- ClientBuildManager.cs
- SelectedCellsChangedEventArgs.cs
- CatalogZoneAutoFormat.cs
- PersonalizationProvider.cs
- DoubleAnimationClockResource.cs
- COM2EnumConverter.cs
- UIHelper.cs
- ConfigXmlCDataSection.cs
- ProgressBar.cs
- DBSchemaTable.cs
- SetterBase.cs
- DbConnectionPoolGroup.cs
- mansign.cs
- JournalEntry.cs
- BitVector32.cs
- Int32KeyFrameCollection.cs
- ParentUndoUnit.cs
- NetStream.cs
- ComboBoxItem.cs
- MessageSecurityOverHttp.cs
- FixedSOMLineRanges.cs
- ContextMarshalException.cs
- ErrorHandler.cs
- PathSegmentCollection.cs
- CssClassPropertyAttribute.cs
- ConditionCollection.cs
- ImageMetadata.cs
- DoubleCollectionValueSerializer.cs
- XPathMessageFilterTable.cs
- PageBorderless.cs
- UnsafeNativeMethods.cs
- BitmapMetadataEnumerator.cs
- FunctionOverloadResolver.cs
- CollectionChangeEventArgs.cs
- XmlWrappingReader.cs
- DetailsViewPagerRow.cs
- MethodRental.cs
- ParseNumbers.cs
- PostBackOptions.cs
- CodeAttributeArgumentCollection.cs
- EntityContainerRelationshipSet.cs
- mediaeventargs.cs
- FixedSOMPage.cs
- XmlAutoDetectWriter.cs
- Comparer.cs
- WebPartAddingEventArgs.cs
- _TransmitFileOverlappedAsyncResult.cs
- CategoryNameCollection.cs
- ReverseQueryOperator.cs
- StrongNameUtility.cs
- PerformanceCounterPermissionAttribute.cs
- StrongNameUtility.cs
- MimeMultiPart.cs
- Win32KeyboardDevice.cs
- TextElementAutomationPeer.cs
- UrlUtility.cs
- ProviderException.cs
- DataGridViewCheckBoxColumn.cs
- ColumnReorderedEventArgs.cs
- ProvideValueServiceProvider.cs
- PermissionRequestEvidence.cs
- SqlFactory.cs
- TemplateBindingExpression.cs
- DataGridViewRowPrePaintEventArgs.cs
- CodeSubDirectory.cs
- ImportCatalogPart.cs
- XmlSchemaObjectTable.cs
- ImageSource.cs
- Trace.cs
- _NegotiateClient.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- XmlArrayItemAttributes.cs
- RedirectionProxy.cs
- DropDownButton.cs
- PreloadHost.cs
- MsmqDecodeHelper.cs
- DataObjectSettingDataEventArgs.cs
- StyleXamlParser.cs
- CircleHotSpot.cs
- CodeSpit.cs
- SQLCharsStorage.cs
- WorkflowInstanceTerminatedRecord.cs
- ExtractorMetadata.cs
- TypePropertyEditor.cs
- ByteAnimationUsingKeyFrames.cs
- HttpPostProtocolReflector.cs
- SpinWait.cs
- HtmlElementCollection.cs
- Utils.cs
- RegionIterator.cs
- ConstructorNeedsTagAttribute.cs
- EntitySqlQueryState.cs
- Connector.xaml.cs
- RegistrySecurity.cs
- TextSchema.cs
- _ListenerAsyncResult.cs
- KeyTimeConverter.cs
- FlowDocumentScrollViewer.cs