4 * Purpose: Declaration of insets for mathed
5 * Author: Alejandro Aguilar Sierra <asierra@servidor.unam.mx>
6 * Created: January 1996
7 * Description: Math paragraph and objects for a WYSIWYG math editor.
9 * Dependencies: Xlib, XForms
11 * Copyright: 1996, 1997 Alejandro Aguilar Sierra
13 * Version: 0.8beta, Mathed & Lyx project.
15 * You are free to use and modify this code under the terms of
16 * the GNU General Public Licence version 2 or later.
19 // Note: These math insets are internal to Mathed and are not derived
30 #include "math_defs.h"
31 #include "symbol_def.h"
33 /** Abstract base class for all math objects.
34 A math insets is for use of the math editor only, it isn't a
35 general LyX inset. It's used to represent all the math objects.
36 The formulaInset (a LyX inset) encapsulates a math inset.
40 /// A math inset has a name (usually its LaTeX name), type and font-size
41 MathedInset(string const & nm, short ot, short st);
44 MathedInset(MathedInset *);
46 virtual ~MathedInset() {}
48 virtual void draw(Painter &, int x, int baseline) = 0;
49 /// Write LaTeX and Lyx code
50 virtual void Write(std::ostream &, bool fragile) = 0;
52 virtual MathedInset * Clone() = 0;
53 /// Compute the size of the object
54 virtual void Metrics() = 0;
56 virtual int Ascent() const { return ascent; }
58 virtual int Descent() const { return descent; }
60 virtual int Width() const { return width; }
62 virtual int Height() const { return ascent + descent; }
64 virtual bool GetLimits() const { return false; }
66 virtual void SetLimits(bool) {}
68 string const & GetName() const { return name; }
70 short GetType() const { return objtype; }
72 short GetStyle() const { return size; }
73 //Man: Avoid to use these functions if it's not strictly necessary
75 virtual void SetType(short t) { objtype = t; }
77 virtual void SetStyle(short st) { size = st; } // Metrics();
79 virtual void SetName(string const & n) { name = n; }
101 /// In a near future maybe we use a better fonts renderer than X
102 void drawStr(Painter &, short, int, int, int, string const &);
104 friend class MathedCursor;
106 friend void mathed_init_fonts();