1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
|
{$IFNDEF M_MATHMODULE}
{$DEFINE M_MATHMODULE}
{--------------------------------------------------- }
{
2
x + 2 Pi
+ R
Sin(wt)
Math-Module
Miranda Plugin by Stephan Kassemeyer
MathModule API - (c) Stephan Kassemeyer
8 May, 2004
}
{ --------- }
{
Miranda Service-functions defined by MathModule
call with the
int ( CallService)(const AnsiChar servicename,WPARAM,LPARAM)
that you get from miranda when Miranda calls the
Load(PLUGINLINK link)
of your PlugIn-dll
the CallService function then is:
link->CallServiceSync(Servicename,wparam,lparam)
}
{ --------- }
const
MATH_RTF_REPLACE_FORMULAE = 'Math/RtfReplaceFormulae';
{ replace all formulas in a RichEdit with bitmaps. }
{ wParam = 0 }
{ lParam = *TMathRichedit Info }
{ return: TRUE if replacement succeeded, FALSE if not (disable by user?). }
{ handle of richedit. }
{ NULL: replace all. }
type
PMathRicheditInfo = ^TMathRicheditInfo;
TMathRicheditInfo = record
hwndRichEditControl : HWND;
sel : PCHARRANGE;
disableredraw : int;
end;
{ WARNING: !!! }
{ Strange things happen if you use this function twice on the same CHARRANGE: }
{ if Math-startDelimiter == Math-endDelimiter, there is the following problem: }
{ it might be that someone forgot an endDelimiter, this results in a lonesome startdelimiter. }
{ if you try to MATH_REPLACE_FORMULAE the second time, startDelimiters and endDelimiters are mixed up. }
{ The same problem occours if we have empty formulae, because two succeding delimiters are }
{ replaced with a single delimiter. }
const
MATH_GET_STARTDELIMITER = 'Math/GetStartDelimiter';
{ returns the delimiter that marks the beginning of a formula }
{ wparam=0 }
{ lparam=0 }
{ result=*AnsiChar Delimiter }
{ !!! the result-buffer must be deleted with MTH_FREE_MATH_BUFFER }
MATH_GETENDDELIMITER = 'Math/GetEndDelimiter';
{ returns the delimiter that marks the end of a formula }
{ wparam=0 }
{ lparam=0 }
{ result=*AnsiChar Delimiter }
{ !!! the result-buffer must be deleted with MTH_FREE_MATH_BUFFER }
MTH_FREE_MATH_BUFFER = 'Math/FreeRTFBitmapText';
{ deletes any buffer that MathModule has created. }
{ wparam=0 }
{ lparam=(*AnsiChar) buffer }
{ result=0 }
MATH_SETBKGCOLOR = 'Math/SetBackGroundColor';
{ changes the background color of the next formula to be rendered. }
{ wparam=0 }
{ lparam=(COLORREF) color }
{ result=0 }
MATH_SET_PARAMS = 'Math/SetParams';
{ sets a parameter (only integer values) encoded in wparam }
{ wparam=paramcode }
{ lparam=parametervalue }
{ paramcodes: }
const
MATH_PARAM_BKGCOLOR = 0; // (COLORREF) std-rgb-color or TRANSPARENT_Color
MATH_PARAM_FONTCOLOR = 1; // (COLORREF) std-rgb-color
RESIZE_HWND = 2; // (HWND) preview window resizes RESIZE_HWND when
// it is being resized.
ToolboxEdit_HWND = 3; // (HWND) If this hwnd (of an edit-box) is set,
// MathModule can insert Formula-elements from
// the Math-Toolbox.
// you can make the BKGCOLOR Transparent (default) by using this color:
TRANSPARENT_Color = $FFFFFFFF-1; // this is default
const
MTH_GETBITMAP = 'Math/GetBitmap';
{returns Bitmap that represents the formula given in lparam (string-pointer) }
{this formula has NO Delimiters. }
{wparam=0 }
{lparam=(*AnsiChar)Formula }
{result=(HBITMAP) bitmap }
{!!! the bitmap must be deleted with DeleteObject(hobject) }
{example: }
{HBITMAP Bmp=(HBITMAP)CallService(MTH_GETBITMAP,0, (LPARAM)formula); }
MTH_GET_RTF_BITMAPTEXT = 'Math/GetRTFBitmapText';
{ returns rich-text stream that includes bitmaps from text given in lparam }
{ text included between MATH_GET_STARTDELIMITER and MATH_GETENDDELIMITER }
{ hereby is replaced with a rtf-bitmap-stream that represents the corresponding formula }
{ wparam=0 }
{ lparam=*AnsiChar text }
{ result=*AnsiChar rtfstream }
{ !!! the result-buffer must be deleted with MTH_FREE_RTF_BITMAPTEXT }
MTH_FREE_RTF_BITMAPTEXT = 'Math/FreeRTFBitmapText';
{ deletes the buffer that MTH_GET_RTF_BITMAPTEXT has created. }
{ wparam=0 }
{ lparam=(*AnsiChar) buffer }
{ result=0 }
{ ************************************************************** }
{ The following is still SRMM - specific. }
{ I plan to modify it, so that other PlugIns can take advantage of e.g. preview-window.... }
const
MTH_SHOW = 'Math/Show';
{ shows the preview-window }
{ wparam=0 }
{ lparam=0 }
{ result=0 }
MTH_HIDE = 'Math/Hide';
{ hides the preview-window }
{ wparam=0 }
{ lparam=0 }
{ result=0 }
MTH_RESIZE = 'Math/Resize';
{ sets the size of the preview-window }
{ wparam=0 }
{ lparam=(*TMathWindowInfo) }
{ result=0 }
type
PTMathWindowInfo = ^TTMathWindowInfo;
TTMathWindowInfo = record
top : int;
left : int;
right : int;
bottom: int;
end;
const
MTH_SETFORMULA = 'Math/SetFormula';
{ sets the text that the preview-window should parse to display formulas found inside }
{ wparam=0 }
{ lparam=(*AnsiChar) text }
{ result=0 }
MTH_Set_ToolboxEditHwnd = 'Math/SetTBhwnd';
{ If this hwnd (of an edit-box) is set, MathModule can insert Formula-elements from the Math-Toolbox. }
{ wparam=0 }
{ lparam=handle }
{übergibt fenster-Handle des aktuellen Message-Dialogs }
MTH_Set_Srmm_HWND = 'Math/SetSrmmHWND';
{ If MathModule knows the handle of a SRMM-based window, following features exist: }
{ - preview window resizes Math-Srmm when it is being resized. }
{ wparam=0 }
{ lparam=handle }
{ result=0 }
{ todo: umbenennen in MTH_Set_ResizeWindowHandle, zusaetzlich MTH_Set_ToolboxEditHandle erstellen, dann keine SRMM-Abhaengigkeit mehr. }
{ damit ResizeWindows selbst entscheiden koennen, was sie tun, kann man auch ein miranda-event "MTH_preview_resized" einrichten. }
MTH_GET_PREVIEW_HEIGHT = 'Math/getPreviewHeight';
{ returns the height of the whole preview-window (including system-menu-bar) }
{ consider this when maximizing a window to that preview-window is hooked on top or bottom }
{ it returns the height no matter whether preview-window is visible or not }
{ wparam=0 }
{ lparam=0 }
{ result=(int) height }
MTH_GET_PREVIEW_SHOWN = 'Math/getPreviewShown';
{ returns 1 if preview window is visible }
{ returns 0 if preview window is invisible }
{ result=(int) shown }
MTH_SUBSTITUTE_DELIMITER = 'Math/SubstituteDelimiter';
{ replaces Substitute given lparam-structure with internal Math-Delimiter }
{ wparam=0 }
{ lparam=(TMathSubstInfo) substInfo }
{ result=0 }
type
PTMathSubstInfo = ^TTMathSubstInfo;
TTMathSubstInfo = record
EditHandle : HWND;
Substitute : PAnsiChar;
end;
{--------------------------------------------------- }
{$ENDIF}
|