X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fscreen.h;h=d0d3dc741e4f455fbd76a4ea5e70419e2f07aac9;hb=39ec3d0eb81f6e3ade7bc183f7590f3a0bcd6cf7;hp=378d9d991e7936b352caf4e64f40c4ab4fcc2906;hpb=021ad027a9d378b5d6e2e78ed768428867e1f7a8;p=lyx.git diff --git a/src/frontends/screen.h b/src/frontends/screen.h index 378d9d991e..d0d3dc741e 100644 --- a/src/frontends/screen.h +++ b/src/frontends/screen.h @@ -1,32 +1,25 @@ // -*- C++ -*- /** * \file screen.h - * Copyright 1995-2002 the LyX Team - * Read the file COPYING + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * * \author unknown - * \author John Levon - */ - -#ifndef LYXSCREEN_H -#define LYXSCREEN_H - -#ifdef __GNUG__ -#pragma interface -#endif + * \author John Levon + * + * Full author contact details are available in file CREDITS. + */ -#include +#ifndef SCREEN_H +#define SCREEN_H class LyXText; -class LyXCursor; +class CursorSlice; class WorkArea; -class Buffer; class BufferView; -struct Row; - /** - * LScreen - document rendering management + * LyXScreen - document rendering management * * This class is used to manage the on-screen rendering inside the * work area; it is responsible for deciding which LyXText rows @@ -37,108 +30,65 @@ struct Row; * * The blinking cursor is also handled here. */ -class LScreen { +class LyXScreen { public: - /// + LyXScreen(); + + virtual ~LyXScreen(); + + /// redraw the screen, without using existing pixmap + virtual void redraw(BufferView & bv); + + /** + * fitCursor - fit the cursor onto the work area + * @param bv the bufferview + * @return true if a change was necessary + * + * Scrolls the screen so that the cursor is visible + */ + virtual bool fitCursor(BufferView *); + + /// hide the visible cursor, if it is visible + void hideCursor(); + + /// show the cursor if it is not visible + void showCursor(BufferView & bv); + + /// toggle the cursor's visibility + void toggleCursor(BufferView & bv); + +protected: + /// cause the display of the given area of the work area + virtual void expose(int x, int y, int w, int h) = 0; + + /// get the work area + virtual WorkArea & workarea() const = 0; + + /// types of cursor in work area enum Cursor_Shape { - /// + /// normal I-beam BAR_SHAPE, - /// + /// L-shape for locked insets of a different language L_SHAPE, - /// + /// reverse L-shape for RTL text REVERSED_L_SHAPE }; - /// - LScreen(WorkArea &); - - /// - ~LScreen(); + /// paint the cursor and store the background + virtual void showCursor(int x, int y, int h, Cursor_Shape shape) = 0; - void reset(); - - /// Sets the cursor color to LColor::cursor. - void setCursorColor(); + /// hide the cursor + virtual void removeCursor() = 0; - /** Draws the screen form textposition y. Uses as much of - the already printed pixmap as possible */ - void draw(LyXText *, BufferView *, unsigned int y); +private: + /// grey out (no buffer) + void greyOut(); - /// Redraws the screen, without using existing pixmap - void redraw(LyXText *, BufferView *); + /// is the cursor currently displayed + bool cursor_visible_; - /** - * topCursorVisible - get a new "top" to make the cursor visible - * @param c the cursor - * @param top_y the current y location of the containing region - * - * This helper function calculates a new y co-ordinate for - * the top of the containing region such that the cursor contained - * within the LyXText is "nicely" visible. - */ - unsigned int topCursorVisible(LyXCursor const & c, int top_y); - - /// Redraws the screen such that the cursor is visible - bool fitCursor(LyXText *, BufferView *); - /// - void showCursor(LyXText const *, BufferView const *); - /// - void hideCursor(); - /// - void cursorToggle(BufferView *) const; - /// - 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 *, BufferView *, int, int, int, int); - /// - void toggleSelection(LyXText *, BufferView *, bool = true, - int y_offset = 0, int x_offset = 0); - /// - 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 *, BufferView *, int y_offset=0, int x_offset=0); - /// - bool forceClear() const { return force_clear; } - - /// - bool cursor_visible; -private: - /// Copies specified area of pixmap to screen - void expose(int x, int y, int exp_width, int exp_height); - - /// y1 and y2 are coordinates of the screen - 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 *, BufferView *, Row * row, - int y_text, int y_offset = 0, int x_offset = 0); - - /// - WorkArea & owner; - - /// - Pixmap cursor_pixmap; - /// - int cursor_pixmap_x; - /// - int cursor_pixmap_y; - /// - int cursor_pixmap_w; - /// - int cursor_pixmap_h; - /// - GC gc_copy; - /// - bool force_clear; + /// is the screen displaying text or the splash screen? + bool greyed_out_; }; -#endif +#endif // SCREEN_H