From 3c57dd931145d43f2b0aef96c4d178135956bf91 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 05:13:10 +0200 Subject: Adding upstream version 2.10.36. Signed-off-by: Daniel Baumann --- plug-ins/script-fu/scripts/difference-clouds.scm | 80 ++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 plug-ins/script-fu/scripts/difference-clouds.scm (limited to 'plug-ins/script-fu/scripts/difference-clouds.scm') diff --git a/plug-ins/script-fu/scripts/difference-clouds.scm b/plug-ins/script-fu/scripts/difference-clouds.scm new file mode 100644 index 0000000..15b8fc8 --- /dev/null +++ b/plug-ins/script-fu/scripts/difference-clouds.scm @@ -0,0 +1,80 @@ +; Plugin for the GNU Image Manipulation Program +; Copyright (C) 2006 Martin Nordholts +; +; 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 3 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 should have received a copy of the GNU General Public License +; along with this program. If not, see . +; +; Renders Difference Clouds onto a layer, i.e. solid noise merged down with the +; Difference Mode +; + +(define (script-fu-difference-clouds image + drawable) + + (let* ((draw-offset-x (car (gimp-drawable-offsets drawable))) + (draw-offset-y (cadr (gimp-drawable-offsets drawable))) + (has-sel (car (gimp-drawable-mask-intersect drawable))) + (sel-offset-x (cadr (gimp-drawable-mask-intersect drawable))) + (sel-offset-y (caddr (gimp-drawable-mask-intersect drawable))) + (width (cadddr (gimp-drawable-mask-intersect drawable))) + (height (caddr (cddr (gimp-drawable-mask-intersect drawable)))) + (type (car (gimp-drawable-type-with-alpha drawable))) + (diff-clouds -1) + (offset-x 0) + (offset-y 0) + ) + + (gimp-image-undo-group-start image) + + ; Create the cloud layer + (set! diff-clouds (car (gimp-layer-new image width height type + "Clouds" 100 LAYER-MODE-DIFFERENCE))) + + ; Add the cloud layer above the current layer + (gimp-image-insert-layer image diff-clouds 0 -1) + + ; Clear the layer (so there are no noise in it) + (gimp-drawable-fill diff-clouds FILL-TRANSPARENT) + + ; Selections are relative to the drawable; adjust the final offset + (set! offset-x (+ draw-offset-x sel-offset-x)) + (set! offset-y (+ draw-offset-y sel-offset-y)) + + ; Offset the clouds layer + (if (gimp-item-is-layer drawable) + (gimp-item-transform-translate diff-clouds offset-x offset-y)) + + ; Show the solid noise dialog + (plug-in-solid-noise SF-RUN-MODE image diff-clouds 0 0 0 1 4.0 4.0) + + ; Merge the clouds layer with the layer below + (gimp-image-merge-down image diff-clouds EXPAND-AS-NECESSARY) + + (gimp-image-undo-group-end image) + + (gimp-displays-flush) + ) +) + +(script-fu-register "script-fu-difference-clouds" + _"_Difference Clouds..." + _"Solid noise applied with Difference layer mode" + "Martin Nordholts " + "Martin Nordholts" + "2006/10/25" + "RGB* GRAY*" + SF-IMAGE "Image" 0 + SF-DRAWABLE "Drawable" 0) + +(script-fu-menu-register "script-fu-difference-clouds" + "/Filters/Render/Noise") -- cgit v1.2.3