|
|
/******************************************************************************
** I M E S H A R E . H ** ** KentU,KotaroY/MSKK ** ** ** ** With this piece of code, the client Applications will be able to refer ** ** the same TrueInline style described in the Registry. ** ** This library should allow clients to get decoration style (either color ** ** and various underlines) ** ** For underlines, applications are allowed to substitute some of ** ** predefined underlines to other predefined one. ** ** ** ** Oct./23/1995 : Start writing. ** ** Jun./19/1997 : Add new CPP interface. [KotaroY] ** ** Sep./02/1997 : Rewrite. True object-based architecture. [KotaroY] ** ** ** ******************************************************************************/
#ifndef __IMESHARE_H__
#define __IMESHARE_H__
#include <windows.h>
#ifdef IMESHARE_CPL
#include "resource.h"
#endif
#define IMECDECL __cdecl
#define IMESHAREAPI __declspec( dllimport )
typedef WORD LID;
#define UINTIMEBOGUS 0xffffffff
#define IMESATTR_MIN 0
#define IMESATTR_INPUT ATTR_INPUT
#define IMESATTR_TARGET_CONVERTED ATTR_TARGET_CONVERTED
#define IMESATTR_CONVERTED ATTR_CONVERTED
#define IMESATTR_TARGET_NOTCONVERTED ATTR_TARGET_NOTCONVERTED
#define IMESATTR_INPUT_ERROR ATTR_INPUT_ERROR
#define IMESATTR_FIXEDCONVERTED 5
#define IMESATTR_MAX 5
#define CATR (IMESATTR_MAX - IMESATTR_MIN + 1)
#define IMESTY_UL_MIN 2002
#define IMESTY_UL_NONE 2002
#define IMESTY_UL_SINGLE 2003
//OLD #define IMESTY_UL_DOUBLE 2004
#define IMESTY_UL_DOTTED 2005
#define IMESTY_UL_THICK 2006
//OLD #define IMESTY_UL_DASHLINE 2007
//OLD #define IMESTY_UL_DOTDASH 2008
//OLD #define IMESTY_UL_DOTDOTDASH 2009
//OLD #define IMESTY_UL_WAVE 2010
#define IMESTY_UL_LOWER 2011
#define IMESTY_UL_THICKLOWER 2012
#define IMESTY_UL_THICKDITHLOWER 2013
#define IMESTY_UL_DITHLOWER 2014
#define IMESTY_UL_MAX 2014
#define CIMEUL (IMESTY_UL_MAX - IMESTY_UL_MIN + 1)
//WARNING: Based on an assumption that all IDSsty definitions id are consecutive.
//Naming convention IdstyIMEShare[return type][property][subgrouping]
#define IdstyIMEShareSubText 0x0000
#define IdstyIMEShareSubBack 0x0001
#define IdstyIMEShareSubUl 0x0002
#define IdstyIMEShareFBold 0x0100
#define IdstyIMEShareFItalic 0x0200
#define IdstyIMEShareFUl 0x0300
#define IdstyIMEShareUKul 0x0400
#define IdstyIMEShareFWinCol 0x0500
#define IdstyIMEShareFFundCol 0x0600
#define IdstyIMEShareFRGBCol 0x0700
#define IdstyIMEShareFSpecCol 0x0800
#define IdstyIMEShareRGBCol 0x0900
#define IdstyIMEShareFSpecColText 0x0a00
#define IdstyIMEShareFSpecColWindow 0x0b00
#ifdef IMESHARE_CPL
#define IdstyIMEShareUSpecColId 0x0c00
#define IdstyIMEShareUWinColId 0x0d00
#define IdstyIMEShareUFundColId 0x0e00
#define IdstyIMEShareGrfSty 0x0f00
#endif // IMESHARE_CPL
#define COLOR_RGB 0 //RGB()
#define COLOR_WIN 1 //Windows' color scheme.
#define COLOR_FUND 2 //one of 16 fundamental color
#define COLOR_SPEC 3 //special color.
#ifdef IMESHARE_CPL
#define STY_PLAIN IDS_STYPLAIN
#define STY_BOLD IDS_STYBOLD
#define STY_ITALIC IDS_STYITALIC
#define IMECOL_SPEC_MIN IDS_COLAPPTEXT
#define IMECOL_APPTEXT IDS_COLAPPTEXT
#define IMECOL_APPWINDOW IDS_COLAPPWINDOW
#define IMECOL_SPEC_MAX IDS_COLAPPWINDOW + 1
#define COL_FUND_MIN IDS_COLBLACK
#define COL_BLACK IDS_COLBLACK
#define COL_BLUE IDS_COLBLUE
#define COL_CYAN IDS_COLCYAN
#define COL_GREEN IDS_COLGREEN
#define COL_MAGENTA IDS_COLMAGENTA
#define COL_RED IDS_COLRED
#define COL_YELLOW IDS_COLYELLOW
#define COL_WHITE IDS_COLWHITE
#define COL_DKBLUE IDS_COLDKBLUE
#define COL_DKCYAN IDS_COLDKCYAN
#define COL_DKGREEN IDS_COLDKGREEN
#define COL_DKMAGENTA IDS_COLDKMAGENTA
#define COL_DKRED IDS_COLDKRED
#define COL_DKYELLOW IDS_COLDKYELLOW
#define COL_DKGRAY IDS_COLDKGRAY
#define COL_LTGRAY IDS_COLLTGRAY
#define COL_FUND_MAX IDS_COLLTGRAY + 1
#define COL_WIN_MIN IDS_COLSCROLLBAR
#define COL_WIN_SCROLLBAR IDS_COLSCROLLBAR
#define COL_WIN_BACKGROUND IDS_COLBACKGROUND
#define COL_WIN_ACTIVECAPTION IDS_COLACTIVECAPTION
#define COL_WIN_INACTIVECAPTION IDS_COLINACTIVECAPTION
#define COL_WIN_MENU IDS_COLMENU
#define COL_WIN_WINDOW IDS_COLWINDOW
#define COL_WIN_WINDOWFRAME IDS_COLWINDOWFRAME
#define COL_WIN_MENUTEXT IDS_COLMENUTEXT
#define COL_WIN_WINDOWTEXT IDS_COLWINDOWTEXT
#define COL_WIN_CAPTIONTEXT IDS_COLCAPTIONTEXT
#define COL_WIN_ACTIVEBORDER IDS_COLACTIVEBORDER
#define COL_WIN_INACTIVEBORDER IDS_COLINACTIVEBORDER
#define COL_WIN_APPWORKSPACE IDS_COLAPPWORKSPACE
#define COL_WIN_HIGHLIGHT IDS_COLHIGHLIGHT
#define COL_WIN_HIGHLIGHTTEXT IDS_COLHIGHLIGHTTEXT
#define COL_WIN_BTNFACE IDS_COLBTNFACE
#define COL_WIN_BTNSHADOW IDS_COLBTNSHADOW
#define COL_WIN_GRAYTEXT IDS_COLGRAYTEXT
#define COL_WIN_BTNTEXT IDS_COLBTNTEXT
#define COL_WIN_INACTIVECAPTIONTEXT IDS_COLINACTIVECAPTIONTEXT
#define COL_WIN_SHADOW IDS_COLSHADOW
#define COL_WIN_BTNHIGHLIGHT IDS_COLBTNHIGHLIGHT
#define COL_WIN_BTNDKSHADOW IDS_COLBTNDKSHADOW
#define COL_WIN_BTNLIGHT IDS_COLBTNLIGHT
#define COL_WIN_INFOTEXT IDS_COLINFOTEXT
#define COL_WIN_INFOWINDOW IDS_COLINFOWINDOW
#define COL_WIN_MAC COL_WIN_INFOWINDOW + 1
#define RGB_BLACK (RGB( 0, 0, 0))
#define RGB_BLUE (RGB( 0, 0,255))
#define RGB_CYAN (RGB( 0,255,255))
#define RGB_GREEN (RGB( 0,255, 0))
#define RGB_MAGENTA (RGB(255, 0,255))
#define RGB_RED (RGB(255, 0, 0))
#define RGB_YELLOW (RGB(255,255, 0))
#define RGB_WHITE (RGB(255,255,255))
#define RGB_DKBLUE (RGB( 0, 0,127))
#define RGB_DKCYAN (RGB( 0,127,127))
#define RGB_DKGREEN (RGB( 0,127, 0))
#define RGB_DKMAGENTA (RGB(127, 0,127))
#define RGB_DKRED (RGB(127, 0, 0))
#define RGB_DKYELLOW (RGB(127,127, 0))
#define RGB_DKGRAY (RGB(127,127,127))
#define RGB_LTGRAY (RGB(192,192,192))
#endif // IMESHARE_CPL
typedef struct { union { UINT grfsty; struct { UINT fBold:1; UINT fItalic:1; UINT fUl:1; UINT idUl:(sizeof(UINT) * 8 - 3); }; }; } GRFSTY;
#ifdef __cplusplus
class CIMEShare{ public: virtual void IMECDECL CustomizeIMEShare()=0; virtual BOOL IMECDECL FSupportSty(UINT sty, UINT styAltered)=0; virtual LID IMECDECL LidSetLid(LID lid)=0; virtual LID IMECDECL LidGetLid(void)=0; virtual DWORD IMECDECL DwGetIMEStyle(const UINT attr, const UINT idsty)=0; virtual BOOL IMECDECL FDeleteIMEShare(void)=0; virtual DWORD IMECDECL DwGetIMEStyleCpl(const UINT attr, const UINT idsty)=0; virtual BOOL IMECDECL FSetIMEStyleCpl(const UINT attr, const UINT idsty, DWORD dwval)=0; virtual BOOL IMECDECL FSaveIMEShareCpl(void)=0; };
#else //!__cplusplus
typedef struct _CIMEShare CIMEShare;
typedef struct _CIMEShareVtbl{ void (IMECDECL *CustomizeIMEShare)(CIMEShare *This); BOOL (IMECDECL *FSupportSty)(CIMEShare *This, UINT sty, UINT styAlered); unsigned short (IMECDECL *LidSetLid)(CIMEShare *This, unsigned short lid); unsigned short (IMECDECL *LidGetLid)(CIMEShare *This); DWORD (IMECDECL *DwGetIMEStyle)(CIMEShare *This, UINT attr, UINT idsty); BOOL (IMECDECL *FDeleteIMEShare)(CIMEShare *This);
DWORD (IMECDECL *DwGetIMEStyleCpl)(CIMEShare *This, UINT attr, UINT idsty); BOOL (IMECDECL *FSetIMEStyleCpl)(CIMEShare *This, UINT attr, UINT idsty, DWORD dwVal); BOOL (IMECDECL *FSaveIMEShareCpl)(CIMEShare *This); } CIMEShareVtbl;
typedef struct _CIMEShare{ const CIMEShareVtbl *lpVtbl; } CIMEShare;
#endif //__cplusplus
#ifdef __cplusplus
extern "C"{ #endif
CIMEShare * IMECDECL PIMEShareCreate(); typedef CIMEShare * (IMECDECL FNPIMESHARECREATE)(void); #ifdef __cplusplus
} #endif
#ifdef OBSOLETE
typedef struct { UINT colorId; union { COLORREF rgb; UINT colorWin; UINT colorSpec; UINT colorFund; }; } IMECOLORSTY;
typedef struct { union { GRFSTY grfsty; struct { UINT fBold:1; UINT fItalic:1; UINT fUl:1; UINT idUl:(sizeof(UINT) * 8 - 3); }; };
union { IMECOLORSTY colorstyText; struct { UINT colorIdText; union { COLORREF rgbText; UINT colorWinText; UINT colorSpecText; UINT colorFundText; }; }; };
union { IMECOLORSTY colorstyBack; struct { UINT colorIdBack; union { COLORREF rgbBack; UINT colorWinBack; UINT colorSpecBack; UINT colorFundBack; }; }; };
union { IMECOLORSTY colorstyUl; struct { UINT colorIdUl; union { COLORREF rgbUl; UINT colorWinUl; UINT colorSpecUl; UINT colorFundUl; }; }; }; } IMESTYLE;
#ifdef __cplusplus
extern "C"{ #endif
//Functions
#if 0 // no need to redefine DllMain.
#ifndef PEGASUS
IMESHAREAPI BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved); #endif
#endif
IMESHAREAPI BOOL IMECDECL FInitIMEShare(); IMESHAREAPI void IMECDECL CustomizeIMEShare(); IMESHAREAPI void IMECDECL EndIMEShare();
// Multilingual support
LID IMECDECL LidGetLid(void); LID IMECDECL LidSetLid(LID NewValue);
//Refresh notify support
IMESHAREAPI BOOL IMECDECL FRefreshStyle();
//substitution
IMESHAREAPI BOOL IMECDECL FSupportSty(UINT sty, UINT styAltered);
//style handling
IMESHAREAPI const IMESTYLE * IMECDECL PIMEStyleFromAttr(const UINT attr); IMESHAREAPI const IMECOLORSTY * IMECDECL PColorStyleTextFromIMEStyle(const IMESTYLE * pimestyle); IMESHAREAPI const IMECOLORSTY * IMECDECL PColorStyleBackFromIMEStyle(const IMESTYLE * pimestyle); #define PIMESTY(x) (PIMEStyleFromAttr(x))
#define PTEXTIMECOL(x) (PColorStyleTextFromIMEStyle(PIMESTY(x)))
#define PBACKIMECOL(x) (PColorStyleBackFromIMEStyle(PIMESTY(x)))
IMESHAREAPI BOOL IMECDECL FBoldIMEStyle(const IMESTYLE *pimestyle); IMESHAREAPI BOOL IMECDECL FItalicIMEStyle(const IMESTYLE *pimestyle); IMESHAREAPI BOOL IMECDECL FUlIMEStyle(const IMESTYLE *pimestyle); IMESHAREAPI UINT IMECDECL IdUlIMEStyle(const IMESTYLE *pimestyle);
//color handling
IMESHAREAPI BOOL IMECDECL FWinIMEColorStyle(const IMECOLORSTY *pcolorstyle); IMESHAREAPI BOOL IMECDECL FFundamentalIMEColorStyle(const IMECOLORSTY *pcolorstyle); IMESHAREAPI BOOL IMECDECL FRGBIMEColorStyle(const IMECOLORSTY *pcolorstyle); IMESHAREAPI BOOL IMECDECL FSpecialIMEColorStyle(const IMECOLORSTY *pcolorstyle); IMESHAREAPI BOOL IMECDECL FSpecialTextIMEColorStyle(const IMECOLORSTY *pcolorstyle); IMESHAREAPI BOOL IMECDECL FSpecialWindowIMEColorStyle(const IMECOLORSTY *pcolorstyle); IMESHAREAPI COLORREF IMECDECL RGBFromIMEColorStyle(const IMECOLORSTY *pcolorstyle);
#ifdef IMESHARE_CPL
IMESHAREAPI UINT IMECDECL IdSpecialFromIMEColorStyle(const IMECOLORSTY *pcolorstyle); IMESHAREAPI UINT IMECDECL IdWinFromIMEColorStyle(const IMECOLORSTY *pcolorstyle); IMESHAREAPI UINT IMECDECL IdFundamentalFromIMEColorStyle(const IMECOLORSTY *pcolorstyle); IMESHAREAPI GRFSTY IMECDECL GrfStyIMEStyle(const IMESTYLE *pimestyle); IMESHAREAPI BOOL IMECDECL FGetIMEStyleAttr(IMESTYLE *pimestyle, const UINT attr); IMESHAREAPI BOOL IMECDECL FSetIMEStyleAttr(const IMESTYLE *pimestyle, const UINT attr); IMESHAREAPI BOOL IMECDECL FSetIMEColorStyle(UINT attr, BOOL fTextCol, UINT id, DWORD col); IMESHAREAPI BOOL IMECDECL FSetIMEStyle(const UINT attr, BOOL fBold, BOOL fItalic, BOOL fUl, UINT idUl); IMESHAREAPI BOOL IMECDECL FSaveIMEShareSetting(void); #endif // IMESHARE_CPL
#ifdef __cplusplus
} #endif
#endif // OBSOLETE
#endif // __IMESHARE_H__
|