GIMP Script-fu

Artifact [7a43ea337d]
Login

Artifact [7a43ea337d]

Artifact 7a43ea337d958e33df605aa35b3e41c3feb1d797:


; 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.

; pre-2.8 COMPATIBILITY
  (when (not (defined? 'gimp-image-insert-layer))
    (define (gimp-image-insert-layer image layer parent position)
      (gimp-image-add-layer image layer position) ))

(define (script-fu-sg-grid-layer image)
  ;; Create a physical instantiation of the image grid (as a layer)
  ;
  (let ((grid-fg-color (car (gimp-image-grid-get-foreground-color image)))
        (grid-bg-color (car (gimp-image-grid-get-background-color image)))
        (grid-offset (car (gimp-image-grid-get-offset image)))
        (grid-spacing (car (gimp-image-grid-get-spacing image)))
        (grid-style (car (gimp-image-grid-get-style image)))
        )
    (gimp-image-undo-group-start image)
    (let ((orig-sel (car (gimp-selection-save image)))
          (layer (car (gimp-layer-new image 
                                      (car (gimp-image-width image)) 
                                      (car (gimp-image-height image))
                                      (+ (* (car (gimp-image-base-type image)) 2) 1)
                                      "Grid"
                                      100
                                      NORMAL-MODE ))))
      (gimp-image-insert-layer image layer 0 0)
      (gimp-selection-none image)
      (gimp-drawable-fill layer TRANSPARENT-FILL)
      (if (= grid-style GRID-DOTS)
        (plug-in-grid RUN-NONINTERACTIVE image layer
                      0 grid-spacing grid-offset grid-fg-color 255
                      0 grid-spacing grid-offset grid-fg-color 255
                      1 0 1 grid-fg-color 255 ) 
        (if (= grid-style GRID-INTERSECTIONS)
          (plug-in-grid RUN-NONINTERACTIVE image layer
                        0 grid-spacing grid-offset grid-fg-color 255
                        0 grid-spacing grid-offset grid-fg-color 255
                        3 0 1 grid-fg-color 255 )
          (plug-in-grid RUN-NONINTERACTIVE image layer
                        1 grid-spacing grid-offset grid-fg-color 255
                        1 grid-spacing grid-offset grid-fg-color 255
                        0 grid-spacing grid-offset grid-fg-color 255 )))
      (gimp-selection-load orig-sel)
      (gimp-image-remove-channel image orig-sel) )
    (gimp-image-undo-group-end image) )
  (gimp-displays-flush)
  )
        
(script-fu-register "script-fu-sg-grid-layer"
  "New Layer From Image Grid"
  "Create a layer from current grid configuration."
  "Saul Goode"
  "Saul Goode"
  "July 2014"
  "*"
  SF-IMAGE    "Image"    0
  )

(script-fu-menu-register "script-fu-sg-grid-layer"
  "<Image>/Filters/Misc"
  )