23
23
(define (script-fu-beveled-pattern-arrow size orientation pattern)
25
; define some local helper functions
26
(define (map proc seq)
29
(cons (proc (car seq))
30
(map proc (cdr seq)))))
32
(define (for-each proc seq)
36
(for-each proc (cdr seq)))))
38
25
(define (make-point x y)
41
29
(define (point-x p)
44
33
(define (point-y p)
47
37
(define (point-list->double-array point-list)
48
(let* ((how-many (length point-list))
49
(a (cons-array (* 2 how-many) 'double))
39
(how-many (length point-list))
40
(a (cons-array (* 2 how-many) 'double))
51
44
(for-each (lambda (p)
52
45
(aset a (* count 2) (point-x p))
53
46
(aset a (+ 1 (* count 2)) (point-y p))
54
47
(set! count (+ count 1)))
58
54
(define (rotate-points points size orientation)
62
58
(cond ((= orientation 0) (make-point px py)) ; right
63
59
((= orientation 1) (make-point (- size px) py)) ; left
64
60
((= orientation 2) (make-point py (- size px))) ; up
65
((= orientation 3) (make-point py px))))) ; down
61
((= orientation 3) (make-point py px)) ; down
68
69
(define (make-arrow size offset)
69
70
(list (make-point offset offset)
70
71
(make-point (- size offset) (/ size 2))
71
(make-point offset (- size offset))))
72
(make-point offset (- size offset)))
73
75
; the main function
75
(let* ((img (car (gimp-image-new size size RGB)))
76
(background (car (gimp-layer-new img size size RGB-IMAGE "Arrow" 100 NORMAL-MODE)))
77
(bumpmap (car (gimp-layer-new img size size RGB-IMAGE "Bumpmap" 100 NORMAL-MODE)))
78
(big-arrow (point-list->double-array (rotate-points (make-arrow size 6) size orientation)))
79
(med-arrow (point-list->double-array (rotate-points (make-arrow size 7) size orientation)))
80
(small-arrow (point-list->double-array (rotate-points (make-arrow size 8) size orientation))))
78
(img (car (gimp-image-new size size RGB)))
79
(background (car (gimp-layer-new img size size RGB-IMAGE "Arrow" 100 NORMAL-MODE)))
80
(bumpmap (car (gimp-layer-new img size size RGB-IMAGE "Bumpmap" 100 NORMAL-MODE)))
81
(big-arrow (point-list->double-array (rotate-points (make-arrow size 6) size orientation)))
82
(med-arrow (point-list->double-array (rotate-points (make-arrow size 7) size orientation)))
83
(small-arrow (point-list->double-array (rotate-points (make-arrow size 8) size orientation)))
82
86
(gimp-context-push)
136
140
(gimp-image-undo-enable img)
137
141
(gimp-display-new img)
142
148
(script-fu-register "script-fu-beveled-pattern-arrow"
144
"Beveled pattern arrow"
145
"Federico Mena Quintero"
146
"Federico Mena Quintero"
149
SF-ADJUSTMENT _"Size" '(32 5 150 1 10 0 1)
150
SF-OPTION _"Orientation" '(_"Right"
154
SF-PATTERN _"Pattern" "Wood")
150
_"Create a beveled pattern arrow for webpages"
151
"Federico Mena Quintero"
152
"Federico Mena Quintero"
155
SF-ADJUSTMENT _"Size" '(32 5 150 1 10 0 1)
156
SF-OPTION _"Orientation" '(_"Right" _"Left" _"Up" _"Down")
157
SF-PATTERN _"Pattern" "Wood"
156
160
(script-fu-menu-register "script-fu-beveled-pattern-arrow"
157
_"<Toolbox>/Xtns/Script-Fu/Web Page Themes/Beveled Pattern")
161
"<Toolbox>/Xtns/Web Page Themes/Beveled Pattern")