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.22 by ayin, Tue Feb 19 17:49:36 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,
47}; 40};
48 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,
53};
54
49struct scrollBar_t { 55struct scrollBar_t
56{
50 rxvt_term *term; 57 rxvt_term *term;
51 char state; /* scrollbar state */ 58 sb_state state; /* scrollbar state */
52 char init; /* scrollbar has been initialised */ 59 char init; /* scrollbar has been initialised */
53 unsigned int beg; /* slider sub-window begin height */ 60 int beg; /* slider sub-window begin height */
54 unsigned int end; /* slider sub-window end height */ 61 int end; /* slider sub-window end height */
55 unsigned int top; /* slider top position */ 62 int top; /* slider top position */
56 unsigned int bot; /* slider bottom position */ 63 int bot; /* slider bottom position */
57 unsigned int style; /* style: rxvt, xterm, next */ 64 sb_style style; /* style: rxvt, xterm, next */
58 unsigned int width; /* scrollbar width */ 65 int width; /* scrollbar width */
59 int shadow; /* scrollbar shadow width */ 66 int shadow; /* scrollbar shadow width */
60 int last_bot; /* scrollbar last bottom position */ 67 int last_bot; /* scrollbar last bottom position */
61 int last_top; /* scrollbar last top position */ 68 int last_top; /* scrollbar last top position */
62 int last_state; /* scrollbar last state */ 69 int last_state; /* scrollbar last state */
63 unsigned char align; 70 sb_align align;
64 Window win; 71 Window win;
65 Cursor leftptr_cursor; 72 Cursor leftptr_cursor;
66 int (scrollBar_t::*update)(int); 73 int (scrollBar_t::*update)(int);
67 void setup (rxvt_term *); 74 void setup (rxvt_term *);
68 void resize (); 75 void resize ();
69 int map (int); 76 void map (int);
70 int show (int); 77 int show (int);
71 void destroy (); 78 void destroy ();
79 int color ();
72 80
73 bool upButton (int y) 81 bool upButton (int y)
74 { 82 {
75 if (style == R_SB_NEXT) 83 if (style == SB_STYLE_NEXT)
76 return y > end && y <= end + width + 1; 84 return y > end && y <= end + width + 1;
77 if (style == R_SB_RXVT) 85 if (style == SB_STYLE_RXVT)
78 return y < beg; 86 return y < beg;
79 return false; 87 return false;
80 } 88 }
81 bool dnButton (int y) 89 bool dnButton (int y)
82 { 90 {
83 if (style == R_SB_NEXT) 91 if (style == SB_STYLE_NEXT)
84 return y > end + width + 1; 92 return y > end + width + 1;
85 if (style == R_SB_RXVT) 93 if (style == SB_STYLE_RXVT)
86 return y > end; 94 return y > end;
87 return false; 95 return false;
88 } 96 }
89 unsigned min_height () 97 int min_height ()
90 { 98 {
91 return style == R_SB_NEXT ? SB_THUMB_MIN_HEIGHT : 10; 99 return style == SB_STYLE_NEXT ? SB_THUMB_MIN_HEIGHT : 10;
92 } 100 }
93 unsigned size () 101 int size ()
94 { 102 {
95 return end - beg - min_height (); 103 return max (end - beg, 0);
96 } 104 }
97 unsigned total_width () 105 int total_width ()
98 { 106 {
99 return width + shadow * 2; 107 return width + shadow * 2;
100 } 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
101 122
102#if defined(NEXT_SCROLLBAR) 123#if defined(NEXT_SCROLLBAR)
103 GC blackGC, 124 GC blackGC,
104 whiteGC, 125 whiteGC,
105 grayGC, 126 grayGC,
108 Pixmap dimple, 129 Pixmap dimple,
109 upArrow, 130 upArrow,
110 downArrow, 131 downArrow,
111 upArrowHi, 132 upArrowHi,
112 downArrowHi; 133 downArrowHi;
134 bool last_has_sb;
113#endif 135#endif
114 136
115#if defined(RXVT_SCROLLBAR) 137#if defined(RXVT_SCROLLBAR)
116 GC scrollbarGC, 138 GC scrollbarGC,
117 topShadowGC, 139 topShadowGC,
140 // scrollbar-plain.C 162 // scrollbar-plain.C
141 int show_plain (int); 163 int show_plain (int);
142 164
143 void init_next (); 165 void init_next ();
144}; 166};
145
146#define scrollbar_above_slider(y) ((y) < scrollBar.top)
147#define scrollbar_below_slider(y) ((y) > scrollBar.bot)
148#define scrollbar_position(y) ((y) - scrollBar.beg)
149 167
150 /* 168 /*
151 * +-------------+ 169 * +-------------+
152 * | | <---< SB_PADDING 170 * | | <---< SB_PADDING
153 * | ::::::::::: | 171 * | ::::::::::: |

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines