9 #include "math_metricsinfo.h"
18 /** This class extends a MathArray by drawing routines and caches for
24 /// type for positions and sizes
25 typedef MathArray::size_type size_type;
26 /// const iterator into the underlying MathArray
27 typedef MathArray::const_iterator const_iterator;
31 /// rebuild cached metrics information
32 void metrics(MathMetricsInfo const & st) const;
33 /// redraw cell using cache metrics information
34 void draw(Painter & pain, int x, int y) const;
36 /// access to cached x coordinate of last drawing
37 int xo() const { return xo_; }
38 /// access to cached y coordinate of last drawing
39 int yo() const { return yo_; }
40 /// returns x coordinate of given position in the array
41 int pos2x(size_type pos) const;
42 /// returns position of given x coordinate
43 size_type x2pos(int pos) const;
44 /// returns distance of this cell to the point given by x and y
45 // assumes valid position and size cache
46 int dist(int x, int y) const;
48 /// ascent of this cell above the baseline
49 int ascent() const { return ascent_; }
50 /// descent of this cell below the baseline
51 int descent() const { return descent_; }
52 /// height of the cell
53 int height() const { return ascent_ + descent_; }
54 /// width of this cell
55 int width() const { return width_; }
56 /// bounding box of this cell
57 void boundingBox(int & xlow, int & xhigh, int & ylow, int & yhigh);
58 /// find best position to do things
59 //void findPos(PosFinder &) const;
61 /// begin iterator of the underlying MathArray
62 const_iterator begin() const { return data_.begin(); }
63 /// end iterator of the underlying MathArray
64 const_iterator end() const { return data_.end(); }
67 /// the underlying MathArray
69 /// cached width of cell
71 /// cached ascent of cell
73 /// cached descent of cell
75 /// cached x coordinate of last drawing
77 /// cached y coordinate of last drawing
79 /// cache size information of last drawing
80 mutable MathMetricsInfo size_;
83 /// output cell on a stream
84 std::ostream & operator<<(std::ostream & os, MathXArray const & ar);