]> git.lyx.org Git - features.git/blob - src/mathed/math_inset.h
d17d0a90c90eec92beff4a45bb73fdf68439a396
[features.git] / src / mathed / math_inset.h
1 // -*- C++ -*-
2 /*
3  *  File:        math_inset.h
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.
8  *
9  *  Dependencies: Xlib, XForms
10  *
11  *  Copyright: 1996, 1997 Alejandro Aguilar Sierra
12  *
13  *   Version: 0.8beta, Mathed & Lyx project.
14  *
15  *   You are free to use and modify this code under the terms of
16  *   the GNU General Public Licence version 2 or later.
17  */
18
19 //  Note: These math insets are internal to Mathed and are not derived
20 //        from lyx inset.
21
22 #ifndef MATH_INSET
23 #define MATH_INSET
24
25 #ifdef __GNUG__
26 #pragma interface
27 #endif
28
29 #include "LString.h"
30 #include "symbol_def.h"
31
32 class Painter;
33
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.
38 */
39 class MathedInset {
40 public: 
41         /** A math inset has a name (usually its LaTeX name),
42             type and font-size
43         */
44         MathedInset(string const & nm, short ot, short st);
45         /// The virtual base destructor
46         virtual ~MathedInset() {}
47         /// Draw the object
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;
51         /// Reproduces itself
52         virtual MathedInset * Clone() = 0;
53         /// Compute the size of the object
54         virtual void Metrics() = 0; 
55         /// 
56         virtual int Ascent() const;
57         ///
58         virtual int Descent() const;
59         ///
60         virtual int Width() const;
61         ///
62         virtual int Height() const;
63         ///
64         virtual bool GetLimits() const;
65         ///
66         virtual void SetLimits(bool);
67         ///
68         string const & GetName() const;
69         ///
70         short GetType() const;
71         ///
72         short GetStyle() const;
73         //Man:  Avoid to use these functions if it's not strictly necessary 
74         ///
75         virtual void  SetType(short t);
76         ///
77         virtual void  SetStyle(short st);
78         ///
79         virtual void  SetName(string const & n);
80         ///
81         static int workWidth;
82         ///
83         static void defaultAscent(int da);
84         ///
85         static void defaultDescent(int dd);
86         ///
87         static void defaultWidth(int dw);
88         ///
89         short size() const;
90 protected:
91         ///
92         string name;
93         ///
94         short objtype;
95         ///
96         int width;
97         ///
98         int ascent;
99         ///
100         int descent;
101         /// Default metrics
102         static int df_asc;
103         ///
104         static int df_des;
105         ///
106         static int df_width;
107         /// In a near future maybe we use a better fonts renderer than X
108         void drawStr(Painter &, short, int, int, int, string const &);
109         ///
110         void size(short s);
111         ///
112         void incSize();
113 private:
114         ///
115         short size_;
116 };
117 #endif