Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

178 lines
4.8 KiB

// cutil.h
//
// file to put misc utility classes implementation
//
#ifndef CUTIL_H
#define CUTIL_H
#include "private.h"
#include "regimx.h"
class CDocStatus
{
public:
CDocStatus(ITfContext *pic)
{
cpic = pic;
}
BOOL IsReadOnly()
{
TF_STATUS ts;
HRESULT hr = cpic->GetStatus(&ts);
if (S_OK == hr)
{
if (TF_SD_READONLY & ts.dwDynamicFlags)
return TRUE;
}
return FALSE;
}
private:
CComPtr<ITfContext> cpic;
};
class __declspec(novtable) CLangProfileUtil : public ITfFnLangProfileUtil
{
public:
CLangProfileUtil()
{
m_fProfileInit = FALSE;
m_langidDefault = 0xFFFF;
m_uiUseSAPIForLangDetection = 0;
}
virtual ~CLangProfileUtil();
// ITfFnLangProfileUtil method
STDMETHODIMP RegisterActiveProfiles(void);
STDMETHODIMP IsProfileAvailableForLang(LANGID langid, BOOL *pfAvailable);
// ITfFunction method
STDMETHODIMP GetDisplayName(BSTR *pbstrName);
// private APIs
HRESULT _EnsureProfiles(BOOL fRegister, BOOL *pfEnabled = NULL);
HRESULT _RegisterAProfile(HINSTANCE hInst, REFCLSID rclsid, const REGTIPLANGPROFILE *plp);
HRESULT _GetProfileLangID(LANGID *plangid);
static const REGTIPLANGPROFILE *_GetSPTIPProfileForLang(LANGID langid);
virtual BOOL _DictationEnabled(LANGID *plangidRequested = NULL);
BOOL _IsDictationActiveForLang(LANGID langidReq);
BOOL _IsDictationEnabledForLang(LANGID langidReq, BOOL fUseDefault = FALSE);
BOOL _IsDictationEnabledForLangSAPI(LANGID langidReq, BOOL fUseDefault);
LONG _IsDictationEnabledForLangInReg(LANGID langidReq, BOOL fUseDefault, BOOL *pfEnabled);
BOOL _IsAnyProfileEnabled();
BOOL _fUseSAPIForLanguageDetection(void);
BOOL _fUserRemovedProfile(void);
BOOL _fUserInitializedProfile(void);
BOOL _SetUserInitializedProfile(void);
void _ResetDefaultLang() {m_langidDefault = 0xFFFF; }
LANGID _GetLangIdFromRecognizerToken(HKEY hkeyToken);
CComPtr<ITfInputProcessorProfiles> m_cpProfileMgr;
typedef struct {
DWORD langid;
DWORD dwStat;
DWORD lidOverRidden;
} LANGPROFILESTAT ;
BOOL m_fProfileInit;
LANGID m_langidDefault;
UINT m_uiUseSAPIForLangDetection;
//
// this is an array of installed recognizers in their langid
//
CStructArray<LANGID> m_langidRecognizers;
};
typedef enum
{
DA_COLOR_AWARE,
DA_COLOR_UNAWARE
} ColorType;
class __declspec(novtable) CColorUtil
{
public:
CColorUtil() {m_cBitsPixelScreen = 0; m_fHighContrast =0;}
COLORREF col( int r1, COLORREF col1, int r2, COLORREF col2 )
{
int sum = r1 + r2;
Assert( sum == 10 || sum == 100 || sum == 1000 );
int r = (r1 * GetRValue(col1) + r2 * GetRValue(col2) + sum/2) / sum;
int g = (r1 * GetGValue(col1) + r2 * GetGValue(col2) + sum/2) / sum;
int b = (r1 * GetBValue(col1) + r2 * GetBValue(col2) + sum/2) / sum;
return RGB( r, g, b );
}
COLORREF GetNewLookColor(ColorType ct = DA_COLOR_AWARE)
{
InitColorInfo();
COLORREF cr;
if (m_cBitsPixelScreen < 8 || m_fHighContrast == TRUE)
{
cr = GetSysColor( COLOR_HIGHLIGHT );
}
else if (ct == DA_COLOR_AWARE)
{
cr = col( 50, GetSysColor( COLOR_HIGHLIGHT ),
50, GetSysColor( COLOR_WINDOW ) );
}
else
{
cr = col( 80, GetSysColor( COLOR_INFOBK ),
20, GetSysColor(COLOR_3DSHADOW) );
}
return cr;
}
void InitColorInfo(void)
{
// do nothing if it's initialized already
if (m_cBitsPixelScreen) return;
HIGHCONTRAST hicntr = {0};
HDC hDC = CreateDC("DISPLAY", NULL, NULL, NULL);
// device caps
m_cBitsPixelScreen = GetDeviceCaps( hDC, BITSPIXEL );
// system paramater info
hicntr.cbSize = sizeof(HIGHCONTRAST);
SystemParametersInfo( SPI_GETHIGHCONTRAST, sizeof(HIGHCONTRAST), &hicntr, 0 );
m_fHighContrast = ((hicntr.dwFlags & HCF_HIGHCONTRASTON) != 0);
DeleteDC( hDC );
}
COLORREF GetTextColor()
{
return m_fHighContrast ? GetSysColor(COLOR_HIGHLIGHTTEXT) : GetSysColor(COLOR_WINDOWTEXT);
}
private:
int m_cBitsPixelScreen;
BOOL m_fHighContrast;
};
extern const GUID c_guidProfileBogus;
extern const GUID c_guidProfile0 ;
extern const GUID c_guidProfile1 ;
extern const GUID c_guidProfile2 ;
extern const REGTIPLANGPROFILE c_rgProfiles[];
#endif // CUTIL_H