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 "symbol_def.h"
34 /** Abstract base class for all math objects.
35 A math insets is for use of the math editor only, it isn't a
36 general LyX inset. It's used to represent all the math objects.
37 The formulaInset (a LyX inset) encapsulates a math inset.
41 /// A math inset has a name (usually its LaTeX name), type and font-size
42 MathedInset(string const & nm, short ot, short st);
45 MathedInset(MathedInset *);
47 virtual ~MathedInset() {}
49 virtual void draw(Painter &, int x, int baseline) = 0;
50 /// Write LaTeX and Lyx code
51 virtual void Write(std::ostream &, bool fragile) = 0;
53 virtual MathedInset * Clone() = 0;
54 /// Compute the size of the object
55 virtual void Metrics() = 0;
57 virtual int Ascent() const { return ascent; }
59 virtual int Descent() const { return descent; }
61 virtual int Width() const { return width; }
63 virtual int Height() const { return ascent + descent; }
65 virtual bool GetLimits() const { return false; }
67 virtual void SetLimits(bool) {}
69 string const & GetName() const { return name; }
71 short GetType() const { return objtype; }
73 short GetStyle() const { return size; }
74 //Man: Avoid to use these functions if it's not strictly necessary
76 virtual void SetType(short t) { objtype = t; }
78 virtual void SetStyle(short st) { size = st; } // Metrics();
80 virtual void SetName(string const & n) { name = n; }
102 /// In a near future maybe we use a better fonts renderer than X
103 void drawStr(Painter &, short, int, int, int, string const &);
105 friend class MathedCursor;
107 friend void mathed_init_fonts();