1997-11-24 22:05:25 +00:00
;;; grid-system.scm -*-scheme-*-
1998-04-08 23:15:24 +00:00
;;; Time-stamp: <1998/01/20 23:22:02 narazaki@InetQ.or.jp>
1997-11-24 22:05:25 +00:00
;;; This file is a part of:
1998-04-08 23:15:24 +00:00
;;; The GIMP (Copyright (C) 1995-1997 Spencer Kimball and Peter Mattis)
1997-11-24 22:05:25 +00:00
;;; Author: Shuji Narazaki (narazaki@InetQ.or.jp)
1998-04-08 23:15:24 +00:00
;;; Version 0.6
1997-11-24 22:05:25 +00:00
;;; Code:
1998-04-08 23:15:24 +00:00
( if ( not ( symbol-bound? 'script-fu-grid-system-x-divides ( the-environment ) ) )
( define script-fu-grid-system-x-divides "'(1 g 1)" ) )
( if ( not ( symbol-bound? 'script-fu-grid-system-y-divides ( the-environment ) ) )
( define script-fu-grid-system-y-divides "'(1 g 1)" ) )
( define ( script-fu-grid-system img drw x-divides-orig y-divides-orig )
1997-11-24 22:05:25 +00:00
( define ( update-segment! s x0 y0 x1 y1 )
( aset s 0 x0 )
( aset s 1 y0 )
( aset s 2 x1 )
( aset s 3 y1 ) )
1998-04-08 23:15:24 +00:00
( define ( convert-g l )
( cond ( ( null? l ) ' ( ) )
( ( eq? ( car l ) 'g ) ( cons 1.618 ( convert-g ( cdr l ) ) ) )
( ( eq? ( car l ) '1/g ) ( cons 0.618 ( convert-g ( cdr l ) ) ) )
( 'else ( cons ( car l ) ( convert-g ( cdr l ) ) ) ) ) )
( define ( wrap-list l )
( define ( wrap-object obj )
( cond ( ( number? obj ) ( string-append ( number->string obj ) " " ) )
( ( eq? obj 'g ) "g " )
( eq? ojb '1/g ) "1/g " ) )
( string-append "'("
( apply string-append ( map wrap-object l ) )
")" ) )
1997-11-24 22:05:25 +00:00
( let* ( ( drw-width ( car ( gimp-drawable-width drw ) ) )
( drw-height ( car ( gimp-drawable-height drw ) ) )
( drw-offset-x ( nth 0 ( gimp-drawable-offsets drw ) ) )
( drw-offset-y ( nth 1 ( gimp-drawable-offsets drw ) ) )
1998-04-08 23:15:24 +00:00
( grid-layer #f )
1997-11-24 22:05:25 +00:00
( segment ( cons-array 4 'double ) )
( stepped-x 0 )
( stepped-y 0 )
( temp 0 )
1998-04-08 23:15:24 +00:00
( total-step-x 0 )
( total-step-y 0 ) )
( set! x-divides ( convert-g x-divides-orig ) )
( set! y-divides ( convert-g y-divides-orig ) )
( set! total-step-x ( apply + x-divides ) )
( set! total-step-y ( apply + y-divides ) )
;(gimp-undo-push-group-start img)
( set! grid-layer ( car ( gimp-layer-copy drw TRUE ) ) )
1998-11-14 20:46:25 +00:00
( gimp-edit-clear grid-layer )
1998-04-08 23:15:24 +00:00
( gimp-layer-set-name grid-layer "grid layer" )
1997-11-24 22:05:25 +00:00
( while ( not ( null? ( cdr x-divides ) ) )
( set! stepped-x ( + stepped-x ( car x-divides ) ) )
( set! temp ( * drw-width ( / stepped-x total-step-x ) ) )
( set! x-divides ( cdr x-divides ) )
( update-segment! segment
( + drw-offset-x temp ) drw-offset-y
( + drw-offset-x temp ) ( + drw-offset-y drw-height ) )
1998-11-14 20:46:25 +00:00
( gimp-pencil grid-layer 4 segment ) )
1997-11-24 22:05:25 +00:00
( while ( not ( null? ( cdr y-divides ) ) )
( set! stepped-y ( + stepped-y ( car y-divides ) ) )
( set! temp ( * drw-height ( / stepped-y total-step-y ) ) )
( set! y-divides ( cdr y-divides ) )
( update-segment! segment
drw-offset-x ( + drw-offset-y temp )
( + drw-offset-x drw-width ) ( + drw-offset-y temp ) )
1998-11-14 20:46:25 +00:00
( gimp-pencil grid-layer 4 segment ) )
1998-04-08 23:15:24 +00:00
( gimp-image-add-layer img grid-layer 0 )
;(gimp-undo-push-group-end img)
( set! script-fu-grid-system-x-divides ( wrap-list x-divides-orig ) )
( set! script-fu-grid-system-y-divides ( wrap-list y-divides-orig ) )
1997-11-24 22:05:25 +00:00
( gimp-displays-flush ) ) )
1998-11-14 20:46:25 +00:00
( script-fu-register "script-fu-grid-system"
2003-08-11 17:14:32 +00:00
_ "<Image>/Script-Fu/Render/_Grid..."
1997-11-24 22:05:25 +00:00
"Draw grid as specified by X-DIVIDES (list of propotions relative to the drawable) and Y-DIVIDES. The color and width of grid is detemined by the current settings of brush."
"Shuji Narazaki <narazaki@InetQ.or.jp>"
"Shuji Narazaki"
"1997"
"RGB*, INDEXED*, GRAY*"
SF-IMAGE "Image to use" 0
SF-DRAWABLE "Drawable to draw grid" 0
2003-06-24 11:08:39 +00:00
SF-VALUE _ "X Divisions" script-fu-grid-system-x-divides
SF-VALUE _ "Y Divisions" script-fu-grid-system-y-divides
1997-11-24 22:05:25 +00:00
)
1998-04-08 23:15:24 +00:00
;;; grid-system.scm ends here