summary refs log tree commit diff stats
path: root/test/testdir/largefile.txt
Commit message (Collapse)AuthorAgeFilesLines
* test cases for directory.pyhut2009-11-231-0/+1
hut <hut@lavabit.com> 2010-01-02 00:10:49 +0100 updated pydoc documentation' href='/akspecs/ranger/commit/doc/pydoc/ranger.gui.widgets.console_mode.html?h=v1.1.0&id=4c13e1f2d85483e026d79ab05da9f1e8e4b45293'>4c13e1f2 ^
4c13e1f2 ^






34a60763 ^
62cd83ba ^
b3556b21 ^
62cd83ba ^



b3556b21 ^
62cd83ba ^






4c13e1f2 ^
























1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 

                                                                         






                                                                                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                           
                                                                                                                              
     



                                                                                                                                           
     






                                                                                                                                                                              
























                                                                                                                                                                                                                                      
revision' href='/acidbong/suckless/dwm/blame/draw.c?h=5.6.1&id=77e5f3167c97863ef8e27b6e57fd35ee0c73c8ff'>^


9833610 ^
2e834e9 ^
c73d5cb ^
2e834e9 ^
b55bd70 ^
2e834e9 ^
39677ec ^
8a34fa5 ^
4250c26 ^
4d67199 ^
61a1910 ^

39677ec ^
8a34fa5 ^
650a1fb ^


8a34fa5 ^
9e8b325 ^
8a34fa5 ^
4d67199 ^
28a5219 ^



4d67199 ^
28a5219 ^
4d67199 ^
650a1fb ^
8a34fa5 ^
b55bd70 ^
9833610 ^
b55bd70 ^
7e597ae ^
9833610 ^
8a34fa5 ^
9833610 ^
b55bd70 ^
7e597ae ^

c73d5cb ^
4881857 ^
7739e6b ^


6458803 ^
8a34fa5 ^
4881857 ^
7739e6b ^

c73d5cb ^








6e72d78 ^

8a34fa5 ^
bf35794 ^
c09bf8d ^

6b25d06 ^
c09bf8d ^

937cabf ^
c09bf8d ^




6b25d06 ^
4688ad1 ^
c09bf8d ^

b355755 ^
c09bf8d ^
b55bd70 ^
78f4b51 ^
c09bf8d ^
78f4b51 ^
e995c1b ^
c09bf8d ^
e995c1b ^
78f4b51 ^
e369292 ^
c09bf8d ^
931e712 ^
7e597ae ^



78f4b51 ^
2dd5212 ^
7e597ae ^
78f4b51 ^
4688ad1 ^
c09bf8d ^
e6cbe9c ^
c09bf8d ^

adaa28a ^
ca65478 ^
fde45eb ^
adaa28a ^
7e597ae ^
b55bd70 ^
adaa28a ^

b55bd70 ^
7e597ae ^


78f4b51 ^
7e597ae ^
e6cbe9c ^
adaa28a ^

9e8b325 ^
ca65478 ^
9e8b325 ^
dc5d967 ^
9e8b325 ^
e81eb46 ^

8a34fa5 ^


8a34fa5 ^
ca65478 ^
d42c3ba ^
d7e1708 ^
8a34fa5 ^
8a8b795 ^
9e8b325 ^


8a34fa5 ^



8a34fa5 ^
9e8b325 ^
8a34fa5 ^


9e8b325 ^







8a34fa5 ^



9e8b325 ^


a308b75 ^
ac6e34e ^
9e8b325 ^

8a34fa5 ^
9e8b325 ^
8a34fa5 ^
adaa28a ^

ca65478 ^
adaa28a ^

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
                                                                    

                                        
                

                   
 
            
 









                                        
                   
                                            
                     
 


                                                                 
         
                                                    

 
           
                                                                                             


                               
                      
                                                  
                     
 
                                               
                                                        
                 
                       
              
                                  

                                     
                               
                     


                                                         
                                       
                                                       
                               
                        



                                           
                           
                                           
         
                    
                                      
                                    
                         
                                                          
                                                                                    
         
              
                                              
                                                                   

                                                                     
                        
                          


                                           
                                                                
         
                              

                                   








                                                                              

         
 
            

    
               

                  
                                                 




                             
                  
                 

                        
                                    
                                      
                             
                                                                                      
                    
                                                                                       
                             
         
                   
                                                                                          
                        
                            
                         



                              
                                                 
                                    
                         
                                                                                       
         
                                                                       
                          

 
    
                      
                               
                             
                                           
                                                             

                       
                                                      


                                 
                                                
                                                                              
                          

 
             
                              
                                                     
                     
 

                                                                      


                           
    
                              
                             
                 
 
                       


                                                                       



                                                                             
         
                         


                                              







                                                                                 



                                 


                                                      
                                                                   
                                                                           

                                                         
         
                                                          
 

            
                         

                                                           
/* (C)opyright MMIV-MMVII Anselm R. Garbe <garbeam at gmail dot com>
 * See LICENSE file for license details.
 */
#include "dwm.h"
#include <stdio.h>
#include <string.h>

/* static */

static Bool
isoccupied(unsigned int t)
{
	Client *c;
	for(c = clients; c; c = c->next)
		if(c->tags[t])
			return True;
	return False;
}

static unsigned int
textnw(const char *text, unsigned int len) {
	XRectangle r;

	if(dc.font.set) {
		XmbTextExtents(dc.font.set, text, len, NULL, &r);
		return r.width;
	}
	return XTextWidth(dc.font.xfont, text, len);
}

static void
drawtext(const char *text, unsigned long col[ColLast], Bool filledsquare, Bool emptysquare) {
	int x, y, w, h;
	static char buf[256];
	unsigned int len, olen;
	XGCValues gcv;
	XRectangle r = { dc.x, dc.y, dc.w, dc.h };
	XPoint pt[5];

	XSetForeground(dpy, dc.gc, col[ColBG]);
	XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1);
	if(!text)
		return;
	w = 0;
	olen = len = strlen(text);
	if(len >= sizeof buf)
		len = sizeof buf - 1;
	memcpy(buf, text, len);
	buf[len] = 0;
	h = dc.font.ascent + dc.font.descent;
	y = dc.y + (dc.h / 2) - (h / 2) + dc.font.ascent;
	x = dc.x + (h / 2);
	/* shorten text if necessary */
	while(len && (w = textnw(buf, len)) > dc.w - h)
		buf[--len] = 0;
	if(len < olen) {
		if(len > 1)
			buf[len - 1] = '.';
		if(len > 2)
			buf[len - 2] = '.';
		if(len > 3)
			buf[len - 3] = '.';
	}
	if(w > dc.w)
		return; /* too long */
	gcv.foreground = col[ColFG];
	if(dc.font.set) {
		XChangeGC(dpy, dc.gc, GCForeground, &gcv);
		XmbDrawString(dpy, dc.drawable, dc.font.set, dc.gc, x, y, buf, len);
	}
	else {
		gcv.font = dc.font.xfont->fid;
		XChangeGC(dpy, dc.gc, GCForeground | GCFont, &gcv);
		XDrawString(dpy, dc.drawable, dc.gc, x, y, buf, len);
	}
	x = (h + 2) / 4;
	if(filledsquare) {
		r.x = dc.x + 1;
		r.y = dc.y + 1;
		r.width = r.height = x + 1;
		XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1);
	}
	else if(emptysquare) {
		pt[0].x = dc.x + 1;
		pt[0].y = dc.y + 1;
		pt[1].x = x;
		pt[1].y = 0;
		pt[2].x = 0;
		pt[2].y = x;
		pt[3].x = -x;
		pt[3].y = 0;
		pt[4].x = 0;
		pt[4].y = -x;
		XDrawLines(dpy, dc.drawable, dc.gc, pt, 5, CoordModePrevious);
	}
}

/* extern */

void
drawall(void) {
	Client *c;

	for(c = clients; c; c = getnext(c->next))
		drawtitle(c);
	drawstatus();
}

void
drawstatus(void) {
	int i, x;

	dc.x = dc.y = 0;
	for(i = 0; i < ntags; i++) {
		dc.w = textw(tags[i]);
		if(seltag[i])
			drawtext(tags[i], dc.sel, sel && sel->tags[i], isoccupied(i));
		else
			drawtext(tags[i], dc.norm, sel && sel->tags[i], isoccupied(i));
		dc.x += dc.w;
	}
	dc.w = bmw;
	drawtext(arrange == dofloat ?  FLOATSYMBOL : TILESYMBOL, dc.status, False, False);
	x = dc.x + dc.w;
	dc.w = textw(stext);
	dc.x = bw - dc.w;
	if(dc.x < x) {
		dc.x = x;
		dc.w = bw - x;
	}
	drawtext(stext, dc.status, False, False);
	if((dc.w = dc.x - x) > bh) {
		dc.x = x;
		drawtext(sel ? sel->name : NULL, sel ? dc.sel : dc.norm, False, False);
	}
	XCopyArea(dpy, dc.drawable, barwin, dc.gc, 0, 0, bw, bh, 0, 0);
	XSync(dpy, False);
}

void
drawtitle(Client *c) {
	if(c == sel && issel) {
		drawstatus();
		XUnmapWindow(dpy, c->twin);
		XSetWindowBorder(dpy, c->win, dc.sel[ColBG]);
		return;
	}
	XSetWindowBorder(dpy, c->win, dc.norm[ColBG]);
	XMapWindow(dpy, c->twin);
	dc.x = dc.y = 0;
	dc.w = c->tw;
	drawtext(c->name, dc.norm, False,False);
	XCopyArea(dpy, dc.drawable, c->twin, dc.gc, 0, 0, c->tw, c->th, 0, 0);
	XSync(dpy, False);
}

unsigned long
getcolor(const char *colstr) {
	Colormap cmap = DefaultColormap(dpy, screen);
	XColor color;

	if(!XAllocNamedColor(dpy, cmap, colstr, &color, &color))
		eprint("error, cannot allocate color '%s'\n", colstr);
	return color.pixel;
}

void
setfont(const char *fontstr) {
	char *def, **missing;
	int i, n;

	missing = NULL;
	if(dc.font.set)
		XFreeFontSet(dpy, dc.font.set);
	dc.font.set = XCreateFontSet(dpy, fontstr, &missing, &n, &def);
	if(missing) {
		while(n--)
			fprintf(stderr, "missing fontset: %s\n", missing[n]);
		XFreeStringList(missing);
	}
	if(dc.font.set) {
		XFontSetExtents *font_extents;
		XFontStruct **xfonts;
		char **font_names;
		dc.font.ascent = dc.font.descent = 0;
		font_extents = XExtentsOfFontSet(dc.font.set);
		n = XFontsOfFontSet(dc.font.set, &xfonts, &font_names);
		for(i = 0, dc.font.ascent = 0, dc.font.descent = 0; i < n; i++) {
			if(dc.font.ascent < (*xfonts)->ascent)
				dc.font.ascent = (*xfonts)->ascent;
			if(dc.font.descent < (*xfonts)->descent)
				dc.font.descent = (*xfonts)->descent;
			xfonts++;
		}
	}
	else {
		if(dc.font.xfont)
			XFreeFont(dpy, dc.font.xfont);
		dc.font.xfont = NULL;
		if(!(dc.font.xfont = XLoadQueryFont(dpy, fontstr)))
			eprint("error, cannot load font: '%s'\n", fontstr);
		dc.font.ascent = dc.font.xfont->ascent;
		dc.font.descent = dc.font.xfont->descent;
	}
	dc.font.height = dc.font.ascent + dc.font.descent;
}

unsigned int
textw(const char *text) {
	return textnw(text, strlen(text)) + dc.font.height;
}