mirror of https://github.com/GNOME/gimp.git
Fixed Undo handling, make sure that the bumpmap is big enough to avoid
2004-02-09 Simon Budig <simon@gimp.org> * plug-ins/script-fu/scripts/add-bevel.scm: Fixed Undo handling, make sure that the bumpmap is big enough to avoid artefacts. Fixes bug #130636.
This commit is contained in:
parent
8b6812805d
commit
771e44dca1
|
@ -1,3 +1,11 @@
|
|||
2004-02-09 Simon Budig <simon@gimp.org>
|
||||
|
||||
* plug-ins/script-fu/scripts/add-bevel.scm: Fixed Undo
|
||||
handling, make sure that the bumpmap is big enough to
|
||||
avoid artefacts.
|
||||
|
||||
Fixes bug #130636.
|
||||
|
||||
2004-02-09 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* app/gui/gui.c (gui_libs_init): added runtime check for
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
; The GIMP -- an image manipulation program
|
||||
; Copyright (C) 1995 Spencer Kimball and Peter Mattis
|
||||
;
|
||||
; add-bevel.scm version 1.03
|
||||
; Time-stamp: <1997-12-16 09:17:24 ard>
|
||||
; add-bevel.scm version 1.04
|
||||
; Time-stamp: <2004-02-09 17:07:06 simon>
|
||||
;
|
||||
; This program is free software; you can redistribute it and/or modify
|
||||
; it under the terms of the GNU General Public License as published by
|
||||
|
@ -43,27 +43,11 @@
|
|||
; Changed path (removed "filters/").
|
||||
; 1.03: adds one-pixel border before bumpmapping, and removes it after.
|
||||
; Got rid of the crop-pixel-border option (no longer reqd).
|
||||
; 1.04: Fixed undo handling, ensure that bumpmap is big enough,
|
||||
; (instead of resizing the image). Removed references to outdated
|
||||
; bumpmap plugin. (Simon)
|
||||
;
|
||||
|
||||
;
|
||||
; BUMPMAP NOTES:
|
||||
;
|
||||
; Bumpmap changed arguments from version 2.02 to 2.03. If you use the
|
||||
; wrong bumpmap.c this script will either bomb (good) or produce a
|
||||
; naff image (bad).
|
||||
;
|
||||
; As distributed this script expects bumpmap 2.03 (shipped with Gimp 0.99.11)
|
||||
; or later.
|
||||
|
||||
;
|
||||
; BUGS
|
||||
;
|
||||
; Doesn't allow undoing the operation. Why not?
|
||||
;
|
||||
; Sometimes (and that's the scary bit) gives bogloads of GTK warnings.
|
||||
;
|
||||
|
||||
|
||||
(define (script-fu-add-bevel img
|
||||
drawable
|
||||
thickness
|
||||
|
@ -77,25 +61,30 @@
|
|||
(type (car (gimp-drawable-type-with-alpha drawable)))
|
||||
(image (if (= work-on-copy TRUE) (car (gimp-image-duplicate img)) img))
|
||||
(pic-layer (car (gimp-image-get-active-drawable image)))
|
||||
(offsets (gimp-drawable-offsets pic-layer))
|
||||
(width (car (gimp-drawable-width pic-layer)))
|
||||
(height (car (gimp-drawable-height pic-layer)))
|
||||
(old-bg (car (gimp-palette-get-background)))
|
||||
; Bumpmap has a one pixel border on each side
|
||||
(bump-layer (car (gimp-layer-new image
|
||||
width
|
||||
height
|
||||
(+ width 2)
|
||||
(+ height 2)
|
||||
GRAY
|
||||
"Bumpmap"
|
||||
100
|
||||
NORMAL-MODE)))
|
||||
)
|
||||
;
|
||||
|
||||
; If the layer we're bevelling is offset from the image's origin, we
|
||||
; have to do the same to the bumpmap
|
||||
(let ((offsets (gimp-drawable-offsets pic-layer)))
|
||||
(gimp-layer-set-offsets bump-layer (car offsets) (cadr offsets))
|
||||
)
|
||||
(gimp-layer-set-offsets bump-layer (- (car offsets) 1)
|
||||
(- (cadr offsets) 1))
|
||||
|
||||
; disable undo on copy, start group otherwise
|
||||
(if (= work-on-copy TRUE)
|
||||
(gimp-image-undo-disable image)
|
||||
(gimp-image-undo-group-start image)
|
||||
)
|
||||
|
||||
;------------------------------------------------------------
|
||||
;
|
||||
|
@ -104,15 +93,12 @@
|
|||
(if (eq? 0 (car (gimp-selection-bounds image)))
|
||||
(begin
|
||||
(set! bevelling-whole-image TRUE) ; ...so we can restore things properly, and crop.
|
||||
(gimp-image-resize image (+ width 2) (+ height 2) 1 1)
|
||||
(if (not (eq? 0 (car (gimp-drawable-has-alpha pic-layer)))) ; Wish I knew Scheme
|
||||
(if (car (gimp-drawable-has-alpha pic-layer))
|
||||
(gimp-selection-layer-alpha pic-layer)
|
||||
(begin
|
||||
(gimp-selection-all image)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
; Store it for later.
|
||||
(set! select (car (gimp-selection-save image)))
|
||||
|
@ -138,7 +124,8 @@
|
|||
)
|
||||
; Now the white interior
|
||||
(gimp-palette-set-background '(255 255 255))
|
||||
(gimp-edit-bucket-fill bump-layer BG-BUCKET-FILL NORMAL-MODE 100 0 FALSE 0 0)
|
||||
(gimp-edit-bucket-fill bump-layer BG-BUCKET-FILL NORMAL-MODE
|
||||
100 0 FALSE 0 0)
|
||||
|
||||
;------------------------------------------------------------
|
||||
;
|
||||
|
@ -150,27 +137,11 @@
|
|||
;(plug-in-gauss-rle 1 image bump-layer thickness TRUE TRUE)
|
||||
|
||||
|
||||
; If they're working on the original, let them undo the filter's effects.
|
||||
; This doesn't work - ideas why not?
|
||||
(if (= work-on-copy FALSE) (gimp-image-undo-enable image))
|
||||
|
||||
;
|
||||
; BUMPMAP INVOCATION:
|
||||
;
|
||||
; Use the former with version 2.02 or earlier of bumpmap:
|
||||
; Use the latter with version 2.03 or later (ambient and waterlevel params)
|
||||
; (plug-in-bump-map 1 image pic-layer bump-layer 125 45 3 0 0 TRUE FALSE 1)
|
||||
(plug-in-bump-map 1 image pic-layer bump-layer 125 45 3 0 0 0 0 TRUE FALSE 1)
|
||||
|
||||
;
|
||||
; Shave one pixel off each edge
|
||||
;
|
||||
(if (= bevelling-whole-image TRUE)
|
||||
(gimp-image-crop image width height 1 1)
|
||||
)
|
||||
|
||||
(if (= work-on-copy FALSE) (gimp-image-undo-disable image))
|
||||
|
||||
;------------------------------------------------------------
|
||||
;
|
||||
; Restore things
|
||||
|
@ -194,9 +165,14 @@
|
|||
|
||||
(gimp-image-set-active-layer image pic-layer)
|
||||
|
||||
(if (= work-on-copy TRUE) (gimp-display-new image))
|
||||
|
||||
; enable undo / end undo group
|
||||
(if (= work-on-copy TRUE)
|
||||
(begin
|
||||
(gimp-display-new image)
|
||||
(gimp-image-undo-enable image)
|
||||
)
|
||||
(gimp-image-undo-group-end image)
|
||||
)
|
||||
(gimp-displays-flush)
|
||||
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue