// -*- C++ -*- /* * File: math_macro.h * Purpose: Declaration of macro class for mathed * Author: Alejandro Aguilar Sierra * Created: November 1996 * Description: WYSIWYG math macros * * Dependencies: Mathed * * Copyright: 1996, 1997 Alejandro Aguilar Sierra * * Version: 0.2, Mathed & Lyx project. * * This code is under the GNU General Public Licence version 2 or later. */ #ifndef MATH_MACRO #define MATH_MACRO #ifdef __GNUG__ #pragma interface #endif #include #include "math_parinset.h" class MathMacroTemplate; /** This class contains the data for a macro \author Alejandro Aguilar Sierra \version November 1996 */ class MathMacro : public MathParInset { public: /// A macro can only be builded from an existing template explicit MathMacro(MathMacroTemplate *); /// or from another macro. explicit MathMacro(MathMacro *); /// ~MathMacro(); /// void draw(Painter &, int, int); /// void Metrics(); /// MathedInset * Clone(); /// void Write(std::ostream &, bool fragile); /// bool setArgumentIdx(int); /// int getArgumentIdx() const; /// int getMaxArgumentIdx() const; /// int GetColumns() const; /// void GetXY(int &, int &) const; /// void SetFocus(int, int); /// MathedArray * GetData(); /// MathedRowSt * getRowSt() const; /// void setData(MathedArray *); /// MathedTextCodes getTCode() const; /// bool Permit(short) const; private: /// MathMacroTemplate * tmplate_; /// struct MacroArgumentBase { /// Position of the macro int x; /// int y; /// MathedRowSt * row; /// MathedArray * array; /// MacroArgumentBase() : x(0), y(0), row(0), array(0) {} }; std::vector args_; /// int idx_; /// int nargs_; /// MathedTextCodes tcode_; }; #endif