typedef unsigned short Dimension;
class WorkArea;
+class Buffer;
/** The class LyXScreen is used for the main Textbody.
Concretely, the screen is held in a pixmap. This pixmap is kept up to
*/
class LyXScreen {
public:
+
+ enum Cursor_Shape {
+ ///
+ BAR_SHAPE,
+ ///
+ L_SHAPE,
+ ///
+ REVERSED_L_SHAPE
+ };
+
///
- LyXScreen(WorkArea &, LyXText * text_ptr);
+ LyXScreen(WorkArea &); //, LyXText * text_ptr);
/** Draws the screen form textposition y. Uses as much of
the already printed pixmap as possible */
- void Draw(long y );
+ void Draw(LyXText *, unsigned long y);
/// Redraws the screen, without using existing pixmap
- void Redraw();
+ void Redraw(LyXText *);
/// Returns a new top so that the cursor is visible
- long TopCursorVisible();
+ unsigned long TopCursorVisible(LyXText const *);
/// Redraws the screen such that the cursor is visible
- int FitCursor();
+ bool FitCursor(LyXText *);
///
- void ShowCursor();
+ void ShowCursor(LyXText const *);
///
void HideCursor();
///
- void CursorToggle();
+ void CursorToggle(LyXText const *);
///
- void ShowManualCursor(long x, long y, int asc, int desc);
+ void ShowManualCursor(LyXText const *, long x, long y, int asc, int desc,
+ Cursor_Shape shape);
/// returns 1 if first has changed, otherwise 0
- int FitManualCursor(long, long, int, int);
+ bool FitManualCursor(LyXText *, long, long, int, int);
///
- void ToggleSelection(bool = true);
+ void ToggleSelection(LyXText *, bool = true);
///
- void ToggleToggle();
+ void ToggleToggle(LyXText *, int y_offset = 0, int x_offset = 0);
/** Updates part of the screen. If text->status is
LyXText::NEED_MORE_REFRESH, we update from the
point of change and to the end of the screen.
If text->status is LyXText::NEED_VERY_LITTLE_REFRESH,
we only update the current row. */
- void Update();
-
- /** Updates part of the screen. Updates till row with cursor,
- or only current row */
- void SmallUpdate();
-
- /// first visible pixel-row
- long first;
+ void Update(LyXText *, int y_offset=0, int x_offset=0);
///
bool cursor_visible;
void expose(int x, int y, int exp_width, int exp_height);
/// y1 and y2 are coordinates of the screen
- void DrawFromTo(int y1, int y2);
-
+ void DrawFromTo(LyXText *, int y1, int y2, int y_offset=0, int x_offset=0);
+
/// y is a coordinate of the text
- void DrawOneRow(Row * row, long & y_text);
+ void DrawOneRow(LyXText *, Row * row, long y_text, int y_offset=0,
+ int x_offset=0);
///
WorkArea & owner;
- ///
- LyXText * text;
-
///
Pixmap cursor_pixmap;
///
int cursor_pixmap_w;
///
int cursor_pixmap_h;
- ///
- long screen_refresh_y;
- ///
- Row * screen_refresh_row;
-
///
GC gc_copy;
};