ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/scrollbar.h
(Generate patch)

Comparing rxvt-unicode/src/scrollbar.h (file contents):
Revision 1.23 by root, Wed Nov 5 14:43:54 2008 UTC vs.
Revision 1.31 by sf-exg, Fri May 30 19:44:11 2014 UTC

1#ifndef SCROLLBAR_H 1#ifndef SCROLLBAR_H
2#define SCROLLBAR_H 2#define SCROLLBAR_H
3 3
4#include <X11/Xlib.h> 4#include <X11/Xlib.h>
5#include "rxvtutil.h"
5 6
6struct rxvt_term; 7struct rxvt_term;
7
8#define R_SB_NEXT 1
9#define R_SB_XTERM 2
10#define R_SB_PLAIN 4
11#define R_SB_RXVT 8
12
13#define R_SB_ALIGN_CENTRE 0
14#define R_SB_ALIGN_TOP 1
15#define R_SB_ALIGN_BOTTOM 2
16 8
17#define SB_WIDTH_NEXT 19 9#define SB_WIDTH_NEXT 19
18#define SB_WIDTH_XTERM 15 10#define SB_WIDTH_XTERM 15
19#define SB_WIDTH_PLAIN 7 11#define SB_WIDTH_PLAIN 7
20#ifndef SB_WIDTH_RXVT 12#ifndef SB_WIDTH_RXVT
38#define SB_BUTTON_BEVEL_X (SB_LEFT_PADDING) 30#define SB_BUTTON_BEVEL_X (SB_LEFT_PADDING)
39#define SB_BUTTON_FACE_X (SB_BUTTON_BEVEL_X + SB_BEVEL_WIDTH_UPPER_LEFT) 31#define SB_BUTTON_FACE_X (SB_BUTTON_BEVEL_X + SB_BEVEL_WIDTH_UPPER_LEFT)
40#define SB_THUMB_MIN_HEIGHT (SB_BUTTON_WIDTH - (SB_PADDING * 2)) 32#define SB_THUMB_MIN_HEIGHT (SB_BUTTON_WIDTH - (SB_PADDING * 2))
41 33
42enum sb_state { 34enum sb_state {
35 SB_STATE_OFF,
43 STATE_IDLE = 1, 36 SB_STATE_IDLE,
44 STATE_MOTION, 37 SB_STATE_MOTION,
45 STATE_UP, 38 SB_STATE_UP,
46 STATE_DOWN, 39 SB_STATE_DOWN,
40};
41
42enum sb_style {
43 SB_STYLE_NEXT = 1,
44 SB_STYLE_XTERM = 2,
45 SB_STYLE_PLAIN = 4,
46 SB_STYLE_RXVT = 8,
47};
48
49enum sb_align {
50 SB_ALIGN_CENTRE,
51 SB_ALIGN_TOP,
52 SB_ALIGN_BOTTOM,
47}; 53};
48 54
49struct scrollBar_t 55struct scrollBar_t
50{ 56{
51 rxvt_term *term; 57 rxvt_term *term;
52 char state; /* scrollbar state */ 58 sb_state state; /* scrollbar state */
53 char init; /* scrollbar has been initialised */ 59 char init; /* scrollbar has been initialised */
54 unsigned int beg; /* slider sub-window begin height */ 60 int beg; /* slider sub-window begin height */
55 unsigned int end; /* slider sub-window end height */ 61 int end; /* slider sub-window end height */
56 unsigned int top; /* slider top position */ 62 int top; /* slider top position */
57 unsigned int bot; /* slider bottom position */ 63 int bot; /* slider bottom position */
58 unsigned int style; /* style: rxvt, xterm, next */ 64 sb_style style; /* style: rxvt, xterm, next */
59 unsigned int width; /* scrollbar width */ 65 int width; /* scrollbar width */
60 int shadow; /* scrollbar shadow width */ 66 int shadow; /* scrollbar shadow width */
61 int last_bot; /* scrollbar last bottom position */ 67 int last_bot; /* scrollbar last bottom position */
62 int last_top; /* scrollbar last top position */ 68 int last_top; /* scrollbar last top position */
63 int last_state; /* scrollbar last state */ 69 int last_state; /* scrollbar last state */
64 unsigned char align; 70 sb_align align;
65 Window win; 71 Window win;
66 Cursor leftptr_cursor; 72 Cursor leftptr_cursor;
67 int (scrollBar_t::*update)(int); 73 int (scrollBar_t::*update)(int);
68 void setup (rxvt_term *); 74 void setup (rxvt_term *);
69 void resize (); 75 void resize ();
70 int map (int); 76 void map (int);
71 int show (int); 77 int show (int);
72 void destroy (); 78 void destroy ();
79 int color ();
73 80
74 bool upButton (int y) 81 bool upButton (int y)
75 { 82 {
76 if (style == R_SB_NEXT) 83 if (style == SB_STYLE_NEXT)
77 return y > end && y <= end + width + 1; 84 return y > end && y <= end + width + 1;
78 if (style == R_SB_RXVT) 85 if (style == SB_STYLE_RXVT)
79 return y < beg; 86 return y < beg;
80 return false; 87 return false;
81 } 88 }
82 bool dnButton (int y) 89 bool dnButton (int y)
83 { 90 {
84 if (style == R_SB_NEXT) 91 if (style == SB_STYLE_NEXT)
85 return y > end + width + 1; 92 return y > end + width + 1;
86 if (style == R_SB_RXVT) 93 if (style == SB_STYLE_RXVT)
87 return y > end; 94 return y > end;
88 return false; 95 return false;
89 } 96 }
90 unsigned min_height () 97 int min_height ()
91 { 98 {
92 return style == R_SB_NEXT ? SB_THUMB_MIN_HEIGHT : 10; 99 return style == SB_STYLE_NEXT ? SB_THUMB_MIN_HEIGHT : 10;
93 } 100 }
94 unsigned size () 101 int size ()
95 { 102 {
96 return end - beg - min_height (); 103 return max (end - beg, 0);
97 } 104 }
98 unsigned total_width () 105 int total_width ()
99 { 106 {
100 return width + shadow * 2; 107 return width + shadow * 2;
101 } 108 }
109 bool above_slider (int y)
110 {
111 return y < top;
112 }
113 bool below_slider (int y)
114 {
115 return y > bot;
116 }
117 int position (int y)
118 {
119 return y - beg;
120 }
121
102 122
103#if defined(NEXT_SCROLLBAR) 123#if defined(NEXT_SCROLLBAR)
104 GC blackGC, 124 GC blackGC,
105 whiteGC, 125 whiteGC,
106 grayGC, 126 grayGC,
109 Pixmap dimple, 129 Pixmap dimple,
110 upArrow, 130 upArrow,
111 downArrow, 131 downArrow,
112 upArrowHi, 132 upArrowHi,
113 downArrowHi; 133 downArrowHi;
134 bool last_has_sb;
114#endif 135#endif
115 136
116#if defined(RXVT_SCROLLBAR) 137#if defined(RXVT_SCROLLBAR)
117 GC scrollbarGC, 138 GC scrollbarGC,
118 topShadowGC, 139 topShadowGC,
141 // scrollbar-plain.C 162 // scrollbar-plain.C
142 int show_plain (int); 163 int show_plain (int);
143 164
144 void init_next (); 165 void init_next ();
145}; 166};
146
147#define scrollbar_above_slider(y) ((y) < scrollBar.top)
148#define scrollbar_below_slider(y) ((y) > scrollBar.bot)
149#define scrollbar_position(y) ((y) - scrollBar.beg)
150 167
151 /* 168 /*
152 * +-------------+ 169 * +-------------+
153 * | | <---< SB_PADDING 170 * | | <---< SB_PADDING
154 * | ::::::::::: | 171 * | ::::::::::: |

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines