* 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;
-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,
};
///
- 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(LyXText *, unsigned long y);
+ void draw(LyXText *, BufferView *, unsigned int y);
/// Redraws the screen, without using existing pixmap
- void Redraw(LyXText *);
+ void redraw(LyXText *, BufferView *);
/// Returns a new top so that the cursor is visible
- unsigned long TopCursorVisible(LyXText const *);
+ unsigned int topCursorVisible(LyXText const *);
/// Redraws the screen such that the cursor is visible
- bool FitCursor(LyXText *);
+ bool fitCursor(LyXText *, BufferView *);
///
- void ShowCursor(LyXText const *);
+ void showCursor(LyXText const *, BufferView const *);
///
- void HideCursor();
+ void hideCursor();
///
- void CursorToggle(LyXText const *);
+ 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
- bool FitManualCursor(LyXText *, long, long, int, int);
+ bool fitManualCursor(LyXText *, BufferView *, int, int, int, int);
///
- void ToggleSelection(LyXText *, bool = true);
+ void toggleSelection(LyXText *, BufferView *, bool = true,
+ int y_offset = 0, int x_offset = 0);
///
- void ToggleToggle(LyXText *);
+ 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(LyXText *);
-
- /// first visible pixel-row
- unsigned 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(LyXText *, 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(LyXText *, 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_h;
///
GC gc_copy;
+ ///
+ bool force_clear;
};
#endif