00001 #include "config.h"
00002 #include "editor.h"
00003
00004 #define DEFINE_THISCALL_WRAPPER(func,args) \
00005 typedef struct {int x[args/4];} _tag_##func; \
00006 void __stdcall func(_tag_##func p1); \
00007 __declspec(naked) void __stdcall __thiscall_##func(_tag_##func p1) \
00008 { \
00009 __asm pop eax \
00010 __asm push ecx \
00011 __asm push eax \
00012 __asm jmp func \
00013 }
00014
00015 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxGetDC,4)
00016 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxReleaseDC,8)
00017 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxShowScrollBar,12)
00018 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxEnableScrollBar,12)
00019 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxSetScrollRange,20)
00020 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxSetScrollPos,16)
00021 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxInvalidateRect,12)
00022 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxViewChange,8)
00023 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxCreateCaret,16)
00024 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxShowCaret,8)
00025 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxSetCaretPos,12)
00026 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxSetTimer,12)
00027 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxKillTimer,8)
00028 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxScrollWindowEx,32)
00029 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxSetCapture,8)
00030 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxSetFocus,4)
00031 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxSetCursor,12)
00032 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxScreenToClient,8)
00033 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxClientToScreen,8)
00034 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxActivate,8)
00035 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxDeactivate,8)
00036 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxGetClientRect,8)
00037 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxGetViewInset,8)
00038 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxGetCharFormat,8)
00039 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxGetParaFormat,8)
00040 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxGetSysColor,8)
00041 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxGetBackStyle,8)
00042 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxGetMaxLength,8)
00043 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxGetScrollBars,8)
00044 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxGetPasswordChar,8)
00045 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxGetAcceleratorPos,8)
00046 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxGetExtent,8)
00047 DEFINE_THISCALL_WRAPPER(ITextHostImpl_OnTxCharFormatChange,8)
00048 DEFINE_THISCALL_WRAPPER(ITextHostImpl_OnTxParaFormatChange,8)
00049 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxGetPropertyBits,12)
00050 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxNotify,12)
00051 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxImmGetContext,4)
00052 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxImmReleaseContext,8)
00053 DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxGetSelectionBarWidth,8)
00054
00055 #define DEFINE_STDCALL_WRAPPER(num,func,args) \
00056 __declspec(naked) void __stdcall __stdcall_##func(_tag_##func p1) \
00057 { \
00058 __asm pop eax \
00059 __asm pop ecx \
00060 __asm push eax \
00061 __asm mov eax, [ecx] \
00062 __asm jmp dword ptr [eax + 4*num] \
00063 }
00064
00065 DEFINE_STDCALL_WRAPPER(3,ITextHostImpl_TxGetDC,4)
00066 DEFINE_STDCALL_WRAPPER(4,ITextHostImpl_TxReleaseDC,8)
00067 DEFINE_STDCALL_WRAPPER(5,ITextHostImpl_TxShowScrollBar,12)
00068 DEFINE_STDCALL_WRAPPER(6,ITextHostImpl_TxEnableScrollBar,12)
00069 DEFINE_STDCALL_WRAPPER(7,ITextHostImpl_TxSetScrollRange,20)
00070 DEFINE_STDCALL_WRAPPER(8,ITextHostImpl_TxSetScrollPos,16)
00071 DEFINE_STDCALL_WRAPPER(9,ITextHostImpl_TxInvalidateRect,12)
00072 DEFINE_STDCALL_WRAPPER(10,ITextHostImpl_TxViewChange,8)
00073 DEFINE_STDCALL_WRAPPER(11,ITextHostImpl_TxCreateCaret,16)
00074 DEFINE_STDCALL_WRAPPER(12,ITextHostImpl_TxShowCaret,8)
00075 DEFINE_STDCALL_WRAPPER(13,ITextHostImpl_TxSetCaretPos,12)
00076 DEFINE_STDCALL_WRAPPER(14,ITextHostImpl_TxSetTimer,12)
00077 DEFINE_STDCALL_WRAPPER(15,ITextHostImpl_TxKillTimer,8)
00078 DEFINE_STDCALL_WRAPPER(16,ITextHostImpl_TxScrollWindowEx,32)
00079 DEFINE_STDCALL_WRAPPER(17,ITextHostImpl_TxSetCapture,8)
00080 DEFINE_STDCALL_WRAPPER(18,ITextHostImpl_TxSetFocus,4)
00081 DEFINE_STDCALL_WRAPPER(19,ITextHostImpl_TxSetCursor,12)
00082 DEFINE_STDCALL_WRAPPER(20,ITextHostImpl_TxScreenToClient,8)
00083 DEFINE_STDCALL_WRAPPER(21,ITextHostImpl_TxClientToScreen,8)
00084 DEFINE_STDCALL_WRAPPER(22,ITextHostImpl_TxActivate,8)
00085 DEFINE_STDCALL_WRAPPER(23,ITextHostImpl_TxDeactivate,8)
00086 DEFINE_STDCALL_WRAPPER(24,ITextHostImpl_TxGetClientRect,8)
00087 DEFINE_STDCALL_WRAPPER(25,ITextHostImpl_TxGetViewInset,8)
00088 DEFINE_STDCALL_WRAPPER(26,ITextHostImpl_TxGetCharFormat,8)
00089 DEFINE_STDCALL_WRAPPER(27,ITextHostImpl_TxGetParaFormat,8)
00090 DEFINE_STDCALL_WRAPPER(28,ITextHostImpl_TxGetSysColor,8)
00091 DEFINE_STDCALL_WRAPPER(29,ITextHostImpl_TxGetBackStyle,8)
00092 DEFINE_STDCALL_WRAPPER(30,ITextHostImpl_TxGetMaxLength,8)
00093 DEFINE_STDCALL_WRAPPER(31,ITextHostImpl_TxGetScrollBars,8)
00094 DEFINE_STDCALL_WRAPPER(32,ITextHostImpl_TxGetPasswordChar,8)
00095 DEFINE_STDCALL_WRAPPER(33,ITextHostImpl_TxGetAcceleratorPos,8)
00096 DEFINE_STDCALL_WRAPPER(34,ITextHostImpl_TxGetExtent,8)
00097 DEFINE_STDCALL_WRAPPER(35,ITextHostImpl_OnTxCharFormatChange,8)
00098 DEFINE_STDCALL_WRAPPER(36,ITextHostImpl_OnTxParaFormatChange,8)
00099 DEFINE_STDCALL_WRAPPER(37,ITextHostImpl_TxGetPropertyBits,12)
00100 DEFINE_STDCALL_WRAPPER(38,ITextHostImpl_TxNotify,12)
00101 DEFINE_STDCALL_WRAPPER(39,ITextHostImpl_TxImmGetContext,4)
00102 DEFINE_STDCALL_WRAPPER(40,ITextHostImpl_TxImmReleaseContext,8)
00103 DEFINE_STDCALL_WRAPPER(41,ITextHostImpl_TxGetSelectionBarWidth,8)
00104
00105 DEFINE_THISCALL_WRAPPER(fnTextSrv_TxSendMessage,20)
00106 DEFINE_THISCALL_WRAPPER(fnTextSrv_TxDraw,52)
00107 DEFINE_THISCALL_WRAPPER(fnTextSrv_TxGetHScroll,24)
00108 DEFINE_THISCALL_WRAPPER(fnTextSrv_TxGetVScroll,24)
00109 DEFINE_THISCALL_WRAPPER(fnTextSrv_OnTxSetCursor,40)
00110 DEFINE_THISCALL_WRAPPER(fnTextSrv_TxQueryHitPoint,44)
00111 DEFINE_THISCALL_WRAPPER(fnTextSrv_OnTxInplaceActivate,8)
00112 DEFINE_THISCALL_WRAPPER(fnTextSrv_OnTxInplaceDeactivate,4)
00113 DEFINE_THISCALL_WRAPPER(fnTextSrv_OnTxUIActivate,4)
00114 DEFINE_THISCALL_WRAPPER(fnTextSrv_OnTxUIDeactivate,4)
00115 DEFINE_THISCALL_WRAPPER(fnTextSrv_TxGetText,8)
00116 DEFINE_THISCALL_WRAPPER(fnTextSrv_TxSetText,8)
00117 DEFINE_THISCALL_WRAPPER(fnTextSrv_TxGetCurrentTargetX,8)
00118 DEFINE_THISCALL_WRAPPER(fnTextSrv_TxGetBaseLinePos,8)
00119 DEFINE_THISCALL_WRAPPER(fnTextSrv_TxGetNaturalSize,36)
00120 DEFINE_THISCALL_WRAPPER(fnTextSrv_TxGetDropTarget,8)
00121 DEFINE_THISCALL_WRAPPER(fnTextSrv_OnTxPropertyBitsChange,12)
00122 DEFINE_THISCALL_WRAPPER(fnTextSrv_TxGetCachedSize,12)