【发布时间】:2011-04-25 11:44:36
【问题描述】:
我正在尝试为 GIMP 编写一个基本脚本,但它似乎不想正常工作。在我做出选择后它应该遵循这个顺序:降低活动层,扩大选择 2px,使用前景色填充,提高活动层。最终产品应该是我在顶层线条下方的纯色。但是使用我编写的代码,它会跳过活动层,但会在顶层而不是下面的层上填充。这是我的代码:
(define (quick-fill image drawable)
(gimp-undo-push-group-start image)
(let* ((layer (car (gimp-image-get-active-layer image))))
(gimp-selection-grow image 2)
(gimp-image-set-active-layer image (aref (cadr (gimp-image-get-layers image)) 1))
(gimp-bucket-fill drawable FG-BUCKET-FILL NORMAL-MODE 100 0 FALSE 0 0)
(gimp-image-set-active-layer image (aref (cadr (gimp-image-get-layers image)) 0)))
(gimp-undo-push-group-end image)
(gimp-displays-flush))
【问题讨论】:
-
这可能是一个愚蠢的“它是否已插入”评论,但是:一般的函数式语言和特别是方案并不一定保证执行顺序。
-
我想知道的是,
let*在那里做什么,当它绑定的layer变量根本没有被使用时。 -
@drysdam:方案插件 GIMP 的情况并非如此 - 它按顺序执行其工作(否则它作为图像脚本语言将毫无用处)
标签: lisp scheme gimp script-fu