]> git.lyx.org Git - lyx.git/blob - src/frontends/xforms/xscreen.h
cursor.diff, bug 1095
[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         /** Draws the screen form textposition y. Uses as much of
39             the already printed pixmap as possible */
40         virtual void draw(LyXText *, BufferView *, unsigned int y);
41
42 protected:
43         /// get the work area
44         virtual WorkArea & workarea() const { return owner_; }
45
46         /// Copies specified area of pixmap to screen
47         virtual void expose(int x, int y, int w, int h);
48
49         /// paint the cursor and store the background
50         virtual void showCursor(int x, int y, int h, Cursor_Shape shape);
51
52         /// hide the cursor
53         virtual void removeCursor();
54
55 private:
56         /// our owning widget
57         XWorkArea & owner_;
58
59         /// backing pixmap for cursor
60         Pixmap nocursor_pixmap_;
61         /// x of backing pixmap
62         int cursor_x_;
63         /// y of backing pixmap
64         int cursor_y_;
65         /// width of backing pixmap
66         int cursor_w_;
67         /// height of backing pixmap
68         int cursor_h_;
69         /// cursor cs
70         GC gc_copy;
71 };
72
73 #endif