diff options
author | Aurélien Aptel <aurelien.aptel@gmail.com> | 2012-02-15 19:10:31 +0100 |
---|---|---|
committer | Aurélien Aptel <aurelien.aptel@gmail.com> | 2012-02-15 19:10:31 +0100 |
commit | 5705e5dfd16fab78ce3dd91663e5fff8073e1595 (patch) | |
tree | 694c87d4a8ef60245c4503c699eb8fc4f1890da4 | |
parent | 45971204a23deca8b4b339b85816bebc424d26e5 (diff) | |
download | st-patched-5705e5dfd16fab78ce3dd91663e5fff8073e1595.tar.bz2 st-patched-5705e5dfd16fab78ce3dd91663e5fff8073e1595.tar.xz st-patched-5705e5dfd16fab78ce3dd91663e5fff8073e1595.zip |
handle dim/bright colors.
-rw-r--r-- | st.c | 35 |
1 files changed, 17 insertions, 18 deletions
@@ -1341,14 +1341,8 @@ csihandle(void) { | |||
1341 | 1341 | ||
1342 | void | 1342 | void |
1343 | csidump(void) { | 1343 | csidump(void) { |
1344 | int i; | 1344 | fwrite("\033[", 1, 2, stdout); |
1345 | printf("ESC [ %s", escseq.priv ? "? " : ""); | 1345 | fwrite(escseq.buf, 1, escseq.len, stdout); |
1346 | if(escseq.narg) | ||
1347 | for(i = 0; i < escseq.narg; i++) | ||
1348 | printf("%d ", escseq.arg[i]); | ||
1349 | if(escseq.mode) | ||
1350 | putchar(escseq.mode); | ||
1351 | putchar('\n'); | ||
1352 | } | 1346 | } |
1353 | 1347 | ||
1354 | void | 1348 | void |
@@ -1761,23 +1755,29 @@ xinit(void) { | |||
1761 | 1755 | ||
1762 | void | 1756 | void |
1763 | xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) { | 1757 | xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) { |
1764 | ulong xfg = dc.col[base.fg], xbg = dc.col[base.bg], temp; | 1758 | int fg = base.fg, bg = base.bg, temp; |
1765 | int winx = x*xw.cw, winy = y*xw.ch + dc.font.ascent, width = charlen*xw.cw; | 1759 | int winx = x*xw.cw, winy = y*xw.ch + dc.font.ascent, width = charlen*xw.cw; |
1760 | XFontSet fontset = dc.font.set; | ||
1766 | int i; | 1761 | int i; |
1767 | 1762 | ||
1768 | /* only switch default fg/bg if term is in RV mode */ | 1763 | /* only switch default fg/bg if term is in RV mode */ |
1769 | if(IS_SET(MODE_REVERSE)) { | 1764 | if(IS_SET(MODE_REVERSE)) { |
1770 | if(base.fg == DefaultFG) | 1765 | if(fg == DefaultFG) |
1771 | xfg = dc.col[DefaultBG]; | 1766 | fg = DefaultBG; |
1772 | if(base.bg == DefaultBG) | 1767 | if(bg == DefaultBG) |
1773 | xbg = dc.col[DefaultFG]; | 1768 | bg = DefaultFG; |
1774 | } | 1769 | } |
1775 | 1770 | ||
1776 | if(base.mode & ATTR_REVERSE) | 1771 | if(base.mode & ATTR_REVERSE) |
1777 | temp = xfg, xfg = xbg, xbg = temp; | 1772 | temp = fg, fg = bg, bg = temp; |
1773 | |||
1774 | if(base.mode & ATTR_BOLD) { | ||
1775 | fg += 8; | ||
1776 | fontset = dc.bfont.set; | ||
1777 | } | ||
1778 | 1778 | ||
1779 | XSetBackground(xw.dpy, dc.gc, xbg); | 1779 | XSetBackground(xw.dpy, dc.gc, dc.col[bg]); |
1780 | XSetForeground(xw.dpy, dc.gc, xfg); | 1780 | XSetForeground(xw.dpy, dc.gc, dc.col[fg]); |
1781 | 1781 | ||
1782 | if(base.mode & ATTR_GFX) { | 1782 | if(base.mode & ATTR_GFX) { |
1783 | for(i = 0; i < bytelen; i++) { | 1783 | for(i = 0; i < bytelen; i++) { |
@@ -1789,8 +1789,7 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) { | |||
1789 | } | 1789 | } |
1790 | } | 1790 | } |
1791 | 1791 | ||
1792 | XmbDrawImageString(xw.dpy, xw.buf, base.mode & ATTR_BOLD ? dc.bfont.set : dc.font.set, | 1792 | XmbDrawImageString(xw.dpy, xw.buf, fontset, dc.gc, winx, winy, s, bytelen); |
1793 | dc.gc, winx, winy, s, bytelen); | ||
1794 | 1793 | ||
1795 | if(base.mode & ATTR_UNDERLINE) | 1794 | if(base.mode & ATTR_UNDERLINE) |
1796 | XDrawLine(xw.dpy, xw.buf, dc.gc, winx, winy+1, winx+width-1, winy+1); | 1795 | XDrawLine(xw.dpy, xw.buf, dc.gc, winx, winy+1, winx+width-1, winy+1); |