class RichEdit : public Ctrl, private TextArrayOps { public: virtual void Layout(); virtual void Paint(Draw& w); virtual bool Key(dword key, int count); virtual void LeftDown(Point p, dword flags); virtual void MiddleDown(Point p, dword flags); virtual void LeftUp(Point p, dword flags); virtual void LeftDrag(Point p, dword flags); virtual void RightDown(Point p, dword flags); virtual void LeftDouble(Point p, dword flags); virtual void LeftTriple(Point p, dword flags); virtual void MouseMove(Point p, dword flags); virtual void LeftRepeat(Point p, dword flags); virtual void MouseWheel(Point p, int zdelta, dword keyflags); virtual void CancelMode(); virtual Image CursorImage(Point p, dword flags); virtual Value GetData() const; virtual void SetData(const Value& v); virtual void Serialize(Stream& s); virtual void DragAndDrop(Point p, PasteClip& d); virtual void DragRepeat(Point p); virtual void DragLeave(); virtual String GetSelectionData(const String& fmt) const; private: Size p_size; bool sizetracking; ScrollBar sb; Scroller scroller; RichRuler ruler; RichText text; RichText::FormatInfo formatinfo; int cursor, anchor; RichCaret cursorc; RichPos cursorp; RichPos anchorp; int tablesel; Rect cells; int gx; int oselh, osell; int objectpos; Rect objectrect; RichHotPos tabmove; int mpos; int undosteps; Rect dropcaret; bool selclick; DropList face; FontHeight height; DataPusher hyperlink; DataPusher label; DataPusher indexentry; FrameRight