Unified · Split
| @@ -623,7 +623,7 @@ selpaste(void) · 622 unmodified lines | ||
| 623 | 623 | } |
| 624 | 624 | |
| 625 | 625 | static Point |
| 626 | −ptfield(Point p) | |
| 626 | +ptclamp(Point p) | |
| 627 | 627 | { |
| 628 | 628 | p.x = MAX(0, MIN((int)field.width-1, p.x)); |
| 629 | 629 | p.y = MAX(0, MIN((int)field.height-1, p.y)); |
| @@ -636,9 +636,9 @@ curmove(int x, int y) · 6 unmodified lines | ||
| 636 | 636 | Point xy; |
| 637 | 637 | |
| 638 | 638 | xy = Pt(x, y); |
| 639 | − cur = ptfield(addpt(cur, xy)); | |
| 640 | − sel.min = ptfield(addpt(sel.min, xy)); | |
| 641 | − sel.max = ptfield(addpt(sel.max, xy)); | |
| 639 | + cur = ptclamp(addpt(cur, xy)); | |
| 640 | + sel.min = ptclamp(addpt(sel.min, xy)); | |
| 641 | + sel.max = ptclamp(addpt(sel.max, xy)); | |
| 642 | 642 | } |
| 643 | 643 | |
| 644 | 644 | static void |
| @@ -799,6 +799,13 @@ selext(int xdt, int ydt) · 154 unmodified lines | ||
| 799 | 799 | sel.max.y = MAX(0, MIN((int)field.height-1, sel.max.y)); |
| 800 | 800 | } |
| 801 | 801 | |
| 802 | +static void | |
| 803 | +usage(void) | |
| 804 | +{ | |
| 805 | + print("usage: %s [-b]\n", argv0); | |
| 806 | + threadexitsall("usage"); | |
| 807 | +} | |
| 808 | + | |
| 802 | 809 | void |
| 803 | 810 | threadmain(int argc, char **argv) |
| 804 | 811 | { |
| @@ -808,6 +815,7 @@ threadmain(int argc, char **argv) · 3 unmodified lines | ||
| 808 | 815 | Mouse m; |
| 809 | 816 | char tmp[256]; |
| 810 | 817 | int oldw, oldh, w, h, n; |
| 818 | + bool inverse; | |
| 811 | 819 | int movex, movey; |
| 812 | 820 | bool shiftdown, complete, ctldown; |
| 813 | 821 | Alt a[Numchan+1] = { |
| @@ -819,7 +827,14 @@ threadmain(int argc, char **argv) · 5 unmodified lines | ||
| 819 | 827 | { nil, nil, CHANEND }, |
| 820 | 828 | }; |
| 821 | 829 | |
| 822 | − USED(argc, argv); | |
| 830 | + inverse = false; | |
| 831 | + ARGBEGIN{ | |
| 832 | + case 'b': | |
| 833 | + inverse = true; | |
| 834 | + break; | |
| 835 | + default: | |
| 836 | + usage(); | |
| 837 | + }ARGEND | |
| 823 | 838 | |
| 824 | 839 | srand(time(0)); |
| 825 | 840 | threadsetname("orca/draw"); |
| @@ -839,8 +854,11 @@ threadmain(int argc, char **argv) · 13 unmodified lines | ||
| 839 | 854 | proccreate(kbdproc, a[Ckey].c, mainstacksize); |
| 840 | 855 | kctl.c = cchan; |
| 841 | 856 | |
| 842 | − for (n = 0; n < Numcolors; n++) | |
| 857 | + for (n = 0; n < Numcolors; n++) { | |
| 858 | + if (inverse) | |
| 859 | + theme[n] = ~theme[n] | 0xff; | |
| 843 | 860 | color[n] = allocimage(display, Rect(0, 0, 1, 1), RGBA32, 1, setalpha(theme[n] & ~0xff, theme[n] & 0xff)); |
| 861 | + } | |
| 844 | 862 | glyphsz.x = stringwidth(font, "X"); |
| 845 | 863 | glyphsz.y = font->height; |
| 846 | 864 | |