/****************************************************************************** ** I M E S H A R E . H ** ** KentU/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. ** ** ** ******************************************************************************/ #include "resource.h" #ifdef IMESHARE_INTERNAL #define IMESHAREAPI __declspec( dllexport ) #define IMECDECL #else //!IMESHARE_INTERNAL #define IMECDECL __cdecl #define IMESHAREAPI __declspec( dllimport ) #endif //!IMESHARE_INTERNAL #ifdef _DEBUG #define IMESHAssert(f) (f || DebugAssert(__FILE__, __LINE__)) #else //_DEBUG #define IMESHAssert(f) #endif //_DEBUG #define UINTIMEBOGUS 0xffffffff #define ATTR_MIN 0 #ifdef FOR_REFERENCE_ONLY #define ATTR_INPUT 0 #define ATTR_TARGET_CONVERTED 1 #define ATTR_CONVERTED 2 #define ATTR_TARGET_NOTCONVERTED 3 #define ATTR_INPUT_ERROR 4 #endif //FOR_REFERENCE_ONLY #define ATTR_MAX 5 #define CATR (ATTR_MAX - ATTR_MIN) #if defined (IMESHARE_INTERNAL) || (IMESHARE_CPL) #define STY_PLAIN IDS_STYPLAIN #define STY_BOLD IDS_STYBOLD #define STY_ITALIC IDS_STYITALIC #endif //IME_SHARE_INTERNAL #define IMESTY_UL_MIN 2003 #define IMESTY_UL_SINGLE 2003 #define IMESTY_UL_DOUBLE 2004 #define IMESTY_UL_DOTTED 2005 #define IMESTY_UL_THICK 2006 #define IMESTY_UL_DASHLINE 2007 #define IMESTY_UL_DOTDASH 2008 #define IMESTY_UL_DOTDOTDASH 2009 #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 + 1 #if defined (IMESHARE_INTERNAL) || (IMESHARE_CPL) #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_INTERNAL //WARNING: Based on an assumption that all IDSsty definitions id are // consecutive. #define CIMEUL (IMESTY_UL_MAX - IMESTY_UL_MIN) typedef struct _grfsty { union { UINT grfsty; struct { UINT fBold:1; UINT fItalic:1; UINT fUl:1; UINT idUl:(sizeof(UINT) * 8 - 3); }; }; } GRFSTY; #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. typedef struct _IMECOLORSTY { UINT colorId; union { COLORREF rgb; UINT colorWin; UINT colorSpec; UINT colorFund; }; } IMECOLORSTY; typedef struct _IMESTYLE { 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; }; }; }; } IMESTYLE; #define CBIMESTYLE sizeof(IMESTYLE) #ifdef __cplusplus extern "C" { #endif //__cplusplus //Functions IMESHAREAPI BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved); IMESHAREAPI BOOL IMECDECL FInitIMEShare(); IMESHAREAPI void IMECDECL CustomizeIMEShare(); IMESHAREAPI void IMECDECL EndIMEShare(); //Refresh notify support IMESHAREAPI BOOL FRefreshStyle(); //substitution IMESHAREAPI BOOL 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); #if defined (IMESHARE_INTERNAL) || (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_INTERNAL #ifdef __cplusplus } #endif //__cplusplus