[EMAIL PROTECTED] (2003-03-22 at 1850.44 +0100):
> I've just completed a Script-Fu script that some people may find quite
> useful (I've missed this functionality myself several times). The
> purpose is to convert a layer's Alpha channel into a mask for editing
> it and later using Apply Layer Mask to put it back. The idea is
> similar to what QuickMask does with selections.
Maybe you can poke at the attached script, a bit old, for reference
see http://groups.yahoo.com/group/gimpi/message/1479 and other posts
about tribes 2 video game. This one does not lose the selection, IIRC.
;;; The GIMP -- an image manipulation program
;;; Copyright (C) 1995 Spencer Kimball and Peter Mattis
;;; Moves the transparency of a layer to the layer mask
;;; Copyright (c) 2001 Guillermo S. Romero
;;; famrom infernal-iceberg.com
;;; ### License ###
;;; 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
;;; the Free Software Foundation; either version 2 of the License, or
;;; (at your option) any later version.
;;; This program is distributed in the hope that it will be useful,
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;; You can get a copy of the GNU General Public License from
;;; http://www.gnu.org/, the site of the Free Software Foundation, Inc.
;;; ### Versions ###
;;; 1.00.00 Initial release (bug in L,C&P thumbnails?)
;;; 1.01.00 Support for existent mask added (merges transp and mask)
;;; ### Inline Documentation ###
;;; # Intro #
;;; Tribes 2, a 3D game, uses RGBA PNGs as skins. The RGB are used for
;;; the colour, and the A for the quantity of environment mapping.
;;; Or at least that is what I have read.
;;; # Requirements #
;;; This plugin was developed with Gimp 1.2.1 CVS
;;; Check all your plugins and scripts in the DB Browser before reporting bugs
;;; It merges the current layer mask, if any, so you keep all info
;;; # Parameters #
;;; None the user can play with
;;; # Debugging and to-do #
;;; Look for ";; @" comments
;; Helper functions from neon-logo.scm
(define (set-pt a index x y)
(aset a (* index 2) x)
(aset a (+ (* index 2) 1) y)))
(let* ((a (cons-array 6 'byte)))
(set-pt a 0 0 255)
(set-pt a 1 127 255)
(set-pt a 2 255 255)
;; The function
(define (script-fu-alpha-to-mask inImg inDrw)
;; Merge mask if any
(set! OrigMask (car (gimp-layer-mask inDrw)))
(if (not (= OrigMask -1))
(gimp-image-remove-layer-mask inImg inDrw APPLY))
;; Create a new mask
(set! Mask (car (gimp-layer-create-mask inDrw ALPHA-MASK)))
(gimp-image-add-layer-mask inImg inDrw Mask)
(gimp-curves-spline inDrw 4 6 (AlphaSpline))
;; @ The image thumbnail does not update nice
;; @ Undo then redo and it refreshes to the right state
;; @ Or change to another image and back, to force the refresh too
;; @ A refresh call is missing in the C code, maybe fixed for Gimp 1.4
_"<Image>/Script-Fu/Utils/Alpha to layer mask"
"Moves the transparency of a layer to the layer mask"
"Guillermo S. Romero"
"2001 Guillermo S. Romero"
SF-IMAGE "Image where to work" 0
SF-DRAWABLE "Drawable to modify" 0)
Gimp-user mailing list