* LyX, The Document Processor
*
* Copyright 1995 Matthias Ettrich
- * Copyright 1995-2000 The LyX Team
+ * Copyright 1995-2001 The LyX Team
*
* ====================================================== */
#pragma interface
#endif
-#include FORMS_H_LOCATION
#include <X11/Xlib.h>
class LyXText;
+class WorkArea;
+class Buffer;
+class BufferView;
+
struct Row;
+
+///
typedef unsigned short Dimension;
-class WorkArea;
/** 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,
};
///
- LyXScreen(WorkArea &, LyXText * text_ptr);
+ LyXScreen(WorkArea &);
+ ///
+ ~LyXScreen();
+
+ /// Sets the cursor color to LColor::cursor.
+ void setCursorColor();
+
/** Draws the screen form textposition y. Uses as much of
the already printed pixmap as possible */
- void Draw(long y );
+ void draw(LyXText *, BufferView *, unsigned int y);
/// Redraws the screen, without using existing pixmap
- void Redraw();
+ void redraw(LyXText *, BufferView *);
/// Returns a new top so that the cursor is visible
- long TopCursorVisible();
+ unsigned int topCursorVisible(LyXText const *);
/// Redraws the screen such that the cursor is visible
- int FitCursor();
+ bool fitCursor(LyXText *, BufferView *);
///
- void ShowCursor();
+ void showCursor(LyXText const *, BufferView const *);
///
- void HideCursor();
+ void hideCursor();
///
- void CursorToggle();
+ void cursorToggle(BufferView *) const;
///
- void ShowManualCursor(long x, long y, int asc, int desc,
+ void showManualCursor(LyXText const *, int x, int 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 *, BufferView *, int, int, int, int);
///
- void ToggleSelection(bool = true);
+ void toggleSelection(LyXText *, BufferView *, bool = true,
+ int y_offset = 0, int x_offset = 0);
///
- void ToggleToggle();
+ void toggleToggle(LyXText *, BufferView *,
+ 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 *, BufferView *, int y_offset=0, int x_offset=0);
+ ///
+ bool forceClear() const { return force_clear; }
///
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 *, BufferView *, int y1, int y2,
+ int y_offset = 0, int x_offset = 0, bool internal=false);
+
/// y is a coordinate of the text
- void DrawOneRow(Row * row, long & y_text);
+ void drawOneRow(LyXText *, BufferView *, Row * row,
+ int 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;
+ ///
+ bool force_clear;
};
#endif