4 * Purpose: Declaration of macro class for mathed
5 * Author: Alejandro Aguilar Sierra <asierra@servidor.unam.mx>
6 * Created: November 1996
7 * Description: WYSIWYG math macros
11 * Copyright: 1996, 1997 Alejandro Aguilar Sierra
13 * Version: 0.2, Mathed & Lyx project.
15 * This code is under the GNU General Public Licence version 2 or later.
25 #include "math_parinset.h"
27 class MathMacroTemplate;
30 /// This class contains the data for a macro
31 class MathMacro : public MathParInset
34 /// A macro can only be builded from an existing template
36 MathMacro(MathMacroTemplate *);
37 /// or from another macro.
39 MathMacro(MathMacro *);
43 void draw(Painter &, int, int);
47 MathedInset * Clone();
49 void Write(std::ostream &, bool fragile);
51 bool setArgumentIdx(int);
53 int getArgumentIdx() const;
55 int getMaxArgumentIdx() const;
57 int GetColumns() const;
59 void GetXY(int &, int &) const;
61 void SetFocus(int, int);
63 MathedArray * GetData();
65 MathedRowSt * getRowSt() const;
67 void SetData(MathedArray *);
69 MathedTextCodes getTCode() const;
71 bool Permit(short) const;
74 MathMacroTemplate * tmplate;
76 struct MacroArgumentBase {
77 /// Position of the macro
86 MacroArgumentBase() { x = y = 0; array = 0; row = 0; }
88 std::vector<MacroArgumentBase> args_;
94 MathedTextCodes tcode;
96 friend class MathMacroTemplate;