]> git.lyx.org Git - lyx.git/blob - src/frontends/xforms/xscreen.h
drop a few fitCursor() and draw() calls
[lyx.git] / src / frontends / xforms / xscreen.h
1 // -*- C++ -*-
2 /**
3  * \file xscreen.h
4  * This file is part of LyX, the document processor.
5  * Licence details can be found in the file COPYING.
6  *
7  * \author unknown
8  * \author John Levon
9  *
10  * Full author contact details are available in file CREDITS
11  */
12
13 #ifndef XSCREEN_H
14 #define XSCREEN_H
15
16
17 #include "screen.h"
18 #include <X11/Xlib.h> // for Pixmap, GC
19
20 class XWorkArea;
21
22 /** The class XScreen is used for the main Textbody.
23     Concretely, the screen is held in a pixmap.  This pixmap is kept up to
24     date and used to optimize drawing on the screen.
25     This class also handles the drawing of the cursor and partly the selection.
26  */
27 class XScreen : public LyXScreen {
28 public:
29         ///
30         XScreen(XWorkArea &);
31
32         ///
33         virtual ~XScreen();
34
35         /// Sets the cursor color to LColor::cursor.
36         virtual void setCursorColor();
37
38 protected:
39         /// get the work area
40         virtual WorkArea & workarea() const { return owner_; }
41
42         /// Copies specified area of pixmap to screen
43         virtual void expose(int x, int y, int w, int h);
44
45         /// paint the cursor and store the background
46         virtual void showCursor(int x, int y, int h, Cursor_Shape shape);
47
48         /// hide the cursor
49         virtual void removeCursor();
50
51 private:
52         /// our owning widget
53         XWorkArea & owner_;
54
55         /// backing pixmap for cursor
56         Pixmap nocursor_pixmap_;
57         /// x of backing pixmap
58         int cursor_x_;
59         /// y of backing pixmap
60         int cursor_y_;
61         /// width of backing pixmap
62         int cursor_w_;
63         /// height of backing pixmap
64         int cursor_h_;
65         /// cursor cs
66         GC gc_copy;
67 };
68
69 #endif