1 // -*- C++ -*-
2 /**
3  * \file InsetMathXArrow.h
4  * This file is part of LyX, the document processor.
5  * Licence details can be found in the file COPYING.
6  *
7  * \author André Pönitz
8  *
9  * Full author contact details are available in file CREDITS.
10  */
11 
12 #ifndef MATH_XARROWINSET_H
13 #define MATH_XARROWINSET_H
14 
15 #include "InsetMathFrac.h"
16 
17 
18 namespace lyx {
19 
20 
21 /// Wide arrows like \xrightarrow
22 class InsetMathXArrow : public InsetMathFracBase {
23 public:
24 	///
25 	explicit InsetMathXArrow(Buffer * buf, docstring const & name);
26 	///
27 	void draw(PainterInfo & pi, int x, int y) const;
28 	///
29 	void write(WriteStream & os) const;
30 	///
31 	void metrics(MetricsInfo & mi, Dimension & dim) const;
32 	///
33 	void normalize(NormalStream & os) const;
34 	///
35 	void mathmlize(MathStream &) const;
36 	///
37 	void htmlize(HtmlStream &) const;
38 	///
39 	void validate(LaTeXFeatures & features) const;
40 	///
lyxCode()41 	InsetCode lyxCode() const { return MATH_XARROW_CODE; }
42 	///
mathClass()43 	MathClass mathClass() const { return MC_REL; }
44 
45 private:
46 	virtual Inset * clone() const;
47 	///
48 	bool upper() const;
49 	///
50 	docstring const name_;
51 };
52 
53 
54 } // namespace lyx
55 #endif
56