/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the w64 mingw-runtime package.
 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 */
#ifndef _IME_
#define _IME_

#ifdef __cplusplus
extern "C" {
#endif

#ifndef _WINDEF_
  typedef unsigned int UINT;
#endif

#define IME_MAXPROCESS 32

#ifdef UNICODE
#define SendIMEMessageEx SendIMEMessageExW
#else
#define SendIMEMessageEx SendIMEMessageExA
#endif

  LRESULT WINAPI SendIMEMessageExA(HWND,LPARAM);
  LRESULT WINAPI SendIMEMessageExW(HWND,LPARAM);

  typedef struct tagIMESTRUCT {
    UINT fnc;
    WPARAM wParam;
    UINT wCount;
    UINT dchSource;
    UINT dchDest;
    LPARAM lParam1;
    LPARAM lParam2;
    LPARAM lParam3;
  } IMESTRUCT,*PIMESTRUCT,*NPIMESTRUCT,*LPIMESTRUCT;

#define CP_HWND 0
#define CP_OPEN 1
#define CP_DIRECT 2
#define CP_LEVEL 3

#if !defined(VK_DBE_ALPHANUMERIC)
#define VK_DBE_ALPHANUMERIC 0x0f0
#define VK_DBE_KATAKANA 0x0f1
#define VK_DBE_HIRAGANA 0x0f2
#define VK_DBE_SBCSCHAR 0x0f3
#define VK_DBE_DBCSCHAR 0x0f4
#define VK_DBE_ROMAN 0x0f5
#define VK_DBE_NOROMAN 0x0f6
#define VK_DBE_ENTERWORDREGISTERMODE 0x0f7
#define VK_DBE_ENTERIMECONFIGMODE 0x0f8
#define VK_DBE_FLUSHSTRING 0x0f9
#define VK_DBE_CODEINPUT 0x0fa
#define VK_DBE_NOCODEINPUT 0x0fb
#define VK_DBE_DETERMINESTRING 0x0fc
#define VK_DBE_ENTERDLGCONVERSIONMODE 0x0fd
#endif

#define MCW_DEFAULT 0x00
#define MCW_RECT 0x01
#define MCW_WINDOW 0x02
#define MCW_SCREEN 0x04
#define MCW_VERTICAL 0x08
#define MCW_HIDDEN 0x10

#define IME_MODE_ALPHANUMERIC 0x0001

#ifdef KOREA
#define IME_MODE_SBCSCHAR 0x0002
#else
#define IME_MODE_SBCSCHAR 0x0008
#endif

#define IME_MODE_KATAKANA 0x0002
#define IME_MODE_HIRAGANA 0x0004
#define IME_MODE_HANJACONVERT 0x0004
#define IME_MODE_DBCSCHAR 0x0010
#define IME_MODE_ROMAN 0x0020
#define IME_MODE_NOROMAN 0x0040
#define IME_MODE_CODEINPUT 0x0080
#define IME_MODE_NOCODEINPUT 0x0100

#define IME_GETIMECAPS 0x03
#define IME_SETOPEN 0x04
#define IME_GETOPEN 0x05
#define IME_GETVERSION 0x07
#define IME_SETCONVERSIONWINDOW 0x08
#define IME_MOVEIMEWINDOW IME_SETCONVERSIONWINDOW
#define IME_SETCONVERSIONMODE 0x10

#define IME_GETCONVERSIONMODE 0x11
#define IME_SET_MODE 0x12
#define IME_SENDVKEY 0x13
#define IME_ENTERWORDREGISTERMODE 0x18
#define IME_SETCONVERSIONFONTEX 0x19

#define IME_BANJAtoJUNJA 0x13
#define IME_JUNJAtoBANJA 0x14
#define IME_JOHABtoKS 0x15
#define IME_KStoJOHAB 0x16

#define IMEA_INIT 0x01
#define IMEA_NEXT 0x02
#define IMEA_PREV 0x03

#define IME_REQUEST_CONVERT 0x01
#define IME_ENABLE_CONVERT 0x02

#define INTERIM_WINDOW 0x00
#define MODE_WINDOW 0x01
#define HANJA_WINDOW 0x02

#define IME_RS_ERROR 0x01
#define IME_RS_NOIME 0x02
#define IME_RS_TOOLONG 0x05
#define IME_RS_ILLEGAL 0x06
#define IME_RS_NOTFOUND 0x07
#define IME_RS_NOROOM 0x0a
#define IME_RS_DISKERROR 0x0e
#define IME_RS_INVALID 0x11
#define IME_RS_NEST 0x12
#define IME_RS_SYSTEMMODAL 0x13

#define WM_IME_REPORT 0x0280

#define IR_STRINGSTART 0x100
#define IR_STRINGEND 0x101
#define IR_OPENCONVERT 0x120
#define IR_CHANGECONVERT 0x121
#define IR_CLOSECONVERT 0x122
#define IR_FULLCONVERT 0x123
#define IR_IMESELECT 0x130
#define IR_STRING 0x140
#define IR_DBCSCHAR 0x160
#define IR_UNDETERMINE 0x170
#define IR_STRINGEX 0x180
#define IR_MODEINFO 0x190

#define WM_WNT_CONVERTREQUESTEX 0x0109
#define WM_CONVERTREQUEST 0x010A
#define WM_CONVERTRESULT 0x010B
#define WM_INTERIM 0x010C

#define WM_IMEKEYDOWN 0x290
#define WM_IMEKEYUP 0x291

  typedef struct tagUNDETERMINESTRUCT {
    DWORD dwSize;
    UINT uDefIMESize;
    UINT uDefIMEPos;
    UINT uUndetTextLen;
    UINT uUndetTextPos;
    UINT uUndetAttrPos;
    UINT uCursorPos;
    UINT uDeltaStart;
    UINT uDetermineTextLen;
    UINT uDetermineTextPos;
    UINT uDetermineDelimPos;
    UINT uYomiTextLen;
    UINT uYomiTextPos;
    UINT uYomiDelimPos;
  } UNDETERMINESTRUCT,*PUNDETERMINESTRUCT,*NPUNDETERMINESTRUCT,*LPUNDETERMINESTRUCT;

  typedef struct tagSTRINGEXSTRUCT {
    DWORD dwSize;
    UINT uDeterminePos;
    UINT uDetermineDelimPos;
    UINT uYomiPos;
    UINT uYomiDelimPos;
  } STRINGEXSTRUCT,*NPSTRINGEXSTRUCT,*LPSTRINGEXSTRUCT;

#ifdef __cplusplus
}
#endif
#endif
