about summary refs log tree commit diff stats
path: root/draw.c
Commit message (Collapse)AuthorAgeFilesLines
* referred to LICENSE file 4.2Anselm R. Garbe2007-05-301-6/+1
|
* Jukka also belongs to Copyright holders after all he has contributed and ↵Anselm R. Garbe2007-05-301-0/+1
| | | | done for dwm, updated -v as well
* added nsz to copyright holders as well, because he did a lot recentlyAnselm R. Garbe2007-05-291-0/+1
|
* added anydot to Copyright holders, because he contributed a lot recentlyAnselm R. Garbe2007-05-291-0/+1
|
* yet another fix of copyright compactisitionAnselm R. Garbe2007-04-131-1/+2
|
* making Copyright notices more compactAnselm R. Garbe2007-04-131-3/+2
|
* we don't need to set the font all the time 3.8Anselm R. Garbe2007-03-021-9/+3
|
* renamed untiled into floating, keeping tiled instead of tiling (afaik tiled ↵Anselm R. Garbe2007-02-221-1/+1
| | | | sounds more correct) - English speakers convinced me
* renamed versatile into untiledAnselm R. Garbe2007-02-221-1/+1
|
* reusing drawsquare for client title, empty square before title means ↵Anselm R. Garbe2007-02-221-20/+1
| | | | versatile window, filled square before title means versatile maximized window.
* dwm draws a small caret before the client title if it's a versatile clientAnselm R. Garbe2007-02-221-1/+25
|
* fixed orderAnselm R. Garbe2007-02-201-11/+11
|
* added draw.c again (except getcolor and setfont which are helpers in main.c)Anselm R. Garbe2007-02-201-0/+137
|
* draw.c is useless (belongs to main.c now)Anselm R. Garbe2007-02-191-175/+0
|
* applied apm's patch proposal, getting rid of XDrawLinesAnselm R. Garbe2007-02-051-14/+4
|
* removed unnecessary bx, by, bw variablesAnselm R. Garbe2007-01-161-3/+3
|
* removed drawclient and drawall (they performed useless operations/consumed ↵Anselm R. Garbe2007-01-151-20/+0
| | | | useless cpu cycles)
* implemented new color scheme accordingly to Sanders proposalAnselm R. Garbe2007-01-141-4/+4
|
* removed mode label stuffAnselm R. Garbe2007-01-141-1/+1
|
* removed client title barAnselm R. Garbe2007-01-141-6/+0
|
* added missing spaceAnselm R. Garbe2007-01-121-1/+1
|
* implemented nmaster appearance in mode label (using %u)Anselm R. Garbe2007-01-081-1/+1
|
* renamed drawtitle into drawclientAnselm R. Garbe2007-01-041-2/+2
|
* next version will contain updated copyright noticearg@mig292007-01-021-1/+1
|
* fixed diagnostic error messagearg@mig292006-12-081-1/+1
|
* removed the hardcoded fixed fallback, it is useless in non-Latin1 environmentsarg@mig292006-12-081-4/+1
|
* with this patch everything works fine for mearg@mig292006-12-071-5/+1
|
* don't use Xlocale crap, let's use locale.h insteadarg@mig292006-12-071-1/+1
|
* using the portable Xmb+UTF-8 way of life, will see if this works well...arg@mig292006-12-071-2/+4
|
* also setting LC_CTYPE onlyarg@mig292006-12-051-1/+1
|
* enforcing using fontsets even if they are incomplete for some encodingsarg@mig292006-12-051-4/+0
|
* made squares equally sized, and 1px biggerarg@mig292006-12-011-5/+5
|
* if client is focused, the emptysquare don't needs to be drawedarg@mig292006-12-011-3/+3
|
* and the winner isarg@mig292006-12-011-12/+17
|
* sander1 proposalarg@mig292006-12-011-7/+15
|
* doodarg@mig292006-12-011-8/+9
|
* less obtrusive indicator (only a top line)arg@mig292006-12-011-17/+4
|
* final2 indicatorarg@mig292006-12-011-8/+12
|
* removing the -1 on final indicators, looks cleanerarg@mig292006-12-011-3/+3
|
* final indicatorsarg@mig292006-12-011-2/+2
|
* changed things like I described in last mailarg@mig292006-12-011-15/+11
|
* improved tag indicatorarg@mig292006-12-011-6/+14
|
* applied Jukka's sizeof K&R compliance patch, applied Manuels' last-line ↵arg@mig292006-11-261-2/+2
| | | | printage proposal for stdin reading.
* added a similiar patch to Daves solution to indicate if there are clients ↵arg@mig292006-11-221-8/+24
| | | | with a specific tag
* returning to old bar colorization behavior, like sander proposed for ↵arg@mig292006-11-211-1/+1
| | | | consistency reasons
* applied Gottox patchesarg@mig292006-11-211-5/+2
|
* code polishing, removed unnecessary newlinesAnselm R. Garbe2006-10-061-13/+1
|
* removed the stack position stuffAnselm R. Garbe2006-10-051-3/+1
|
* applied dave's highlight patch for big fontsAnselm R. Garbe2006-09-291-1/+1
|
* added symbols for different modesAnselm R. Garbe2006-09-291-1/+3
|
>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)) drawclient(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 drawclient(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; }