62 lines
1.6 KiB
Racket
62 lines
1.6 KiB
Racket
#lang racket/base
|
|
(require racket/class
|
|
racket/draw)
|
|
|
|
(provide make-cursor-image
|
|
draw-watch
|
|
draw-nw/se
|
|
draw-ne/sw
|
|
draw-bullseye)
|
|
|
|
(define (make-cursor-image draw-proc [smoothing 'aligned])
|
|
(let* ([bm (make-object bitmap% 16 16 #f #t)]
|
|
[dc (make-object bitmap-dc% bm)])
|
|
(send dc set-smoothing smoothing)
|
|
(draw-proc dc 16 16)
|
|
(send dc set-bitmap #f)
|
|
bm))
|
|
|
|
(define (draw-watch dc w h)
|
|
(send dc set-brush "black" 'solid)
|
|
(send dc draw-rectangle 5 0 6 4)
|
|
(send dc draw-rectangle 5 12 6 4)
|
|
(send dc set-brush "white" 'solid)
|
|
(send dc draw-ellipse 3 3 10 10)
|
|
(send dc draw-line 7 5 7 8)
|
|
(send dc draw-line 7 8 9 8))
|
|
|
|
(define (draw-nw/se dc w h)
|
|
(bolden
|
|
dc
|
|
(lambda ()
|
|
(send dc set-smoothing 'unsmoothed)
|
|
(send dc draw-line 0 16 16 0)
|
|
(send dc draw-line 0 0 16 16)
|
|
(send dc draw-line 1 4 1 1)
|
|
(send dc draw-line 1 1 4 1)
|
|
(send dc draw-line 12 15 15 15)
|
|
(send dc draw-line 15 15 15 12))))
|
|
|
|
(define (draw-ne/sw dc w h)
|
|
(bolden
|
|
dc
|
|
(lambda ()
|
|
(send dc set-smoothing 'unsmoothed)
|
|
(send dc draw-line 0 16 16 0)
|
|
(send dc draw-line 0 0 16 16)
|
|
(send dc draw-line 12 1 15 1)
|
|
(send dc draw-line 15 1 15 4)
|
|
(send dc draw-line 1 12 1 15)
|
|
(send dc draw-line 1 15 4 15))))
|
|
|
|
(define (draw-bullseye dc w h)
|
|
(send dc draw-ellipse 1 1 (- w 2) (- h 2))
|
|
(send dc draw-ellipse 4 4 (- w 8) (- h 8))
|
|
(send dc draw-ellipse 7 7 2 2))
|
|
|
|
(define (bolden dc draw)
|
|
(send dc set-pen "white" 4 'solid)
|
|
(draw)
|
|
(send dc set-pen "black" 2 'solid)
|
|
(draw))
|