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 / Shaping / CharacterShapingProperties.cs / 1 / CharacterShapingProperties.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
//
// Description: CharacterShapingProperties class
//
// History:
// 10/26/2004: Garyyang Created the file
// 1/25/2004: garyyang Move it to internal namespace
//
//---------------------------------------------------------------------------
using System.Runtime.InteropServices;
namespace MS.Internal.Shaping
{
///
/// Properties per character
///
[StructLayout(LayoutKind.Sequential)]
internal struct CharacterShapingProperties
{
///
/// Constructor
///
/// reserved bits used by shaping engine
/// flag indicating whether the code point can be glyphed alone
internal CharacterShapingProperties(byte engineReserved, bool canGlyphAlone)
{
_value = (canGlyphAlone ? CanGlyphAloneFlag : (ushort) 0);
_value |= engineReserved;
}
///
/// Get or Set CanGlyphAlone flag for the charactrer
///
///
internal bool CanGlyphAlone
{
get
{
return (_value & CanGlyphAloneFlag) != 0;
}
set
{
if (value)
{
_value |= CanGlyphAloneFlag;
}
else
{
_value &= (CanGlyphAloneFlag ^ 0xFFFF);
}
}
}
///
/// Get or Set bits reserved for shaping engine use
///
///
internal byte EngineReserved
{
get
{
return (byte)(_value & EngineReservedValueMask);
}
set
{
_value = (ushort)((_value & (EngineReservedValueMask ^ 0xFFFF)) | value);
}
}
///
/// Compares two CharacterShapingProperties for equality.
///
/// Returns true if the arguments have identical properties, false if not.
public static bool operator ==(
CharacterShapingProperties left,
CharacterShapingProperties right)
{
return left._value == right._value;
}
///
/// Compares two CharacterShapingProperties for inequality.
///
/// Returns true if the arguments are not equal, false if they are equal.
public static bool operator !=(
CharacterShapingProperties left,
CharacterShapingProperties right)
{
return !(left == right);
}
///
/// Compares the specified object with this.
///
/// Returns true if the specified object is a CharacterShapingProperties with the same
/// value as this object.
public override bool Equals(object o)
{
if (o != null && o is CharacterShapingProperties)
{
return (CharacterShapingProperties)o == this;
}
else
{
return false;
}
}
///
/// Returns a hash code based on the property flags.
///
public override int GetHashCode()
{
return _value;
}
private ushort _value;
// CanGlyphAloneFlag is store at the 9th bit
private const ushort CanGlyphAloneFlag = 0x0100;
private const ushort EngineReservedValueMask = 0x00FF;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
//
// Description: CharacterShapingProperties class
//
// History:
// 10/26/2004: Garyyang Created the file
// 1/25/2004: garyyang Move it to internal namespace
//
//---------------------------------------------------------------------------
using System.Runtime.InteropServices;
namespace MS.Internal.Shaping
{
///
/// Properties per character
///
[StructLayout(LayoutKind.Sequential)]
internal struct CharacterShapingProperties
{
///
/// Constructor
///
/// reserved bits used by shaping engine
/// flag indicating whether the code point can be glyphed alone
internal CharacterShapingProperties(byte engineReserved, bool canGlyphAlone)
{
_value = (canGlyphAlone ? CanGlyphAloneFlag : (ushort) 0);
_value |= engineReserved;
}
///
/// Get or Set CanGlyphAlone flag for the charactrer
///
///
internal bool CanGlyphAlone
{
get
{
return (_value & CanGlyphAloneFlag) != 0;
}
set
{
if (value)
{
_value |= CanGlyphAloneFlag;
}
else
{
_value &= (CanGlyphAloneFlag ^ 0xFFFF);
}
}
}
///
/// Get or Set bits reserved for shaping engine use
///
///
internal byte EngineReserved
{
get
{
return (byte)(_value & EngineReservedValueMask);
}
set
{
_value = (ushort)((_value & (EngineReservedValueMask ^ 0xFFFF)) | value);
}
}
///
/// Compares two CharacterShapingProperties for equality.
///
/// Returns true if the arguments have identical properties, false if not.
public static bool operator ==(
CharacterShapingProperties left,
CharacterShapingProperties right)
{
return left._value == right._value;
}
///
/// Compares two CharacterShapingProperties for inequality.
///
/// Returns true if the arguments are not equal, false if they are equal.
public static bool operator !=(
CharacterShapingProperties left,
CharacterShapingProperties right)
{
return !(left == right);
}
///
/// Compares the specified object with this.
///
/// Returns true if the specified object is a CharacterShapingProperties with the same
/// value as this object.
public override bool Equals(object o)
{
if (o != null && o is CharacterShapingProperties)
{
return (CharacterShapingProperties)o == this;
}
else
{
return false;
}
}
///
/// Returns a hash code based on the property flags.
///
public override int GetHashCode()
{
return _value;
}
private ushort _value;
// CanGlyphAloneFlag is store at the 9th bit
private const ushort CanGlyphAloneFlag = 0x0100;
private const ushort EngineReservedValueMask = 0x00FF;
}
}
// 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
- Timer.cs
- RequestCachingSection.cs
- HtmlTextArea.cs
- BooleanSwitch.cs
- AutomationEventArgs.cs
- ColorDialog.cs
- HostingEnvironmentWrapper.cs
- ObjectListCommandCollection.cs
- AnchorEditor.cs
- GenericTextProperties.cs
- SEHException.cs
- CachedFontFamily.cs
- LinqDataSourceInsertEventArgs.cs
- RegexNode.cs
- ListQueryResults.cs
- ExtensionDataReader.cs
- SkinBuilder.cs
- DBSqlParserTable.cs
- UnitySerializationHolder.cs
- PolicyChain.cs
- OdbcParameter.cs
- PkcsUtils.cs
- InkPresenterAutomationPeer.cs
- _AuthenticationState.cs
- ConfigurationPropertyAttribute.cs
- WebDisplayNameAttribute.cs
- RawStylusInputReport.cs
- safelink.cs
- ScriptControl.cs
- InlinedAggregationOperatorEnumerator.cs
- MailSettingsSection.cs
- SocketException.cs
- TextTreeUndo.cs
- TemporaryBitmapFile.cs
- TextEmbeddedObject.cs
- SourceFileBuildProvider.cs
- ExcCanonicalXml.cs
- LocalValueEnumerator.cs
- UndirectedGraph.cs
- GeneralTransform3DGroup.cs
- ActiveXHost.cs
- RequestUriProcessor.cs
- WebResourceAttribute.cs
- XmlDocument.cs
- StandardCommands.cs
- CounterCreationDataCollection.cs
- TPLETWProvider.cs
- _SslSessionsCache.cs
- UIElementParaClient.cs
- ValueTypeFixupInfo.cs
- cookieexception.cs
- WindowsComboBox.cs
- CompositeFontInfo.cs
- BinaryConverter.cs
- ObjectPersistData.cs
- CodeSnippetCompileUnit.cs
- Currency.cs
- TextBoxBase.cs
- DummyDataSource.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- DataSourceControl.cs
- ServiceObjectContainer.cs
- TrackingMemoryStreamFactory.cs
- InfiniteTimeSpanConverter.cs
- TextWriter.cs
- XmlAttributeCache.cs
- PrintPreviewControl.cs
- VisualStyleInformation.cs
- AssemblyBuilder.cs
- AssemblyBuilder.cs
- WebBrowserSiteBase.cs
- ExtenderProvidedPropertyAttribute.cs
- DetailsViewRow.cs
- PolicyDesigner.cs
- EmptyQuery.cs
- codemethodreferenceexpression.cs
- HatchBrush.cs
- Style.cs
- ImageConverter.cs
- DrawingAttributeSerializer.cs
- XmlSchemaElement.cs
- TextInfo.cs
- NumberFunctions.cs
- InstanceData.cs
- SplitterDesigner.cs
- Knowncolors.cs
- RequestCacheManager.cs
- formatter.cs
- Timer.cs
- ImplicitInputBrush.cs
- QueryCacheEntry.cs
- RewritingSimplifier.cs
- ScriptingJsonSerializationSection.cs
- BindingObserver.cs
- CollectionViewSource.cs
- SharedStatics.cs
- ManifestBasedResourceGroveler.cs
- SafeFreeMibTable.cs
- ListBoxChrome.cs
- CaseKeyBox.ViewModel.cs