summaryrefslogtreecommitdiff
path: root/plugins/ExternalAPI/m_MathModule.h
blob: 04ae06a7f7ef800cb2c06569df46cb99a3c5f52b (plain)
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
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
#ifndef M_MATHMODULE_H_
#define M_MATHMODULE_H_
//---------------------------------------------------


/*
           **************************
           *     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 char * 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)
*/

// ---------

#define 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?).
typedef struct
{
    HWND hwndRichEditControl;  // handle of richedit.
    CHARRANGE* sel;    // NULL: replace all.
    int disableredraw;
}    TMathRicheditInfo;
// 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.


#define MTH_GETBITMAP "Math/GetBitmap"
//returns Bitmap that represents the formula given in lparam (string-pointer)
//this formula has NO Delimiters.
//wparam=0
//lparam=(*char)Formula
//result=(HBITMAP) bitmap
//!!! the bitmap must be deleted with DeleteObject(hobject)
//example:
//HBITMAP Bmp=(HBITMAP)CallService(MTH_GETBITMAP,0, (LPARAM)formula);

#define MTH_GET_GIF "Math/GetGif"
// this renders a formula given in lparam and produces a gif-image in a temporary-folder
// and returns the filename (full path). Be sure to copy the file if you want to preserve it,
// because the files are managed as a ring-buffer, if 99 files already exist, this
// function overwrites the first one.
// wparam=0
// lparam=*char text  // formula WITHOUT delimiters
// result=(*char)path
// !!! the result-buffer must be deleted with MTH_FREE_GIFPATH
#define MTH_GET_GIF_UNICODE "Math/GetGifUnicode"
// wparam=0
// lparam=*wchar_t text
// result=*char path
// !!! the result-buffer must be deleted with MTH_FREE_GIFPATH
#define MTH_FREE_GIFPATH "Math/FreeRTFBitmapText"

#define 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=*char text
// result=*char rtfstream
// !!! the result-buffer must be deleted with MTH_FREE_RTF_BITMAPTEXT
#define MTH_FREE_RTF_BITMAPTEXT "Math/FreeRTFBitmapText"
// deletes the buffer that MTH_GET_RTF_BITMAPTEXT has created.
// wparam=0
// lparam=(*char) buffer
// result=0

#define MTH_GET_HTML_SOURCE "Math/GetHTMLSource"
// this is similar to MTH_GET_RTF_BITMAPTEXT, but
// as we cannot include embedded images, the bitmaps are saved in a
// temporary directory (relative to Miranda-dir) and the images are linked into
// the html-source
// wparam=0
// lparam=*char text  // this has to be html-source already. this function only adds formula-links.
// result=*char htmlsource
// !!! the result-buffer must be deleted with MTH_FREE_HTML_BUFFER
#define MTH_GET_HTML_SOURCE_UNICODE "Math/GetHTMLSourceUnicode"
// wparam=0
// lparam=*wchar_t text
// result=*wchar_t htmlsource
#define MTH_FREE_HTML_BUFFER "Math/FreeRTFBitmapText"
// deletes string-buffers that MathModule has created.
// wparam=(bool) unicode  // 0 if no unicode-buffer; 1 if unicode-buffer !!!
// lparam=(*char) buffer
// result=0


// **********parameter functions:
                       
#define MATH_SET_PARAMS "Math/SetParams"
//--------------------------------------
// sets a parameter (only integer values) specified in  wparam
// wparam=paramcode
// lparam=parametervalue
// paramcodes:
    #define MATH_PARAM_BKGCOLOR 0   // (COLORREF) std-rgb-color or TRANSPARENT_Color
                                    // you can make the BKGCOLOR Transparent (default) by using this color:
                                    #define TRANSPARENT_Color 0xffffffff -1  // this is default
    #define MATH_PARAM_FONTCOLOR 1   // (COLORREF) std-rgb-color
    #define MATH_PARAM_RESIZE_HWND 2            // (HWND) preview window resizes RESIZE_HWND when it is being resized.
    #define MATH_PARAM_ToolboxEdit_HWND 3       // (HWND) If this hwnd (of an edit-box) is set, MathModule can insert Formula-elements from the Math-Toolbox.

#define MATH_GET_PARAMS "Math/GetParams"
//---------------------------------------
// get a parameter (only integer values) specified in wparam
// wparam=paramcode
// lparam=lparamOfPARAM // see below
// paramcodes and returnvalues:
    #define MATH_PARAM_STARTDELIMITER 4 // retval: *char delimiter // the delimiter that marks the beginning of a formula
                                      // !!! the result-buffer must be deleted with MTH_FREE_MATH_BUFFER
                                      // lparam=0
    #define MATH_PARAM_ENDDELIMITER 5 // retval: *char delimiter // the delimiter that marks the end of a formula
                                      // !!! the result-buffer must be deleted with MTH_FREE_MATH_BUFFER
                                      // lparam=0
// ************end parameter functions.

#define MTH_FREE_MATH_BUFFER "Math/FreeRTFBitmapText"
// deletes string-buffers that MathModule has created. (at the moment only the *DELIMITER-services create such strings)
// wparam=0
// lparam=(*char) buffer
// result=0



// ********* preview-window functions

#define MTH_SHOW "Math/Show"
// shows the preview-window
// wparam=0
// lparam=0
// result=0

#define MTH_HIDE "Math/Hide"
// hides the preview-window
// wparam=0
// lparam=0
// result=0

#define MTH_RESIZE "Math/Resize"
// sets the size of the preview-window
// wparam=0
// lparam=(*TMathWindowInfo)
// result=0
typedef struct
{
    int top;
	int left;
	int right;
	int bottom;
}	TMathWindowInfo;

#define MTH_SETFORMULA "Math/SetFormula"
// sets the text that the preview-window should parse to display formulas found inside
// wparam=0
// lparam=(*char) text
// result=0

#define 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

#define MTH_GET_PREVIEW_SHOWN "Math/getPreviewShown"
// returns 1 if preview window is visible
// returns 0 if preview window is invisible
// result=(int) shown

//---------------end preview functions


#define MTH_SUBSTITUTE_DELIMITER "Math/SubstituteDelimiter"
// replaces Substitute in an edit-box given in lparam-structure with internal Math-Delimiter.
// MathSrmm uses this for the shortcut-functionality
// I do not recommend to use this, it's not Unicode-safe
// wparam=0
// lparam=(TMathSubstInfo) substInfo
// result=0
typedef struct
{
	HWND EditHandle;
	char* Substitute;
}	TMathSubstInfo;





//
// ---- here are some obsolete services. I plan to remove them soon. Use MATH_SET_PARAMS or MATH_GET_PARAMS instead !!
//

#define MATH_SETBKGCOLOR "Math/SetBackGroundColor"
// changes the background color of the next formula to be rendered.
// wparam=0
// lparam=(COLORREF) color
// result=0

#define 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

#define MTH_Set_Resize_HWND "Math/SetResizeHWND" //übergibt fenster-Handle des aktuellen Message-Dialogs
// 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

#define MATH_GET_STARTDELIMITER "Math/GetStartDelimiter"
// returns the delimiter that marks the beginning of a formula
// wparam=0
// lparam=0
// result=*char Delimiter
// !!! the result-buffer must be deleted with MTH_FREE_MATH_BUFFER

#define MATH_GETENDDELIMITER "Math/GetEndDelimiter"
// returns the delimiter that marks the end of a formula
// wparam=0
// lparam=0
// result=*char Delimiter
// !!! the result-buffer must be deleted with MTH_FREE_MATH_BUFFER

//---------------------------------------------------
#endif
//#ifndef M_MATHMODULE_H_