]> git.lyx.org Git - lyx.git/blob - src/mathed/math_xdata.h
fine-tuning for mouse clicks on script insets;
[lyx.git] / src / mathed / math_xdata.h
1 // -*- C++ -*-
2
3 #ifndef MATHEDXARRAY_H
4 #define MATHEDXARRAY_H
5
6 #include <iosfwd>
7
8 #include "math_data.h"
9 #include "math_metricsinfo.h"
10
11 #ifdef __GNUG__
12 #pragma interface
13 #endif
14
15 class Painter;
16
17 class MathXArray
18 {
19 public:
20         ///
21         typedef MathArray::size_type       size_type;
22         ///
23         typedef MathArray::const_iterator  const_iterator;
24
25         ///
26         MathXArray();
27         ///
28         void metrics(MathMetricsInfo const & st) const;
29         ///
30         void draw(Painter & pain, int x, int y) const;
31
32         ///
33         int xo() const { return xo_; }
34         ///
35         int yo() const { return yo_; }
36         ///
37         int pos2x(size_type pos) const;
38         ///
39         size_type x2pos(int pos) const;
40         /// returns distance of this cell to the point given by x and y
41         // assumes valid position and size cache
42         int dist(int x, int y) const;
43
44         ///
45         int ascent() const { return ascent_; }
46         ///
47         int descent() const { return descent_; }
48         ///
49         int height() const { return ascent_ + descent_; }
50         ///
51         int width() const { return width_; }
52         /// do we cover point(x, y)?
53         bool covers(int x, int y) const;
54
55         ///
56         const_iterator begin() const { return data_.begin(); }
57         ///
58         const_iterator end() const { return data_.end(); }
59         
60 public:
61         ///
62         MathArray data_;
63         ///
64         mutable int width_;
65         ///
66         mutable int ascent_;
67         ///
68         mutable int descent_;
69         ///
70         mutable int xo_;
71         ///
72         mutable int yo_;
73         ///
74         mutable MathMetricsInfo size_;
75 };
76
77 std::ostream & operator<<(std::ostream & os, MathXArray const & ar);
78
79 #endif