1 // -*- C++ -*-
2 /**
3  * \file InsetMathRoot.h
4  * This file is part of LyX, the document processor.
5  * Licence details can be found in the file COPYING.
6  *
7  * \author Alejandro Aguilar Sierra
8  * \author André Pönitz
9  *
10  * Full author contact details are available in file CREDITS.
11  */
12 
13 #ifndef MATH_ROOT_H
14 #define MATH_ROOT_H
15 
16 #include "InsetMathNest.h"
17 
18 
19 namespace lyx {
20 
21 
22 /// The general n-th root inset.
23 class InsetMathRoot : public InsetMathNest {
24 public:
25 	///
26 	InsetMathRoot(Buffer * buf);
27 	///
28 	bool idxUpDown(Cursor & cur, bool up) const;
29 	///
30 	void metrics(MetricsInfo & mi, Dimension & dim) const;
31 	///
32 	void draw(PainterInfo & pi, int x, int y) const;
33 
34 	///
35 	void write(WriteStream & os) const;
36 	///
37 	void normalize(NormalStream &) const;
38 	///
39 	void mathmlize(MathStream &) const;
40 	///
41 	void htmlize(HtmlStream &) const;
42 	///
43 	void maple(MapleStream &) const;
44 	///
45 	void mathematica(MathematicaStream &) const;
46 	///
47 	void octave(OctaveStream &) const;
48 	///
lyxCode()49 	InsetCode lyxCode() const { return MATH_ROOT_CODE; }
50 	///
51 	void validate(LaTeXFeatures &) const;
52 
53 private:
54 	virtual Inset * clone() const;
55 };
56 
57 void mathed_root_metrics(MetricsInfo & mi, MathData const & nucleus,
58                          MathData const * root, Dimension & dim);
59 
60 void mathed_draw_root(PainterInfo & pi, int x, int y, MathData const & nucleus,
61                       MathData const * root, Dimension const & dim);
62 
63 
64 } // namespace lyx
65 #endif
66