{$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}