RFX-GIMP

Hex Artifact Content
Login

Artifact 0e8b7491fa51b4fc12b2356b6223fc15581ecfb9:


0000: 23 20 24 70 30 20 2d 20 48 6f 72 69 7a 6f 6e 74  # $p0 - Horizont
0010: 61 6c 20 70 69 65 63 65 73 0a 23 20 24 70 31 20  al pieces.# $p1 
0020: 2d 20 56 65 72 74 69 63 61 6c 20 70 69 65 63 65  - Vertical piece
0030: 73 0a 23 20 24 70 32 20 2d 20 43 75 72 76 65 64  s.# $p2 - Curved
0040: 20 65 64 67 65 73 20 28 62 6f 6f 6c 65 61 6e 29   edges (boolean)
0050: 0a 23 20 24 70 33 20 2d 20 43 6c 69 70 62 6f 61  .# $p3 - Clipboa
0060: 72 64 20 70 6f 73 69 74 69 6f 6e 20 28 6e 6f 72  rd position (nor
0070: 6d 61 6c 2c 20 63 65 6e 74 65 72 65 64 2c 20 73  mal, centered, s
0080: 63 61 6c 65 64 29 0a 0a 26 72 66 78 5f 73 65 6e  caled)..&rfx_sen
0090: 64 6d 73 67 20 28 0a 20 20 71 71 7b 0a 20 20 20  dmsg (.  qq{.   
00a0: 20 28 62 65 67 69 6e 0a 20 20 20 20 20 20 28 77   (begin.      (w
00b0: 68 65 6e 20 28 3d 20 24 66 72 61 6d 65 20 24 73  hen (= $frame $s
00c0: 74 61 72 74 29 0a 20 20 20 20 20 20 20 20 28 64  tart).        (d
00d0: 65 66 69 6e 65 20 72 66 78 2d 6a 69 67 73 61 77  efine rfx-jigsaw
00e0: 2d 70 69 65 63 65 73 20 27 28 29 29 0a 20 20 20  -pieces '()).   
00f0: 20 20 20 20 20 28 64 65 66 69 6e 65 20 72 66 78       (define rfx
0100: 2d 6a 69 67 73 61 77 2d 6b 65 79 66 72 61 6d 65  -jigsaw-keyframe
0110: 73 20 27 28 29 29 0a 20 20 20 20 20 20 20 20 28  s '()).        (
0120: 6c 65 74 2a 20 28 28 6a 69 67 73 61 77 2d 69 6d  let* ((jigsaw-im
0130: 61 67 65 20 28 63 61 72 20 28 67 69 6d 70 2d 69  age (car (gimp-i
0140: 6d 61 67 65 2d 6e 65 77 20 24 77 69 64 74 68 20  mage-new $width 
0150: 24 68 65 69 67 68 74 20 52 47 42 29 29 29 0a 20  $height RGB))). 
0160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c                (l
0170: 61 79 65 72 20 28 63 61 72 20 28 67 69 6d 70 2d  ayer (car (gimp-
0180: 6c 61 79 65 72 2d 6e 65 77 20 6a 69 67 73 61 77  layer-new jigsaw
0190: 2d 69 6d 61 67 65 20 0a 20 20 20 20 20 20 20 20  -image .        
01a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
01b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
01c0: 20 20 20 24 77 69 64 74 68 20 0a 20 20 20 20 20     $width .     
01d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
01e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
01f0: 20 20 20 20 20 20 24 68 65 69 67 68 74 20 0a 20        $height . 
0200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0220: 20 20 20 20 20 20 20 20 20 20 52 47 42 41 2d 49            RGBA-I
0230: 4d 41 47 45 0a 20 20 20 20 20 20 20 20 20 20 20  MAGE.           
0240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0260: 22 6a 69 67 73 61 77 22 0a 20 20 20 20 20 20 20  "jigsaw".       
0270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0290: 20 20 20 20 31 30 30 0a 20 20 20 20 20 20 20 20      100.        
02a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
02b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
02c0: 20 20 20 4e 4f 52 4d 41 4c 2d 4d 4f 44 45 20 29     NORMAL-MODE )
02d0: 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 67  ))).          (g
02e0: 69 6d 70 2d 69 6d 61 67 65 2d 61 64 64 2d 6c 61  imp-image-add-la
02f0: 79 65 72 20 6a 69 67 73 61 77 2d 69 6d 61 67 65  yer jigsaw-image
0300: 20 6c 61 79 65 72 20 30 29 0a 20 20 20 20 20 20   layer 0).      
0310: 20 20 20 20 28 67 69 6d 70 2d 64 72 61 77 61 62      (gimp-drawab
0320: 6c 65 2d 66 69 6c 6c 20 6c 61 79 65 72 20 57 48  le-fill layer WH
0330: 49 54 45 2d 46 49 4c 4c 29 0a 20 20 20 20 20 20  ITE-FILL).      
0340: 20 20 20 20 28 70 6c 75 67 2d 69 6e 2d 6a 69 67      (plug-in-jig
0350: 73 61 77 20 52 55 4e 2d 4e 4f 4e 49 4e 54 45 52  saw RUN-NONINTER
0360: 41 43 54 49 56 45 20 6a 69 67 73 61 77 2d 69 6d  ACTIVE jigsaw-im
0370: 61 67 65 20 6c 61 79 65 72 20 24 70 30 20 24 70  age layer $p0 $p
0380: 31 20 24 70 32 20 30 20 30 29 0a 20 20 20 20 20  1 $p2 0 0).     
0390: 20 20 20 20 20 28 6c 65 74 20 72 6f 77 2d 6c 6f       (let row-lo
03a0: 6f 70 20 28 28 72 6f 77 20 24 70 31 29 29 0a 20  op ((row $p1)). 
03b0: 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65             (unle
03c0: 73 73 20 28 7a 65 72 6f 3f 20 72 6f 77 29 0a 20  ss (zero? row). 
03d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65               (le
03e0: 74 20 63 6f 6c 2d 6c 6f 6f 70 20 28 28 63 6f 6c  t col-loop ((col
03f0: 20 24 70 30 29 29 0a 20 20 20 20 20 20 20 20 20   $p0)).         
0400: 20 20 20 20 20 20 20 28 69 66 20 28 7a 65 72 6f         (if (zero
0410: 3f 20 63 6f 6c 29 0a 20 20 20 20 20 20 20 20 20  ? col).         
0420: 20 20 20 20 20 20 20 20 20 28 72 6f 77 2d 6c 6f           (row-lo
0430: 6f 70 20 28 70 72 65 64 20 72 6f 77 29 29 0a 20  op (pred row)). 
0440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0450: 20 28 62 65 67 69 6e 0a 20 20 20 20 20 20 20 20   (begin.        
0460: 20 20 20 20 20 20 20 20 20 20 20 20 28 67 69 6d              (gim
0470: 70 2d 66 75 7a 7a 79 2d 73 65 6c 65 63 74 20 6c  p-fuzzy-select l
0480: 61 79 65 72 20 0a 20 20 20 20 20 20 20 20 20 20  ayer .          
0490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
04a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2d 20               (- 
04b0: 28 2a 20 28 2f 20 24 77 69 64 74 68 20 24 70 30  (* (/ $width $p0
04c0: 29 20 63 6f 6c 29 20 28 2f 20 24 77 69 64 74 68  ) col) (/ $width
04d0: 20 24 70 30 20 32 29 29 0a 20 20 20 20 20 20 20   $p0 2)).       
04e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
04f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0500: 28 2d 20 28 2a 20 28 2f 20 24 68 65 69 67 68 74  (- (* (/ $height
0510: 20 24 70 31 29 20 72 6f 77 29 20 28 2f 20 24 68   $p1) row) (/ $h
0520: 65 69 67 68 74 20 24 70 31 20 32 29 29 0a 20 20  eight $p1 2)).  
0530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0550: 20 20 20 20 20 31 32 38 20 0a 20 20 20 20 20 20       128 .      
0560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0580: 20 43 48 41 4e 4e 45 4c 2d 4f 50 2d 52 45 50 4c   CHANNEL-OP-REPL
0590: 41 43 45 0a 20 20 20 20 20 20 20 20 20 20 20 20  ACE.            
05a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
05b0: 20 20 20 20 20 20 20 20 20 20 20 46 41 4c 53 45             FALSE
05c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
05d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
05e0: 20 20 20 20 20 20 20 20 46 41 4c 53 45 0a 20 20          FALSE.  
05f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0610: 20 20 20 20 20 30 0a 20 20 20 20 20 20 20 20 20       0.         
0620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 41                FA
0640: 4c 53 45 20 29 0a 20 20 20 20 20 20 20 20 20 20  LSE ).          
0650: 20 20 20 20 20 20 20 20 20 20 28 70 6c 75 67 2d            (plug-
0660: 69 6e 2d 73 65 6c 32 70 61 74 68 20 52 55 4e 2d  in-sel2path RUN-
0670: 4e 4f 4e 49 4e 54 45 52 41 43 54 49 56 45 20 6a  NONINTERACTIVE j
0680: 69 67 73 61 77 2d 69 6d 61 67 65 20 6c 61 79 65  igsaw-image laye
0690: 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r).             
06a0: 20 20 20 20 20 20 20 28 73 65 74 21 20 72 66 78         (set! rfx
06b0: 2d 6a 69 67 73 61 77 2d 70 69 65 63 65 73 20 0a  -jigsaw-pieces .
06c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
06d0: 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20            (cons 
06e0: 28 63 61 72 20 28 67 69 6d 70 2d 76 65 63 74 6f  (car (gimp-vecto
06f0: 72 73 2d 65 78 70 6f 72 74 2d 74 6f 2d 73 74 72  rs-export-to-str
0700: 69 6e 67 20 0a 20 20 20 20 20 20 20 20 20 20 20  ing .           
0710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a 69                ji
0730: 67 73 61 77 2d 69 6d 61 67 65 20 0a 20 20 20 20  gsaw-image .    
0740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0760: 20 20 20 20 20 28 63 61 72 20 28 67 69 6d 70 2d       (car (gimp-
0770: 69 6d 61 67 65 2d 67 65 74 2d 61 63 74 69 76 65  image-get-active
0780: 2d 76 65 63 74 6f 72 73 20 6a 69 67 73 61 77 2d  -vectors jigsaw-
0790: 69 6d 61 67 65 29 29 20 29 29 0a 20 20 20 20 20  image)) )).     
07a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
07b0: 20 20 20 20 20 20 20 20 20 20 20 72 66 78 2d 6a             rfx-j
07c0: 69 67 73 61 77 2d 70 69 65 63 65 73 20 29 29 0a  igsaw-pieces )).
07d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
07e0: 20 20 20 20 28 63 6f 6c 2d 6c 6f 6f 70 20 28 70      (col-loop (p
07f0: 72 65 64 20 63 6f 6c 29 29 20 29 29 29 29 29 0a  red col)) ))))).
0800: 20 20 20 20 20 20 20 20 20 20 28 67 69 6d 70 2d            (gimp-
0810: 69 6d 61 67 65 2d 64 65 6c 65 74 65 20 6a 69 67  image-delete jig
0820: 73 61 77 2d 69 6d 61 67 65 29 20 0a 20 20 20 20  saw-image) .    
0830: 20 20 20 20 20 20 29 0a 20 20 20 20 20 20 20 20        ).        
0840: 3b 3b 20 72 61 6e 64 6f 6d 69 7a 65 20 74 68 65  ;; randomize the
0850: 20 6c 69 73 74 20 6f 66 20 70 69 65 63 65 73 0a   list of pieces.
0860: 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6e          (let ((n
0870: 75 6d 62 65 72 2d 6f 66 2d 70 69 65 63 65 73 20  umber-of-pieces 
0880: 28 2a 20 24 70 30 20 24 70 31 29 29 29 0a 20 20  (* $p0 $p1))).  
0890: 20 20 20 20 20 20 20 20 28 73 65 74 21 20 72 66          (set! rf
08a0: 78 2d 6a 69 67 73 61 77 2d 70 69 65 63 65 73 20  x-jigsaw-pieces 
08b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
08c0: 20 28 6c 65 74 20 6c 6f 6f 70 20 28 28 6c 69 73   (let loop ((lis
08d0: 20 72 66 78 2d 6a 69 67 73 61 77 2d 70 69 65 63   rfx-jigsaw-piec
08e0: 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  es).            
08f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
0900: 6b 20 6e 75 6d 62 65 72 2d 6f 66 2d 70 69 65 63  k number-of-piec
0910: 65 73 29 20 29 0a 20 20 20 20 20 20 20 20 20 20  es) ).          
0920: 20 20 20 20 20 20 20 20 28 69 66 20 28 7a 65 72          (if (zer
0930: 6f 3f 20 6b 29 0a 20 20 20 20 20 20 20 20 20 20  o? k).          
0940: 20 20 20 20 20 20 20 20 20 20 6c 69 73 0a 20 20            lis.  
0950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0960: 20 20 28 6c 65 74 20 28 28 69 6e 64 65 78 20 28    (let ((index (
0970: 72 61 6e 64 6f 6d 20 6e 75 6d 62 65 72 2d 6f 66  random number-of
0980: 2d 70 69 65 63 65 73 29 29 29 0a 20 20 20 20 20  -pieces))).     
0990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
09a0: 20 28 6c 6f 6f 70 20 28 61 70 70 65 6e 64 20 28   (loop (append (
09b0: 6c 69 73 74 2d 74 61 69 6c 20 6c 69 73 20 69 6e  list-tail lis in
09c0: 64 65 78 29 0a 20 20 20 20 20 20 20 20 20 20 20  dex).           
09d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
09e0: 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 2d 74           (list-t
09f0: 61 69 6c 20 28 72 65 76 65 72 73 65 20 6c 69 73  ail (reverse lis
0a00: 29 20 28 2d 20 28 6c 65 6e 67 74 68 20 6c 69 73  ) (- (length lis
0a10: 29 20 20 69 6e 64 65 78 29 29 20 29 0a 20 20 20  )  index)) ).   
0a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0a30: 20 20 20 20 20 20 20 20 20 28 70 72 65 64 20 6b           (pred k
0a40: 29 20 29 29 29 29 29 29 0a 20 20 20 20 20 20 20  ) )))))).       
0a50: 20 28 6c 65 74 20 28 28 6e 65 78 74 2d 6b 65 79   (let ((next-key
0a60: 66 72 61 6d 65 20 28 6d 61 6b 65 2d 70 72 6f 67  frame (make-prog
0a70: 72 65 73 73 6f 72 20 24 73 74 61 72 74 20 28 2f  ressor $start (/
0a80: 20 28 2d 20 24 65 6e 64 20 24 73 74 61 72 74 29   (- $end $start)
0a90: 20 28 73 75 63 63 20 28 2a 20 24 70 30 20 24 70   (succ (* $p0 $p
0aa0: 31 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20  1)))))).        
0ab0: 20 20 28 6e 65 78 74 2d 6b 65 79 66 72 61 6d 65    (next-keyframe
0ac0: 29 20 3b 20 73 74 61 72 74 20 77 69 74 68 20 66  ) ; start with f
0ad0: 75 6c 6c 79 20 73 68 6f 77 6e 20 63 6c 69 70 62  ully shown clipb
0ae0: 6f 61 72 64 0a 20 20 20 20 20 20 20 20 20 20 28  oard.          (
0af0: 73 65 74 21 20 72 66 78 2d 6a 69 67 73 61 77 2d  set! rfx-jigsaw-
0b00: 6b 65 79 66 72 61 6d 65 73 20 28 6d 61 70 20 6e  keyframes (map n
0b10: 65 78 74 2d 6b 65 79 66 72 61 6d 65 20 72 66 78  ext-keyframe rfx
0b20: 2d 6a 69 67 73 61 77 2d 70 69 65 63 65 73 29 29  -jigsaw-pieces))
0b30: 0a 20 20 20 20 20 20 20 20 20 20 29 0a 20 20 20  .          ).   
0b40: 20 20 20 20 20 29 0a 20 20 20 20 20 20 28 6c 65       ).      (le
0b50: 74 2a 20 28 28 69 6e 70 75 74 2d 66 69 6c 65 20  t* ((input-file 
0b60: 28 73 74 72 69 6e 67 2d 61 70 70 65 6e 64 20 22  (string-append "
0b70: 24 63 75 72 74 6d 70 64 69 72 22 20 44 49 52 2d  $curtmpdir" DIR-
0b80: 53 45 50 41 52 41 54 4f 52 20 22 24 69 6e 22 29  SEPARATOR "$in")
0b90: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28  ).             (
0ba0: 69 6d 61 67 65 20 28 63 61 72 20 28 67 69 6d 70  image (car (gimp
0bb0: 2d 66 69 6c 65 2d 6c 6f 61 64 20 52 55 4e 2d 4e  -file-load RUN-N
0bc0: 4f 4e 49 4e 54 45 52 41 43 54 49 56 45 20 69 6e  ONINTERACTIVE in
0bd0: 70 75 74 2d 66 69 6c 65 20 69 6e 70 75 74 2d 66  put-file input-f
0be0: 69 6c 65 29 29 29 0a 20 20 20 20 20 20 20 20 20  ile))).         
0bf0: 20 20 20 20 28 6c 61 79 65 72 20 28 63 61 72 20      (layer (car 
0c00: 28 67 69 6d 70 2d 69 6d 61 67 65 2d 67 65 74 2d  (gimp-image-get-
0c10: 61 63 74 69 76 65 2d 6c 61 79 65 72 20 69 6d 61  active-layer ima
0c20: 67 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  ge))).          
0c30: 20 20 20 28 69 6e 70 75 74 2d 66 69 6c 65 32 20     (input-file2 
0c40: 28 73 74 72 69 6e 67 2d 61 70 70 65 6e 64 20 22  (string-append "
0c50: 24 69 6e 32 22 29 29 0a 20 20 20 20 20 20 20 20  $in2")).        
0c60: 20 20 20 20 20 28 69 6d 61 67 65 32 20 28 63 61       (image2 (ca
0c70: 72 20 28 67 69 6d 70 2d 66 69 6c 65 2d 6c 6f 61  r (gimp-file-loa
0c80: 64 20 52 55 4e 2d 4e 4f 4e 49 4e 54 45 52 41 43  d RUN-NONINTERAC
0c90: 54 49 56 45 20 69 6e 70 75 74 2d 66 69 6c 65 32  TIVE input-file2
0ca0: 20 69 6e 70 75 74 2d 66 69 6c 65 32 29 29 29 0a   input-file2))).
0cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 2d               (b-
0cc0: 6c 61 79 65 72 20 28 63 61 72 20 28 67 69 6d 70  layer (car (gimp
0cd0: 2d 6c 61 79 65 72 2d 6e 65 77 2d 66 72 6f 6d 2d  -layer-new-from-
0ce0: 64 72 61 77 61 62 6c 65 20 0a 20 20 20 20 20 20  drawable .      
0cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0d00: 20 20 20 20 20 20 20 20 20 20 28 63 61 72 20 28            (car (
0d10: 67 69 6d 70 2d 69 6d 61 67 65 2d 67 65 74 2d 61  gimp-image-get-a
0d20: 63 74 69 76 65 2d 6c 61 79 65 72 20 69 6d 61 67  ctive-layer imag
0d30: 65 32 29 29 20 0a 20 20 20 20 20 20 20 20 20 20  e2)) .          
0d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0d50: 20 20 20 20 20 20 69 6d 61 67 65 20 29 29 29 20        image ))) 
0d60: 29 0a 20 20 20 20 20 20 20 20 28 67 69 6d 70 2d  ).        (gimp-
0d70: 69 6d 61 67 65 2d 75 6e 64 6f 2d 64 69 73 61 62  image-undo-disab
0d80: 6c 65 20 69 6d 61 67 65 29 0a 20 20 20 20 20 20  le image).      
0d90: 20 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 61 64    (gimp-image-ad
0da0: 64 2d 6c 61 79 65 72 20 69 6d 61 67 65 20 62 2d  d-layer image b-
0db0: 6c 61 79 65 72 20 31 29 0a 20 20 20 20 20 20 20  layer 1).       
0dc0: 20 28 63 6f 6e 64 20 0a 20 20 20 20 20 20 20 20   (cond .        
0dd0: 20 20 28 28 3d 20 24 70 33 20 31 29 20 3b 20 63    ((= $p3 1) ; c
0de0: 65 6e 74 65 72 65 64 0a 20 20 20 20 20 20 20 20  entered.        
0df0: 20 20 20 20 28 67 69 6d 70 2d 6c 61 79 65 72 2d      (gimp-layer-
0e00: 73 65 74 2d 6f 66 66 73 65 74 73 20 62 2d 6c 61  set-offsets b-la
0e10: 79 65 72 20 0a 20 20 20 20 20 20 20 20 20 20 20  yer .           
0e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0e30: 20 20 20 20 20 20 20 20 20 28 2f 20 28 2d 20 24           (/ (- $
0e40: 77 69 64 74 68 20 28 63 61 72 20 28 67 69 6d 70  width (car (gimp
0e50: 2d 64 72 61 77 61 62 6c 65 2d 77 69 64 74 68 20  -drawable-width 
0e60: 62 2d 6c 61 79 65 72 29 29 29 20 32 29 0a 20 20  b-layer))) 2).  
0e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0e90: 20 20 28 2f 20 28 2d 20 24 68 65 69 67 68 74 20    (/ (- $height 
0ea0: 28 63 61 72 20 28 67 69 6d 70 2d 64 72 61 77 61  (car (gimp-drawa
0eb0: 62 6c 65 2d 68 65 69 67 68 74 20 62 2d 6c 61 79  ble-height b-lay
0ec0: 65 72 29 29 29 20 32 29 20 29 29 0a 20 20 20 20  er))) 2) )).    
0ed0: 20 20 20 20 20 20 28 28 3d 20 24 70 33 20 32 29        ((= $p3 2)
0ee0: 20 3b 20 73 63 61 6c 65 64 0a 20 20 20 20 20 20   ; scaled.      
0ef0: 20 20 20 20 20 20 28 67 69 6d 70 2d 6c 61 79 65        (gimp-laye
0f00: 72 2d 73 63 61 6c 65 2d 66 75 6c 6c 20 62 2d 6c  r-scale-full b-l
0f10: 61 79 65 72 20 24 77 69 64 74 68 20 24 68 65 69  ayer $width $hei
0f20: 67 68 74 20 54 52 55 45 20 49 4e 54 45 52 50 4f  ght TRUE INTERPO
0f30: 4c 41 54 49 4f 4e 2d 43 55 42 49 43 29 0a 20 20  LATION-CUBIC).  
0f40: 20 20 20 20 20 20 20 20 20 20 28 67 69 6d 70 2d            (gimp-
0f50: 6c 61 79 65 72 2d 73 65 74 2d 6f 66 66 73 65 74  layer-set-offset
0f60: 73 20 62 2d 6c 61 79 65 72 20 30 20 30 29 20 29  s b-layer 0 0) )
0f70: 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20  ).        .     
0f80: 20 20 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 64     (gimp-image-d
0f90: 65 6c 65 74 65 20 69 6d 61 67 65 32 29 0a 0a 20  elete image2).. 
0fa0: 20 20 20 20 20 20 20 28 67 69 6d 70 2d 6c 61 79         (gimp-lay
0fb0: 65 72 2d 61 64 64 2d 61 6c 70 68 61 20 6c 61 79  er-add-alpha lay
0fc0: 65 72 29 0a 20 20 20 20 20 20 20 20 28 67 69 6d  er).        (gim
0fd0: 70 2d 73 65 6c 65 63 74 69 6f 6e 2d 6e 6f 6e 65  p-selection-none
0fe0: 20 69 6d 61 67 65 29 0a 0a 20 20 20 20 20 20 20   image)..       
0ff0: 20 28 77 68 65 6e 20 28 61 6e 64 20 28 70 61 69   (when (and (pai
1000: 72 3f 20 72 66 78 2d 6a 69 67 73 61 77 2d 6b 65  r? rfx-jigsaw-ke
1010: 79 66 72 61 6d 65 73 29 0a 20 20 20 20 20 20 20  yframes).       
1020: 20 20 20 20 20 20 20 20 20 20 20 20 28 3e 3d 20              (>= 
1030: 24 66 72 61 6d 65 20 28 63 61 72 20 72 66 78 2d  $frame (car rfx-
1040: 6a 69 67 73 61 77 2d 6b 65 79 66 72 61 6d 65 73  jigsaw-keyframes
1050: 29 29 20 29 0a 20 20 20 20 20 20 20 20 20 20 28  )) ).          (
1060: 73 65 74 21 20 72 66 78 2d 6a 69 67 73 61 77 2d  set! rfx-jigsaw-
1070: 6b 65 79 66 72 61 6d 65 73 20 28 63 64 72 20 72  keyframes (cdr r
1080: 66 78 2d 6a 69 67 73 61 77 2d 6b 65 79 66 72 61  fx-jigsaw-keyfra
1090: 6d 65 73 29 29 20 29 0a 0a 20 20 20 20 20 20 20  mes)) )..       
10a0: 20 28 6c 65 74 20 6c 6f 6f 70 20 28 28 6e 75 6d   (let loop ((num
10b0: 62 65 72 2d 6f 66 2d 6b 65 79 66 72 61 6d 65 73  ber-of-keyframes
10c0: 20 28 6c 65 6e 67 74 68 20 72 66 78 2d 6a 69 67   (length rfx-jig
10d0: 73 61 77 2d 6b 65 79 66 72 61 6d 65 73 29 29 0a  saw-keyframes)).
10e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10f0: 20 20 20 28 70 69 65 63 65 73 20 72 66 78 2d 6a     (pieces rfx-j
1100: 69 67 73 61 77 2d 70 69 65 63 65 73 29 20 29 0a  igsaw-pieces) ).
1110: 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73            (unles
1120: 73 20 28 7a 65 72 6f 3f 20 6e 75 6d 62 65 72 2d  s (zero? number-
1130: 6f 66 2d 6b 65 79 66 72 61 6d 65 73 29 0a 20 20  of-keyframes).  
1140: 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28            (let (
1150: 28 70 61 74 68 20 28 76 65 63 74 6f 72 2d 72 65  (path (vector-re
1160: 66 20 28 63 61 64 72 20 28 67 69 6d 70 2d 76 65  f (cadr (gimp-ve
1170: 63 74 6f 72 73 2d 69 6d 70 6f 72 74 2d 66 72 6f  ctors-import-fro
1180: 6d 2d 73 74 72 69 6e 67 20 69 6d 61 67 65 20 0a  m-string image .
1190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63                (c
11d0: 61 72 20 70 69 65 63 65 73 29 0a 20 20 20 20 20  ar pieces).     
11e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1210: 20 20 20 20 20 20 20 20 20 2d 31 0a 20 20 20 20           -1.    
1220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1250: 20 20 20 20 20 20 20 20 20 20 54 52 55 45 0a 20            TRUE. 
1260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1290: 20 20 20 20 20 20 20 20 20 20 20 20 20 46 41 4c               FAL
12a0: 53 45 20 29 29 0a 20 20 20 20 20 20 20 20 20 20  SE )).          
12b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c0: 20 20 20 20 20 20 20 20 20 20 30 20 29 29 29 0a            0 ))).
12d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67                (g
12e0: 69 6d 70 2d 76 65 63 74 6f 72 73 2d 74 6f 2d 73  imp-vectors-to-s
12f0: 65 6c 65 63 74 69 6f 6e 20 70 61 74 68 20 43 48  election path CH
1300: 41 4e 4e 45 4c 2d 4f 50 2d 41 44 44 20 54 52 55  ANNEL-OP-ADD TRU
1310: 45 20 46 41 4c 53 45 20 30 20 30 29 0a 20 20 20  E FALSE 0 0).   
1320: 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 70             (loop
1330: 20 28 70 72 65 64 20 6e 75 6d 62 65 72 2d 6f 66   (pred number-of
1340: 2d 6b 65 79 66 72 61 6d 65 73 29 0a 20 20 20 20  -keyframes).    
1350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1360: 28 63 64 72 20 70 69 65 63 65 73 29 20 29 29 29  (cdr pieces) )))
1370: 29 0a 20 20 20 20 20 20 20 20 28 67 69 6d 70 2d  ).        (gimp-
1380: 73 65 6c 65 63 74 69 6f 6e 2d 67 72 6f 77 20 69  selection-grow i
1390: 6d 61 67 65 20 31 29 0a 20 20 20 20 20 20 20 20  mage 1).        
13a0: 28 69 66 20 28 70 61 69 72 3f 20 72 66 78 2d 6a  (if (pair? rfx-j
13b0: 69 67 73 61 77 2d 6b 65 79 66 72 61 6d 65 73 29  igsaw-keyframes)
13c0: 0a 20 20 20 20 20 20 20 20 20 20 28 67 69 6d 70  .          (gimp
13d0: 2d 65 64 69 74 2d 63 6c 65 61 72 20 6c 61 79 65  -edit-clear laye
13e0: 72 29 20 29 0a 20 20 20 20 20 20 20 20 28 67 69  r) ).        (gi
13f0: 6d 70 2d 69 6d 61 67 65 2d 6d 65 72 67 65 2d 76  mp-image-merge-v
1400: 69 73 69 62 6c 65 2d 6c 61 79 65 72 73 20 69 6d  isible-layers im
1410: 61 67 65 20 43 4c 49 50 2d 54 4f 2d 49 4d 41 47  age CLIP-TO-IMAG
1420: 45 29 0a 20 20 20 20 20 20 20 20 28 72 66 78 2d  E).        (rfx-
1430: 73 61 76 65 2d 66 72 61 6d 65 20 69 6d 61 67 65  save-frame image
1440: 20 22 24 6f 75 74 22 29 20 0a 20 20 20 20 20 20   "$out") .      
1450: 20 20 29 0a 20 20 20 20 20 20 29 0a 20 20 20 20    ).      ).    
1460: 7d 0a 20 20 29 3b 0a                             }.  );.