1 |
#ifndef SCROLLBAR_H |
2 |
#define SCROLLBAR_H |
3 |
|
4 |
#include <X11/Xlib.h> |
5 |
|
6 |
struct rxvt_term; |
7 |
|
8 |
struct scrollBar_t { |
9 |
char state; /* scrollbar state */ |
10 |
char init; /* scrollbar has been initialised */ |
11 |
unsigned int beg; /* slider sub-window begin height */ |
12 |
unsigned int end; /* slider sub-window end height */ |
13 |
unsigned int top; /* slider top position */ |
14 |
unsigned int bot; /* slider bottom position */ |
15 |
unsigned int style; /* style: rxvt, xterm, next */ |
16 |
unsigned int width; /* scrollbar width */ |
17 |
int shadow; /* scrollbar shadow width */ |
18 |
int last_bot; /* scrollbar last bottom position */ |
19 |
int last_top; /* scrollbar last top position */ |
20 |
int last_state; /* scrollbar last state */ |
21 |
int len; |
22 |
unsigned char align; |
23 |
Window win; |
24 |
Cursor leftptr_cursor; |
25 |
int (rxvt_term::*update)(int, int, int, int); |
26 |
|
27 |
void setIdle() { state = 1 ; } |
28 |
void setMotion() { state = 'm'; } |
29 |
void setUp() { state = 'U'; } |
30 |
void setDn() { state = 'D'; } |
31 |
}; |
32 |
|
33 |
#define scrollbar_TotalWidth() (scrollBar.width + scrollBar.shadow * 2) |
34 |
#define scrollbar_isMotion() (scrollBar.state == 'm') |
35 |
#define scrollbar_isUp() (scrollBar.state == 'U') |
36 |
#define scrollbar_isDn() (scrollBar.state == 'D') |
37 |
#define scrollbar_isUpDn() (scrollbar_isUp () || scrollbar_isDn ()) |
38 |
|
39 |
#define scrollbarnext_dnval() (scrollBar.end + (scrollBar.width + 1)) |
40 |
#define scrollbarnext_upButton(y) ((y) > scrollBar.end \ |
41 |
&& (y) <= scrollbarnext_dnval ()) |
42 |
#define scrollbarnext_dnButton(y) ((y) > scrollbarnext_dnval()) |
43 |
#define SCROLLNEXT_MINHEIGHT SB_THUMB_MIN_HEIGHT |
44 |
#define scrollbarrxvt_upButton(y) ((y) < scrollBar.beg) |
45 |
#define scrollbarrxvt_dnButton(y) ((y) > scrollBar.end) |
46 |
#define SCROLLRXVT_MINHEIGHT 10 |
47 |
|
48 |
#define scrollbar_minheight() (scrollBar.style == R_SB_NEXT \ |
49 |
? SCROLLNEXT_MINHEIGHT \ |
50 |
: SCROLLRXVT_MINHEIGHT) |
51 |
#define scrollbar_above_slider(y) ((y) < scrollBar.top) |
52 |
#define scrollbar_below_slider(y) ((y) > scrollBar.bot) |
53 |
#define scrollbar_position(y) ((y) - scrollBar.beg) |
54 |
#define scrollbar_size() (scrollBar.end - scrollBar.beg \ |
55 |
- scrollbar_minheight ()) |
56 |
|
57 |
#define R_SB_ALIGN_CENTRE 0 |
58 |
#define R_SB_ALIGN_TOP 1 |
59 |
#define R_SB_ALIGN_BOTTOM 2 |
60 |
|
61 |
#define R_SB_NEXT 1 |
62 |
#define R_SB_XTERM 2 |
63 |
#define R_SB_PLAIN 4 |
64 |
#define R_SB_RXVT 8 |
65 |
|
66 |
#define SB_WIDTH_NEXT 19 |
67 |
#define SB_WIDTH_XTERM 15 |
68 |
#define SB_WIDTH_PLAIN 7 |
69 |
#ifndef SB_WIDTH_RXVT |
70 |
# define SB_WIDTH_RXVT 10 |
71 |
#endif |
72 |
|
73 |
/* |
74 |
* NeXT scrollbar defines |
75 |
*/ |
76 |
#define SB_PADDING 1 |
77 |
#define SB_BORDER_WIDTH 1 |
78 |
#define SB_BEVEL_WIDTH_UPPER_LEFT 1 |
79 |
#define SB_BEVEL_WIDTH_LOWER_RIGHT 2 |
80 |
#define SB_LEFT_PADDING (SB_PADDING + SB_BORDER_WIDTH) |
81 |
#define SB_MARGIN_SPACE (SB_PADDING * 2) |
82 |
#define SB_BUTTON_WIDTH (SB_WIDTH_NEXT - SB_MARGIN_SPACE - SB_BORDER_WIDTH) |
83 |
#define SB_BUTTON_HEIGHT (SB_BUTTON_WIDTH) |
84 |
#define SB_BUTTON_SINGLE_HEIGHT (SB_BUTTON_HEIGHT + SB_PADDING) |
85 |
#define SB_BUTTON_BOTH_HEIGHT (SB_BUTTON_SINGLE_HEIGHT * 2) |
86 |
#define SB_BUTTON_TOTAL_HEIGHT (SB_BUTTON_BOTH_HEIGHT + SB_PADDING) |
87 |
#define SB_BUTTON_BEVEL_X (SB_LEFT_PADDING) |
88 |
#define SB_BUTTON_FACE_X (SB_BUTTON_BEVEL_X + SB_BEVEL_WIDTH_UPPER_LEFT) |
89 |
#define SB_THUMB_MIN_HEIGHT (SB_BUTTON_WIDTH - (SB_PADDING * 2)) |
90 |
/* |
91 |
* +-------------+ |
92 |
* | | <---< SB_PADDING |
93 |
* | ::::::::::: | |
94 |
* | ::::::::::: | |
95 |
* ''''''''''''''''' |
96 |
* ,,,,,,,,,,,,,,,,, |
97 |
* | ::::::::::: | |
98 |
* | ::::::::::: | |
99 |
* | +---------------< SB_BEVEL_WIDTH_UPPER_LEFT |
100 |
* | | :::::::: | |
101 |
* | V :::: vv-------< SB_BEVEL_WIDTH_LOWER_RIGHT |
102 |
* | +---------+ | |
103 |
* | | ......%%| | |
104 |
* | | ......%%| | |
105 |
* | | .. ()..%%| | |
106 |
* | | ......%%| | |
107 |
* | | %%%%%%%%| | |
108 |
* | +---------+ | <......................... |
109 |
* | | <---< SB_PADDING : |
110 |
* | +---------+ | <-+.......... :---< SB_BUTTON_TOTAL_HEIGHT |
111 |
* | | ......%%| | | : : |
112 |
* | | ../\..%%| | |---< SB_BUTTON_HEIGHT : |
113 |
* | | %%%%%%%%| | | : : |
114 |
* | +---------+ | <-+ : : |
115 |
* | | : : |
116 |
* | +---------+ | <-+ :---< SB_BUTTON_BOTH_HEIGHT |
117 |
* | | ......%%| | | : : |
118 |
* | | ..\/..%%| | | : : |
119 |
* | | %%%%%%%%| | |---< SB_BUTTON_SINGLE_HEIGHT |
120 |
* | +---------+ | | : : |
121 |
* | | | : : |
122 |
* +-------------+ <-+.........:............: |
123 |
* ^^|_________| : |
124 |
* || | : |
125 |
* || +---< SB_BUTTON_WIDTH |
126 |
* || : |
127 |
* |+------< SB_PADDING |
128 |
* |: : |
129 |
* +----< SB_BORDER_WIDTH |
130 |
* : : |
131 |
* :............: |
132 |
* | |
133 |
* +---< SB_WIDTH_NEXT |
134 |
*/ |
135 |
|
136 |
#endif |