Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / Documents / TextServicesDisplayAttribute.cs / 1 / TextServicesDisplayAttribute.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
//
// Description: TextServicesDisplayAttribute
//
// History:
// 08/01/2003 : [....] - Ported from dotnet tree.
//
//---------------------------------------------------------------------------
using System.Runtime.InteropServices;
using System.Windows.Threading;
using System.Collections;
using System.Diagnostics;
using System.Windows.Media;
using System.Windows.Input;
using System.Windows.Documents;
using MS.Win32;
using System;
namespace System.Windows.Documents
{
//-----------------------------------------------------
//
// TextServicesDisplayAttribute class
//
//-----------------------------------------------------
///
/// The helper class to wrap TF_DISPLAYATTRIBUTE.
///
internal class TextServicesDisplayAttribute
{
//------------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
internal TextServicesDisplayAttribute(UnsafeNativeMethods.TF_DISPLAYATTRIBUTE attr)
{
_attr = attr;
}
//------------------------------------------------------
//
// Internal Method
//
//------------------------------------------------------
///
/// Check if this is empty.
///
internal bool IsEmptyAttribute()
{
if (_attr.crText.type != UnsafeNativeMethods.TF_DA_COLORTYPE.TF_CT_NONE ||
_attr.crBk.type != UnsafeNativeMethods.TF_DA_COLORTYPE.TF_CT_NONE ||
_attr.crLine.type != UnsafeNativeMethods.TF_DA_COLORTYPE.TF_CT_NONE ||
_attr.lsStyle != UnsafeNativeMethods.TF_DA_LINESTYLE.TF_LS_NONE)
return false;
return true;
}
///
/// Apply the display attribute to to the given range.
///
internal void Apply(ITextPointer start, ITextPointer end)
{
//
//
#if NOT_YET
if (_attr.crText.type != UnsafeNativeMethods.TF_DA_COLORTYPE.TF_CT_NONE)
{
}
if (_attr.crBk.type != UnsafeNativeMethods.TF_DA_COLORTYPE.TF_CT_NONE)
{
}
if (_attr.lsStyle != UnsafeNativeMethods.TF_DA_LINESTYLE.TF_LS_NONE)
{
}
#endif
}
///
/// Convert TF_DA_COLOR to Color.
///
internal static Color GetColor(UnsafeNativeMethods.TF_DA_COLOR dacolor)
{
if (dacolor.type == UnsafeNativeMethods.TF_DA_COLORTYPE.TF_CT_SYSCOLOR)
{
return GetSystemColor(dacolor.indexOrColorRef);
}
else if (dacolor.type == UnsafeNativeMethods.TF_DA_COLORTYPE.TF_CT_COLORREF)
{
int color = dacolor.indexOrColorRef;
uint argb = (uint)FromWin32Value(color);
return Color.FromArgb((byte)((argb&0xff000000)>>24), (byte)((argb&0x00ff0000)>>16),(byte)((argb&0x0000ff00)>>8), (byte)(argb&0x000000ff));
}
return Color.FromArgb(0xff,0,0,0);
}
///
/// Line color of the composition line draw
///
internal Color LineColor
{
get
{
return GetColor(_attr.crLine);
}
}
///
/// Line style of the composition line draw
///
internal UnsafeNativeMethods.TF_DA_LINESTYLE LineStyle
{
get
{
return _attr.lsStyle;
}
}
///
/// Line bold of the composition line draw
///
internal bool IsBoldLine
{
get
{
return _attr.fBoldLine;
}
}
/**
* Shift count and bit mask for A, R, G, B components
*/
private const int AlphaShift = 24;
private const int RedShift = 16;
private const int GreenShift = 8;
private const int BlueShift = 0;
private const int Win32RedShift = 0;
private const int Win32GreenShift = 8;
private const int Win32BlueShift = 16;
private static int Encode(int alpha, int red, int green, int blue)
{
return red << RedShift | green << GreenShift | blue << BlueShift | alpha << AlphaShift;
}
private static int FromWin32Value(int value)
{
return Encode(255,
(value >> Win32RedShift) & 0xFF,
(value >> Win32GreenShift) & 0xFF,
(value >> Win32BlueShift) & 0xFF);
}
///
/// Query for system colors.
///
/// Same parameter as Win32's GetSysColor
/// The system color.
private static Color GetSystemColor(int index)
{
uint argb;
int color = SafeNativeMethods.GetSysColor(index);
argb = (uint)FromWin32Value(color);
return Color.FromArgb((byte)((argb&0xff000000)>>24), (byte)((argb&0x00ff0000)>>16),(byte)((argb&0x0000ff00)>>8), (byte)(argb&0x000000ff));
}
//-----------------------------------------------------
//
// Private Field
//
//------------------------------------------------------
private UnsafeNativeMethods.TF_DISPLAYATTRIBUTE _attr;
}
}
// 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
- CompositeActivityTypeDescriptor.cs
- RegexReplacement.cs
- XsltOutput.cs
- ProfileProvider.cs
- SafeMILHandle.cs
- HttpListenerResponse.cs
- FeatureAttribute.cs
- CancelEventArgs.cs
- DataGridViewAdvancedBorderStyle.cs
- unsafeIndexingFilterStream.cs
- CodeGen.cs
- _NestedMultipleAsyncResult.cs
- recordstate.cs
- ComNativeDescriptor.cs
- ComAdminInterfaces.cs
- DataTableReader.cs
- Parallel.cs
- ConfigurationValues.cs
- Compiler.cs
- RegisteredExpandoAttribute.cs
- EncodingTable.cs
- Hex.cs
- NativeMethodsOther.cs
- ExtensionMethods.cs
- GridViewAutomationPeer.cs
- Suspend.cs
- Error.cs
- ApplicationServiceHelper.cs
- TreeNodeClickEventArgs.cs
- XmlSchemaAttributeGroupRef.cs
- PropertyStore.cs
- Wizard.cs
- Number.cs
- XmlDataSourceView.cs
- WebPartConnectionsCloseVerb.cs
- XPathDescendantIterator.cs
- GridViewAutoFormat.cs
- Mapping.cs
- MethodExpr.cs
- ProgressBar.cs
- MetadataArtifactLoaderCompositeFile.cs
- TraceUtility.cs
- CLSCompliantAttribute.cs
- SecurityCriticalDataForSet.cs
- HScrollBar.cs
- VoiceInfo.cs
- LoadedEvent.cs
- LicenseContext.cs
- PathSegment.cs
- DescendantOverDescendantQuery.cs
- StatusCommandUI.cs
- util.cs
- GridViewHeaderRowPresenter.cs
- EpmCustomContentDeSerializer.cs
- EncoderFallback.cs
- MouseEventArgs.cs
- InvalidateEvent.cs
- UriSection.cs
- SpellerStatusTable.cs
- ReversePositionQuery.cs
- ClosureBinding.cs
- latinshape.cs
- LeaseManager.cs
- BaseParser.cs
- ASCIIEncoding.cs
- DataService.cs
- SqlConnectionHelper.cs
- SafeTimerHandle.cs
- DataGridViewUtilities.cs
- CompositeDataBoundControl.cs
- WebBrowserNavigatingEventHandler.cs
- Translator.cs
- RegisteredScript.cs
- WorkflowTimerService.cs
- WebPartConnectionsConfigureVerb.cs
- DataListItemEventArgs.cs
- OLEDB_Enum.cs
- XmlJsonReader.cs
- SqlNotificationRequest.cs
- FigureParagraph.cs
- KeyInstance.cs
- CellQuery.cs
- EmptyWorkItem.cs
- EnumCodeDomSerializer.cs
- WeakReferenceKey.cs
- DataObjectFieldAttribute.cs
- WebAdminConfigurationHelper.cs
- EntityDesignerUtils.cs
- DefaultSettingsSection.cs
- DependencyPropertyDescriptor.cs
- ImplicitInputBrush.cs
- TextRangeAdaptor.cs
- Rect3DValueSerializer.cs
- HelpKeywordAttribute.cs
- SystemWebCachingSectionGroup.cs
- XmlQueryContext.cs
- KeyFrames.cs
- Decoder.cs
- pingexception.cs
- webproxy.cs