ref: afc1841b5dec5f81734fdbb6829821f9eb1bf76c
parent: cc97df963884fe0e451db38fcf88f39dca68a032
parent: 9b7d91503450819f00d8cd7b45e98fb164c13f66
author: cinap_lenrek <cinap_lenrek@centraldogma>
date: Sun Dec 11 13:35:34 EST 2011
merge
--- a/sys/man/1/paint
+++ b/sys/man/1/paint
@@ -11,15 +11,26 @@
.PP
A number of keyboard commands are recognized:
.TP
+.B b
+Set the brush size to an ellipse with a horizontal semiaxis of
+.I n
+and a vertical semiaxis of
+.I n
+(see
+.IR graphics (2)).
+Type a number,
+.I n,
+in the pop-up box and hit enter.
+.TP
.B c
Clear the screen. Any unsaved work will be lost.
.TP
.B s
-Save the current screen as a bitmap image. A pop-up window appears
+Save the current screen as a bitmap image. A pop-up box appears
suggesting a default filename of
.I out.bit.
Hit enter to accept the default, or backspace over the suggested name and
-enter an alternative path and filename. If the path is omitted, the file will be
+type an alternative path and filename. If the path is omitted, a file will be
created in the current directory.
.TP
.B q
@@ -31,6 +42,6 @@
.IR image (6)
.SH BUGS
.I Paint
-offers the bare minimum of drawing functionality.
-.B Undo
-has not been implemented.
+offers a bare minimum of drawing functionality. Popular features such as
+.B undo
+have not yet been implemented.
--- a/sys/src/cmd/paint.c
+++ b/sys/src/cmd/paint.c
@@ -40,6 +40,8 @@
Event e;
Point last;
int haslast;
+ int brushsize = 1;
+ char brush[128];
char file[128];
haslast = 0;
@@ -47,7 +49,6 @@
fprint(2, "paint: initdraw failed: %r\n");
exits("initdraw");}
-
einit(Emouse | Ekeyboard);
draw(screen, screen->r, display->white, 0, ZP);
flushimage(display, 1);
@@ -56,9 +57,9 @@
case Emouse:
if(e.mouse.buttons & 1){if(haslast)
- line(screen, last, e.mouse.xy, Enddisc, Enddisc, 5, display->black, ZP);
+ line(screen, last, e.mouse.xy, Enddisc, Enddisc, brushsize, display->black, ZP);
else
- fillellipse(screen, e.mouse.xy, 5, 5, display->black, ZP);
+ fillellipse(screen, e.mouse.xy, brushsize, brushsize, display->black, ZP);
last = e.mouse.xy;
haslast = 1;
@@ -66,15 +67,20 @@
} else
haslast = 0;
if(e.mouse.buttons & 4){- fillellipse(screen, e.mouse.xy, 5, 5, display->white, ZP);
+ fillellipse(screen, e.mouse.xy, brushsize, brushsize, display->white, ZP);
flushimage(display, 1);
}
break;
case Ekeyboard:
- if(e.kbdc == 'q')
- exits(nil);
+ if(e.kbdc == 'b'){+ if(eenter("Brush", brush, sizeof(brush), &e.mouse) <= 0)+ break;
+ brushsize = atoi(brush);
+ }
if(e.kbdc == 'c')
draw(screen, screen->r, display->white, 0, ZP);
+ if(e.kbdc == 'q')
+ exits(nil);
if(e.kbdc == 's'){snprint(file, sizeof(file), "out.bit");
if(eenter("Save to", file, sizeof(file), &e.mouse) <= 0)--
⑨