X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fscreen.h;h=d0d3dc741e4f455fbd76a4ea5e70419e2f07aac9;hb=39ec3d0eb81f6e3ade7bc183f7590f3a0bcd6cf7;hp=83422913cf3074b50c718914bfd0bf4cdb07be95;hpb=1eb8155fa0d2253d9504a8d660cb3d666c1224f6;p=lyx.git diff --git a/src/frontends/screen.h b/src/frontends/screen.h index 83422913cf..d0d3dc741e 100644 --- a/src/frontends/screen.h +++ b/src/frontends/screen.h @@ -5,23 +5,18 @@ * Licence details can be found in the file COPYING. * * \author unknown - * \author John Levon + * \author John Levon * - * Full author contact details are available in file CREDITS + * Full author contact details are available in file CREDITS. */ #ifndef SCREEN_H #define SCREEN_H -#ifdef __GNUG__ -#pragma interface -#endif - class LyXText; -class LyXCursor; +class CursorSlice; class WorkArea; class BufferView; -struct Row; /** * LyXScreen - document rendering management @@ -37,113 +32,30 @@ struct Row; */ class LyXScreen { public: - /// 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 - }; - LyXScreen(); virtual ~LyXScreen(); - /** - * draw the screen from a given position - * @param y the text position to draw from - * - * Uses as much of the already printed pixmap as possible - */ - virtual void draw(LyXText *, BufferView *, unsigned int y) = 0; - - /** - * showManualCursor - display the cursor on the work area - * @param text the lyx text containing the cursor - * @param x the x position of the cursor - * @param y the y position of the row's baseline - * @param asc ascent of the row - * @param desc descent of the row - * @param shape the current shape - */ - virtual void showManualCursor(LyXText const *, int x, int y, - int asc, int desc, - Cursor_Shape shape) = 0; - - /// unpaint the cursor painted by showManualCursor() - virtual void hideCursor() = 0; - - /** - * fit the cursor onto the visible work area, scrolling if necessary - * @param bv the buffer view - * @param vheight the height of the visible region - * @param base_y the top of the lyxtext to look at - * @param x the new x position - * @param y the new y position - * @param a ascent of the cursor's row - * @param d descent of the cursor's row - * @return true if the work area needs scrolling as a result - */ - bool fitManualCursor(BufferView * bv, LyXText * text, - int x, int y, int a, int d); - /// redraw the screen, without using existing pixmap - virtual void redraw(LyXText *, BufferView *); - - /// draw the cursor if it's not already shown - virtual void showCursor(LyXText const *, BufferView const *); - - /** - * 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. - */ - virtual unsigned int topCursorVisible(LyXCursor const & c, int top_y); + virtual void redraw(BufferView & bv); /** * fitCursor - fit the cursor onto the work area - * @param text the text containing the cursor * @param bv the bufferview * @return true if a change was necessary * * Scrolls the screen so that the cursor is visible */ - virtual bool fitCursor(LyXText *, BufferView *); + virtual bool fitCursor(BufferView *); - /// show the cursor if it's not, and vice versa - virtual void cursorToggle(BufferView *) const; + /// hide the visible cursor, if it is visible + void hideCursor(); - /** - * update - update part of the screen rendering - * @param text the containing text region - * @param bv the bufferview - * @param xo the x offset into the text - * @param yo the x offset into the text - * - * 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. - */ - virtual void update(LyXText * text, BufferView * bv, int yo = 0, int xo = 0); - - /// FIXME - virtual void toggleSelection(LyXText *, BufferView *, bool = true, - int y_offset = 0, int x_offset = 0); + /// show the cursor if it is not visible + void showCursor(BufferView & bv); - /// FIXME - at least change the name !! - virtual void toggleToggle(LyXText *, BufferView *, - int y_offset = 0, int x_offset = 0); - - /// FIXME - virtual bool forceClear() const { return force_clear_; } + /// toggle the cursor's visibility + void toggleCursor(BufferView & bv); protected: /// cause the display of the given area of the work area @@ -152,22 +64,31 @@ protected: /// get the work area virtual WorkArea & workarea() const = 0; - /// y1 and y2 are coordinates of the screen - virtual void drawFromTo(LyXText *, BufferView *, int y1, int y2, - int y_offset = 0, int x_offset = 0, bool internal = false); + /// 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 + }; + + /// paint the cursor and store the background + virtual void showCursor(int x, int y, int h, Cursor_Shape shape) = 0; - /// y is a coordinate of the text - virtual void drawOneRow(LyXText *, BufferView *, Row * row, - int y_text, int y_offset = 0, int x_offset = 0); + /// hide the cursor + virtual void removeCursor() = 0; +private: /// grey out (no buffer) void greyOut(); - /// FIXME ? - bool force_clear_; - - /// is the blinking cursor currently drawn + /// is the cursor currently displayed bool cursor_visible_; + + /// is the screen displaying text or the splash screen? + bool greyed_out_; }; #endif // SCREEN_H