228 lines
6.0 KiB
C++
228 lines
6.0 KiB
C++
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|
|
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
|
// PARTICULAR PURPOSE.
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved
|
|
|
|
#include "Private.h"
|
|
#include "globals.h"
|
|
#include "DisplayAttributeInfo.h"
|
|
#include "TfInputProcessorProfile.h"
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// The registry key and values
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
// the registry values of the custmized display attributes
|
|
const WCHAR CDisplayAttributeInfoInput::_s_szValueName[] = L"DisplayAttributeInput";
|
|
const WCHAR CDisplayAttributeInfoConverted::_s_szValueName[] = L"DisplayAttributeConverted";
|
|
|
|
// The descriptions
|
|
const WCHAR CDisplayAttributeInfoInput::_s_szDescription[] = L"Sample IME Text Service Display Attribute Input";
|
|
const WCHAR CDisplayAttributeInfoConverted::_s_szDescription[] = L"Sample IME Text Service Display Attribute Converted";
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// DisplayAttribute
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
const TF_DISPLAYATTRIBUTE CDisplayAttributeInfoInput::_s_DisplayAttribute =
|
|
{
|
|
{ TF_CT_COLORREF, RGB(0, 103,206) }, // text color
|
|
{ TF_CT_NONE, 0 }, // background color (TF_CT_NONE => app default)
|
|
TF_LS_DOT, // underline style
|
|
FALSE, // underline boldness
|
|
{ TF_CT_COLORREF, RGB(0, 103,206) }, // underline color
|
|
TF_ATTR_INPUT // attribute info
|
|
};
|
|
|
|
const TF_DISPLAYATTRIBUTE CDisplayAttributeInfoConverted::_s_DisplayAttribute =
|
|
{
|
|
{ TF_CT_COLORREF, RGB(255, 255, 255) }, // text color
|
|
{ TF_CT_COLORREF, RGB( 0, 255, 255) }, // background color (TF_CT_NONE => app default)
|
|
TF_LS_NONE, // underline style
|
|
FALSE, // underline boldness
|
|
{ TF_CT_NONE, 0 }, // underline color
|
|
TF_ATTR_TARGET_CONVERTED // attribute info
|
|
};
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// ctor
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
CDisplayAttributeInfo::CDisplayAttributeInfo()
|
|
{
|
|
DllAddRef();
|
|
|
|
_pguid = nullptr;
|
|
_pDisplayAttribute = nullptr;
|
|
_pValueName = nullptr;
|
|
|
|
_refCount = 1;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// dtor
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
CDisplayAttributeInfo::~CDisplayAttributeInfo()
|
|
{
|
|
DllRelease();
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// QueryInterface
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
STDAPI CDisplayAttributeInfo::QueryInterface(REFIID riid, _Outptr_ void **ppvObj)
|
|
{
|
|
if (ppvObj == nullptr)
|
|
return E_INVALIDARG;
|
|
|
|
*ppvObj = nullptr;
|
|
|
|
if (IsEqualIID(riid, IID_IUnknown) ||
|
|
IsEqualIID(riid, IID_ITfDisplayAttributeInfo))
|
|
{
|
|
*ppvObj = (ITfDisplayAttributeInfo *)this;
|
|
}
|
|
|
|
if (*ppvObj)
|
|
{
|
|
AddRef();
|
|
return S_OK;
|
|
}
|
|
|
|
return E_NOINTERFACE;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// AddRef
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
ULONG CDisplayAttributeInfo::AddRef(void)
|
|
{
|
|
return ++_refCount;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Release
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
ULONG CDisplayAttributeInfo::Release(void)
|
|
{
|
|
LONG cr = --_refCount;
|
|
|
|
assert(_refCount >= 0);
|
|
|
|
if (_refCount == 0)
|
|
{
|
|
delete this;
|
|
}
|
|
|
|
return cr;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// ITfDisplayAttributeInfo::GetGUID
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
STDAPI CDisplayAttributeInfo::GetGUID(_Out_ GUID *pguid)
|
|
{
|
|
if (pguid == nullptr)
|
|
return E_INVALIDARG;
|
|
|
|
if (_pguid == nullptr)
|
|
return E_FAIL;
|
|
|
|
*pguid = *_pguid;
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// ITfDisplayAttributeInfo::GetDescription
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
STDAPI CDisplayAttributeInfo::GetDescription(_Out_ BSTR *pbstrDesc)
|
|
{
|
|
BSTR tempDesc;
|
|
|
|
if (pbstrDesc == nullptr)
|
|
{
|
|
return E_INVALIDARG;
|
|
}
|
|
|
|
*pbstrDesc = nullptr;
|
|
|
|
if ((tempDesc = SysAllocString(_pDescription)) == nullptr)
|
|
{
|
|
return E_OUTOFMEMORY;
|
|
}
|
|
|
|
*pbstrDesc = tempDesc;
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// ITfDisplayAttributeInfo::GetAttributeInfo
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
STDAPI CDisplayAttributeInfo::GetAttributeInfo(_Out_ TF_DISPLAYATTRIBUTE *ptfDisplayAttr)
|
|
{
|
|
if (ptfDisplayAttr == nullptr)
|
|
{
|
|
return E_INVALIDARG;
|
|
}
|
|
|
|
// return the default display attribute.
|
|
*ptfDisplayAttr = *_pDisplayAttribute;
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// ITfDisplayAttributeInfo::SetAttributeInfo
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
STDAPI CDisplayAttributeInfo::SetAttributeInfo(_In_ const TF_DISPLAYATTRIBUTE *ptfDisplayAttr)
|
|
{
|
|
ptfDisplayAttr;
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// ITfDisplayAttributeInfo::Reset
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
STDAPI CDisplayAttributeInfo::Reset()
|
|
{
|
|
return SetAttributeInfo(_pDisplayAttribute);
|
|
}
|