draw.c
changeset 73 c2ddb9dbbd10
parent 66 50450aa24a46
child 74 5370ef170cc9
equal deleted inserted replaced
72:d0eb0bb63c40 73:c2ddb9dbbd10
     7 #include <string.h>
     7 #include <string.h>
     8 
     8 
     9 #include <X11/Xlocale.h>
     9 #include <X11/Xlocale.h>
    10 
    10 
    11 #include "dwm.h"
    11 #include "dwm.h"
       
    12 
       
    13 void
       
    14 draw_bar()
       
    15 {
       
    16 	int i;
       
    17 
       
    18 	dc.x = dc.y = 0;
       
    19 	dc.w = bw;
       
    20 	drawtext(NULL, False, False);
       
    21 
       
    22 	if(arrange == floating) {
       
    23 		dc.w = textw("~");
       
    24 		drawtext("~", False, False);
       
    25 	}
       
    26 	else
       
    27 		dc.w = 0;
       
    28 	for(i = 0; i < TLast; i++) {
       
    29 		dc.x += dc.w;
       
    30 		dc.w = textw(tags[i]);
       
    31 		drawtext(tags[i], i == tsel, True);
       
    32 	}
       
    33 	if(sel) {
       
    34 		dc.x += dc.w;
       
    35 		dc.w = textw(sel->name);
       
    36 		drawtext(sel->name, True, True);
       
    37 	}
       
    38 	dc.w = textw(stext);
       
    39 	dc.x = bx + bw - dc.w;
       
    40 	drawtext(stext, False, False);
       
    41 
       
    42 	XCopyArea(dpy, dc.drawable, barwin, dc.gc, 0, 0, bw, bh, 0, 0);
       
    43 	XFlush(dpy);
       
    44 }
       
    45 
       
    46 void
       
    47 draw_client(Client *c)
       
    48 {
       
    49 	int i;
       
    50 	if(c == sel) {
       
    51 		draw_bar();
       
    52 		XUnmapWindow(dpy, c->title);
       
    53 		XSetWindowBorder(dpy, c->win, dc.fg);
       
    54 		return;
       
    55 	}
       
    56 
       
    57 	XSetWindowBorder(dpy, c->win, dc.bg);
       
    58 	XMapWindow(dpy, c->title);
       
    59 
       
    60 	dc.x = dc.y = 0;
       
    61 
       
    62 	dc.w = 0;
       
    63 	for(i = 0; i < TLast; i++) {
       
    64 		if(c->tags[i]) {
       
    65 			dc.x += dc.w;
       
    66 			dc.w = textw(c->tags[i]);
       
    67 			drawtext(c->tags[i], False, True);
       
    68 		}
       
    69 	}
       
    70 	dc.x += dc.w;
       
    71 	dc.w = textw(c->name);
       
    72 	drawtext(c->name, False, True);
       
    73 	XCopyArea(dpy, dc.drawable, c->title, dc.gc,
       
    74 			0, 0, c->tw, c->th, 0, 0);
       
    75 	XFlush(dpy);
       
    76 }
    12 
    77 
    13 static void
    78 static void
    14 drawborder(void)
    79 drawborder(void)
    15 {
    80 {
    16 	XPoint points[5];
    81 	XPoint points[5];
   101 }
   166 }
   102 
   167 
   103 unsigned int
   168 unsigned int
   104 textw(char *text)
   169 textw(char *text)
   105 {
   170 {
   106 	return textnw(text, strlen(text));
   171 	return textnw(text, strlen(text)) + dc.font.height;
   107 }
   172 }
   108 
   173 
   109 void
   174 void
   110 initfont(const char *fontstr)
   175 initfont(const char *fontstr)
   111 {
   176 {