1997-11-24 22:05:25 +00:00
; CARVE-IT
; Carving, embossing, & stamping
; Process taken from "The Photoshop 3 WOW! Book"
; http://www.peachpit.com
; This script requires a grayscale image containing a single layer.
; This layer is used as the mask for the carving effect
1998-05-31 06:49:20 +00:00
; NOTE: This script requires the image to be carved to either be an
; RGB colour or grayscale image with a single layer. An indexed file
; can not be used due to the use of gimp-histogram and gimp-levels.
1997-11-24 22:05:25 +00:00
( define ( carve-brush brush-size )
( cond ( ( <= brush-size 5 ) "Circle (05)" )
2006-10-16 01:08:54 +00:00
( ( <= brush-size 7 ) "Circle (07)" )
( ( <= brush-size 9 ) "Circle (09)" )
( ( <= brush-size 11 ) "Circle (11)" )
( ( <= brush-size 13 ) "Circle (13)" )
( ( <= brush-size 15 ) "Circle (15)" )
( ( <= brush-size 17 ) "Circle (17)" )
( else "Circle (19)" ) ) )
1997-11-24 22:05:25 +00:00
( define ( carve-scale val scale )
( * ( sqrt val ) scale ) )
( define ( calculate-inset-gamma img layer )
1998-11-14 20:46:25 +00:00
( let* ( ( stats ( gimp-histogram layer 0 0 255 ) )
2006-10-16 01:08:54 +00:00
( mean ( car stats ) ) )
1997-11-24 22:05:25 +00:00
( cond ( ( < mean 127 ) ( + 1.0 ( * 0.5 ( / ( - 127 mean ) 127.0 ) ) ) )
2006-10-16 01:08:54 +00:00
( ( >= mean 127 ) ( - 1.0 ( * 0.5 ( / ( - mean 127 ) 127.0 ) ) ) ) ) ) )
1997-11-24 22:05:25 +00:00
1998-01-29 03:13:44 +00:00
( define ( copy-layer-carve-it dest-image dest-drawable source-image source-drawable )
( gimp-selection-all dest-image )
1998-11-14 20:46:25 +00:00
( gimp-edit-clear dest-drawable )
1998-01-29 03:13:44 +00:00
( gimp-selection-none dest-image )
( gimp-selection-all source-image )
1998-11-14 20:46:25 +00:00
( gimp-edit-copy source-drawable )
( let ( ( floating-sel ( car ( gimp-edit-paste dest-drawable FALSE ) ) ) )
2006-10-16 01:08:54 +00:00
( gimp-floating-sel-anchor floating-sel ) ) )
1998-01-29 03:13:44 +00:00
1997-11-24 22:05:25 +00:00
( define ( script-fu-carve-it mask-img mask-drawable bg-layer carve-white )
2006-10-16 01:08:54 +00:00
( let* (
( width ( car ( gimp-drawable-width mask-drawable ) ) )
( height ( car ( gimp-drawable-height mask-drawable ) ) )
( type ( car ( gimp-drawable-type bg-layer ) ) )
( img ( car ( gimp-image-new width height ( cond ( ( = type RGB-IMAGE ) RGB )
( ( = type RGBA-IMAGE ) RGB )
( ( = type GRAY-IMAGE ) GRAY )
( ( = type GRAYA-IMAGE ) GRAY )
( ( = type INDEXED-IMAGE ) INDEXED )
( ( = type INDEXEDA-IMAGE ) INDEXED ) ) ) ) )
( size ( min width height ) )
( offx ( carve-scale size 0.33 ) )
( offy ( carve-scale size 0.25 ) )
( feather ( carve-scale size 0.3 ) )
( brush-size ( carve-scale size 0.3 ) )
( mask-fs 0 )
( mask ( car ( gimp-channel-new img width height "Engraving Mask" 50 ' ( 0 0 0 ) ) ) )
2010-08-03 00:13:51 +03:00
( inset-gamma ( calculate-inset-gamma ( car ( gimp-item-get-image bg-layer ) ) bg-layer ) )
2006-10-16 01:08:54 +00:00
( mask-fat 0 )
( mask-emboss 0 )
( mask-highlight 0 )
( mask-shadow 0 )
( shadow-layer 0 )
( highlight-layer 0 )
( cast-shadow-layer 0 )
( csl-mask 0 )
( inset-layer 0 )
( il-mask 0 )
( bg-width ( car ( gimp-drawable-width bg-layer ) ) )
( bg-height ( car ( gimp-drawable-height bg-layer ) ) )
( bg-type ( car ( gimp-drawable-type bg-layer ) ) )
2010-08-03 00:13:51 +03:00
( bg-image ( car ( gimp-item-get-image bg-layer ) ) )
2006-10-16 01:08:54 +00:00
( layer1 ( car ( gimp-layer-new img bg-width bg-height bg-type "Layer1" 100 NORMAL-MODE ) ) )
)
2004-09-22 17:27:20 +00:00
( gimp-context-push )
1999-10-17 00:07:55 +00:00
( gimp-image-undo-disable img )
2004-11-11 13:59:18 +00:00
2010-09-28 09:10:07 +04:00
( gimp-image-insert-layer img layer1 -1 0 )
2004-11-11 13:59:18 +00:00
1998-01-29 03:13:44 +00:00
( gimp-selection-all img )
1998-11-14 20:46:25 +00:00
( gimp-edit-clear layer1 )
1998-01-29 03:13:44 +00:00
( gimp-selection-none img )
( copy-layer-carve-it img layer1 bg-image bg-layer )
1998-11-14 20:46:25 +00:00
( gimp-edit-copy mask-drawable )
2010-09-28 09:10:07 +04:00
( gimp-image-insert-channel img mask -1 0 )
1998-01-29 03:13:44 +00:00
2007-10-01 19:44:23 +00:00
( plug-in-tile RUN-NONINTERACTIVE img layer1 width height FALSE )
1998-11-14 20:46:25 +00:00
( set! mask-fs ( car ( gimp-edit-paste mask FALSE ) ) )
1997-11-24 22:05:25 +00:00
( gimp-floating-sel-anchor mask-fs )
( if ( = carve-white FALSE )
2006-10-16 01:08:54 +00:00
( gimp-invert mask ) )
1997-11-24 22:05:25 +00:00
( set! mask-fat ( car ( gimp-channel-copy mask ) ) )
2010-09-28 09:10:07 +04:00
( gimp-image-insert-channel img mask-fat -1 0 )
2011-02-21 00:07:19 +02:00
( gimp-image-select-item img CHANNEL-OP-REPLACE mask-fat )
2004-09-23 11:44:32 +00:00
( gimp-context-set-brush ( carve-brush brush-size ) )
2004-09-22 18:43:09 +00:00
( gimp-context-set-foreground ' ( 255 255 255 ) )
1998-11-14 20:46:25 +00:00
( gimp-edit-stroke mask-fat )
1997-11-24 22:05:25 +00:00
( gimp-selection-none img )
( set! mask-emboss ( car ( gimp-channel-copy mask-fat ) ) )
2010-09-28 09:10:07 +04:00
( gimp-image-insert-channel img mask-emboss -1 0 )
2007-10-01 19:44:23 +00:00
( plug-in-gauss-rle RUN-NONINTERACTIVE img mask-emboss feather TRUE TRUE )
( plug-in-emboss RUN-NONINTERACTIVE img mask-emboss 315.0 45.0 7 TRUE )
1997-11-24 22:05:25 +00:00
2004-09-22 18:43:09 +00:00
( gimp-context-set-background ' ( 180 180 180 ) )
2011-02-21 00:07:19 +02:00
( gimp-image-select-item img CHANNEL-OP-REPLACE mask-fat )
1997-11-24 22:05:25 +00:00
( gimp-selection-invert img )
2003-10-16 12:47:33 +00:00
( gimp-edit-fill mask-emboss BACKGROUND-FILL )
2011-02-21 00:07:19 +02:00
( gimp-image-select-item img CHANNEL-OP-REPLACE mask )
2003-10-16 12:47:33 +00:00
( gimp-edit-fill mask-emboss BACKGROUND-FILL )
1997-11-24 22:05:25 +00:00
( gimp-selection-none img )
( set! mask-highlight ( car ( gimp-channel-copy mask-emboss ) ) )
2010-09-28 09:10:07 +04:00
( gimp-image-insert-channel img mask-highlight -1 0 )
1998-11-14 20:46:25 +00:00
( gimp-levels mask-highlight 0 180 255 1.0 0 255 )
1997-11-24 22:05:25 +00:00
( set! mask-shadow mask-emboss )
1998-11-14 20:46:25 +00:00
( gimp-levels mask-shadow 0 0 180 1.0 0 255 )
1997-11-24 22:05:25 +00:00
1998-11-14 20:46:25 +00:00
( gimp-edit-copy mask-shadow )
( set! shadow-layer ( car ( gimp-edit-paste layer1 FALSE ) ) )
1997-11-24 22:05:25 +00:00
( gimp-floating-sel-to-layer shadow-layer )
2003-10-16 12:47:33 +00:00
( gimp-layer-set-mode shadow-layer MULTIPLY-MODE )
1997-11-24 22:05:25 +00:00
1998-11-14 20:46:25 +00:00
( gimp-edit-copy mask-highlight )
( set! highlight-layer ( car ( gimp-edit-paste shadow-layer FALSE ) ) )
1997-11-24 22:05:25 +00:00
( gimp-floating-sel-to-layer highlight-layer )
2004-02-03 11:46:27 +00:00
( gimp-layer-set-mode highlight-layer SCREEN-MODE )
1997-11-24 22:05:25 +00:00
1998-11-14 20:46:25 +00:00
( gimp-edit-copy mask )
( set! cast-shadow-layer ( car ( gimp-edit-paste highlight-layer FALSE ) ) )
1997-11-24 22:05:25 +00:00
( gimp-floating-sel-to-layer cast-shadow-layer )
2003-10-16 12:47:33 +00:00
( gimp-layer-set-mode cast-shadow-layer MULTIPLY-MODE )
1997-11-24 22:05:25 +00:00
( gimp-layer-set-opacity cast-shadow-layer 75 )
2007-10-01 19:44:23 +00:00
( plug-in-gauss-rle RUN-NONINTERACTIVE img cast-shadow-layer feather TRUE TRUE )
1997-11-24 22:05:25 +00:00
( gimp-layer-translate cast-shadow-layer offx offy )
2003-10-16 12:47:33 +00:00
( set! csl-mask ( car ( gimp-layer-create-mask cast-shadow-layer ADD-BLACK-MASK ) ) )
2003-12-08 22:33:17 +00:00
( gimp-layer-add-mask cast-shadow-layer csl-mask )
2011-02-21 00:07:19 +02:00
( gimp-image-select-item img CHANNEL-OP-REPLACE mask )
2004-09-22 18:43:09 +00:00
( gimp-context-set-background ' ( 255 255 255 ) )
2003-10-16 12:47:33 +00:00
( gimp-edit-fill csl-mask BACKGROUND-FILL )
1997-11-24 22:05:25 +00:00
2004-11-11 13:59:18 +00:00
( set! inset-layer ( car ( gimp-layer-copy layer1 TRUE ) ) )
2010-09-28 09:10:07 +04:00
( gimp-image-insert-layer img inset-layer -1 1 )
1997-11-24 22:05:25 +00:00
2003-10-16 12:47:33 +00:00
( set! il-mask ( car ( gimp-layer-create-mask inset-layer ADD-BLACK-MASK ) ) )
2003-12-08 22:33:17 +00:00
( gimp-layer-add-mask inset-layer il-mask )
2011-02-21 00:07:19 +02:00
( gimp-image-select-item img CHANNEL-OP-REPLACE mask )
2004-09-22 18:43:09 +00:00
( gimp-context-set-background ' ( 255 255 255 ) )
2003-10-16 12:47:33 +00:00
( gimp-edit-fill il-mask BACKGROUND-FILL )
1997-11-24 22:05:25 +00:00
( gimp-selection-none img )
1998-01-29 03:13:44 +00:00
( gimp-selection-none bg-image )
1998-11-14 20:46:25 +00:00
( gimp-levels inset-layer 0 0 255 inset-gamma 0 255 )
1997-11-24 22:05:25 +00:00
( gimp-image-remove-channel img mask )
( gimp-image-remove-channel img mask-fat )
( gimp-image-remove-channel img mask-highlight )
( gimp-image-remove-channel img mask-shadow )
2010-10-10 03:41:21 +04:00
( gimp-item-set-name layer1 _ "Carved Surface" )
( gimp-item-set-name shadow-layer _ "Bevel Shadow" )
( gimp-item-set-name highlight-layer _ "Bevel Highlight" )
( gimp-item-set-name cast-shadow-layer _ "Cast Shadow" )
( gimp-item-set-name inset-layer _ "Inset" )
1997-11-24 22:05:25 +00:00
( gimp-display-new img )
2004-09-22 17:27:20 +00:00
( gimp-image-undo-enable img )
2006-10-16 01:08:54 +00:00
( gimp-context-pop )
)
)
1997-11-24 22:05:25 +00:00
( script-fu-register "script-fu-carve-it"
2006-10-16 01:08:54 +00:00
_ "Stencil C_arve..."
"Use the specified [GRAY] drawable as a stencil to carve from the specified image. The specified image must be either RGB colour or grayscale, not indexed."
"Spencer Kimball"
"Spencer Kimball"
"1997"
"GRAY"
SF-IMAGE "Mask image" 0
SF-DRAWABLE "Mask drawable" 0
SF-DRAWABLE _ "Image to carve" 0
SF-TOGGLE _ "Carve white areas" TRUE
)
2004-11-18 22:44:28 +00:00
( script-fu-menu-register "script-fu-carve-it"
2006-10-16 01:08:54 +00:00
"<Image>/Filters/Decor" )