]> git.lizzy.rs Git - plan9front.git/commitdiff
paint: add selectable brush sizes
authorstanley lieber <stanley.lieber@gmail.com>
Sat, 10 Dec 2011 03:18:20 +0000 (21:18 -0600)
committerstanley lieber <stanley.lieber@gmail.com>
Sat, 10 Dec 2011 03:18:20 +0000 (21:18 -0600)
sys/man/1/paint
sys/src/cmd/paint.c

index c0455e2dc5311bb80e27ed11b437c3d77470db9f..c08a5823b3498344923e44548d37a77d3ae5e5c9 100644 (file)
@@ -11,15 +11,24 @@ holding down mouse button 1 or its equivalent.
 .PP
 A number of keyboard commands are recognized:
 .TP
+.B b
+Set the brush size to an ellipse of
+.I n
+x
+.I n
+pixels. 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 +40,6 @@ Quit.
 .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.
index 173efef9b43603109fc152b3a2d05b2b94caf4be..f09a597c0c3b4b632608142c2ea72184500081f6 100644 (file)
@@ -40,6 +40,8 @@ main()
        Event e;
        Point last;
        int haslast;
+       int brushsize = 1;
+       char brush[128];
        char file[128];
        
        haslast = 0;
@@ -47,7 +49,6 @@ main()
                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 @@ main()
                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 @@ main()
                        } 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)