#pragma interface
#endif
-class Painter;
+class MathPainterInfo;
+class TextPainter;
/** This class extends a MathArray by drawing routines and caches for
/// constructor
MathXArray();
/// rebuild cached metrics information
- void metrics(MathMetricsInfo const & st) const;
+ void metrics(MathMetricsInfo & st) const;
/// redraw cell using cache metrics information
- void draw(Painter & pain, int x, int y) const;
+ void draw(MathPainterInfo & pain, int x, int y) const;
+ /// rebuild cached metrics information
+ void metricsT(TextMetricsInfo const & st) const;
+ /// redraw cell using cache metrics information
+ void drawT(TextPainter & pain, int x, int y) const;
+ /// mark cell for re-drawing
+ void touch() const;
/// access to cached x coordinate of last drawing
int xo() const { return xo_; }
/// access to cached y coordinate of last drawing
int yo() const { return yo_; }
+ /// access to cached x coordinate of mid point of last drawing
+ int xm() const { return xo_ + width_ / 2; }
+ /// access to cached y coordinate of mid point of last drawing
+ int ym() const { return yo_ + (descent_ - ascent_) / 2; }
/// returns x coordinate of given position in the array
int pos2x(size_type pos) const;
/// returns position of given x coordinate
void boundingBox(int & xlow, int & xhigh, int & ylow, int & yhigh);
/// find best position to do things
//void findPos(PosFinder &) const;
+ /// gives center coordinates
+ void center(int & x, int & y) const;
+ /// adjust (x,y) to point on boundary on a straight line from the center
+ void towards(int & x, int & y) const;
/// begin iterator of the underlying MathArray
const_iterator begin() const { return data_.begin(); }
/// end iterator of the underlying MathArray
const_iterator end() const { return data_.end(); }
-
+
public:
/// the underlying MathArray
MathArray data_;
mutable int yo_;
/// cache size information of last drawing
mutable MathMetricsInfo size_;
+ /// cached cleaness of cell
+ mutable bool clean_;
+ /// cached draw status of cell
+ mutable bool drawn_;
};
/// output cell on a stream