GIMP Script-fu

Hex Artifact Content
Login

Artifact d3d332e207b17ae9dcf9535337cb5a5ed5684bff:


0000: 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69  ; This program i
0010: 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3b  s free software;
0020: 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 74 72   you can redistr
0030: 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20  ibute it and/or 
0040: 6d 6f 64 69 66 79 0a 3b 20 69 74 20 75 6e 64 65  modify.; it unde
0050: 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74  r the terms of t
0060: 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50  he GNU General P
0070: 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73  ublic License as
0080: 20 70 75 62 6c 69 73 68 65 64 20 62 79 0a 3b 20   published by.; 
0090: 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72  the Free Softwar
00a0: 65 20 46 6f 75 6e 64 61 74 69 6f 6e 3b 20 65 69  e Foundation; ei
00b0: 74 68 65 72 20 76 65 72 73 69 6f 6e 20 32 20 6f  ther version 2 o
00c0: 66 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f  f the License, o
00d0: 72 0a 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74  r.; (at your opt
00e0: 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76  ion) any later v
00f0: 65 72 73 69 6f 6e 2e 0a 3b 0a 3b 20 54 68 69 73  ersion..;.; This
0100: 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74   program is dist
0110: 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68  ributed in the h
0120: 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c  ope that it will
0130: 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 20 62 75   be useful,.; bu
0140: 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41  t WITHOUT ANY WA
0150: 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20  RRANTY; without 
0160: 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64  even the implied
0170: 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 20 4d   warranty of.; M
0180: 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f  ERCHANTABILITY o
0190: 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20  r FITNESS FOR A 
01a0: 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f  PARTICULAR PURPO
01b0: 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 20 47  SE.  See the.; G
01c0: 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69  NU General Publi
01d0: 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f  c License for mo
01e0: 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 28 64 65  re details...(de
01f0: 66 69 6e 65 20 28 73 63 72 69 70 74 2d 66 75 2d  fine (script-fu-
0200: 73 67 2d 76 69 6b 74 6f 72 69 61 20 6f 72 69 67  sg-viktoria orig
0210: 2d 69 6d 61 67 65 20 6f 72 69 67 2d 64 72 61 77  -image orig-draw
0220: 61 62 6c 65 29 0a 20 20 28 64 65 66 69 6e 65 20  able).  (define 
0230: 76 2d 67 72 69 64 20 27 28 20 36 35 20 31 34 30  v-grid '( 65 140
0240: 20 32 31 35 20 32 36 35 20 33 31 35 20 33 36 35   215 265 315 365
0250: 20 34 31 35 20 34 36 35 20 35 31 35 20 35 36 35   415 465 515 565
0260: 20 36 31 35 20 0a 20 20 20 20 20 20 20 20 20 20   615 .          
0270: 20 20 20 20 20 20 20 20 20 36 36 35 20 37 31 35           665 715
0280: 20 37 36 35 20 38 31 35 20 38 36 35 20 39 31 35   765 815 865 915
0290: 20 39 36 35 20 31 30 31 35 20 31 30 36 35 20 31   965 1015 1065 1
02a0: 31 31 35 20 31 31 36 35 20 31 32 31 35 20 29 29  115 1165 1215 ))
02b0: 0a 20 20 28 64 65 66 69 6e 65 20 68 2d 67 72 69  .  (define h-gri
02c0: 64 20 27 28 30 37 30 20 31 30 35 20 31 34 30 20  d '(070 105 140 
02d0: 31 37 35 20 32 31 30 20 32 34 35 20 32 38 30 20  175 210 245 280 
02e0: 33 31 35 20 33 35 30 20 33 38 35 20 34 32 30 20  315 350 385 420 
02f0: 34 35 35 20 34 39 30 20 35 32 35 20 0a 20 20 20  455 490 525 .   
0300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0310: 35 36 30 20 35 39 35 20 36 33 30 20 36 36 35 20  560 595 630 665 
0320: 37 30 30 20 37 33 35 20 37 37 30 20 38 30 35 20  700 735 770 805 
0330: 38 34 30 20 38 37 35 20 39 31 30 20 39 34 35 20  840 875 910 945 
0340: 39 38 30 20 29 29 0a 20 20 3b 20 53 70 6c 69 74  980 )).  ; Split
0350: 73 20 61 20 6c 69 73 74 20 61 74 20 6b 27 74 68  s a list at k'th
0360: 20 65 6c 65 6d 65 6e 74 0a 20 20 3b 20 52 65 74   element.  ; Ret
0370: 75 72 6e 73 20 61 20 70 61 69 72 20 6f 66 20 6c  urns a pair of l
0380: 69 73 74 73 20 28 28 70 72 65 66 69 78 29 20 2e  ists ((prefix) .
0390: 20 28 73 75 66 66 69 78 29 29 0a 20 20 28 64 65   (suffix)).  (de
03a0: 66 69 6e 65 20 28 73 70 6c 69 74 20 6c 69 73 20  fine (split lis 
03b0: 6b 29 0a 20 20 20 20 28 6c 65 74 20 6c 6f 6f 70  k).    (let loop
03c0: 20 28 28 73 75 66 66 69 78 20 6c 69 73 29 0a 20   ((suffix lis). 
03d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70                (p
03e0: 72 65 66 69 78 20 27 28 29 29 0a 20 20 20 20 20  refix '()).     
03f0: 20 20 20 20 20 20 20 20 20 20 28 6b 20 28 6d 69            (k (mi
0400: 6e 20 6b 20 28 6c 65 6e 67 74 68 20 6c 69 73 29  n k (length lis)
0410: 29 29 20 29 0a 20 20 20 20 20 20 28 69 66 20 28  )) ).      (if (
0420: 7a 65 72 6f 3f 20 6b 29 20 0a 20 20 20 20 20 20  zero? k) .      
0430: 20 20 28 63 6f 6e 73 20 28 72 65 76 65 72 73 65    (cons (reverse
0440: 20 70 72 65 66 69 78 29 20 73 75 66 66 69 78 29   prefix) suffix)
0450: 0a 20 20 20 20 20 20 20 20 28 6c 6f 6f 70 20 28  .        (loop (
0460: 63 64 72 20 73 75 66 66 69 78 29 0a 20 20 20 20  cdr suffix).    
0470: 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20            (cons 
0480: 28 63 61 72 20 73 75 66 66 69 78 29 20 70 72 65  (car suffix) pre
0490: 66 69 78 29 0a 20 20 20 20 20 20 20 20 20 20 20  fix).           
04a0: 20 20 20 28 70 72 65 64 20 6b 29 20 29 29 29 29     (pred k) ))))
04b0: 0a 20 20 28 64 65 66 69 6e 65 20 28 72 6f 77 2d  .  (define (row-
04c0: 73 6f 6c 69 64 3f 20 69 6d 61 67 65 20 64 72 61  solid? image dra
04d0: 77 61 62 6c 65 20 79 29 0a 20 20 20 20 28 6c 65  wable y).    (le
04e0: 74 20 28 28 63 6f 6c 6f 72 20 28 76 65 63 74 6f  t ((color (vecto
04f0: 72 2d 3e 6c 69 73 74 20 28 63 61 64 72 20 28 67  r->list (cadr (g
0500: 69 6d 70 2d 64 72 61 77 61 62 6c 65 2d 67 65 74  imp-drawable-get
0510: 2d 70 69 78 65 6c 20 64 72 61 77 61 62 6c 65 20  -pixel drawable 
0520: 30 20 79 29 29 29 29 0a 20 20 20 20 20 20 20 20  0 y)))).        
0530: 20 20 28 77 69 64 74 68 20 28 63 61 72 20 28 67    (width (car (g
0540: 69 6d 70 2d 69 6d 61 67 65 2d 77 69 64 74 68 20  imp-image-width 
0550: 69 6d 61 67 65 29 29 29 20 29 0a 20 20 20 20 20  image))) ).     
0560: 20 28 67 69 6d 70 2d 72 65 63 74 2d 73 65 6c 65   (gimp-rect-sele
0570: 63 74 20 69 6d 61 67 65 20 30 20 79 20 77 69 64  ct image 0 y wid
0580: 74 68 20 31 20 43 48 41 4e 4e 45 4c 2d 4f 50 2d  th 1 CHANNEL-OP-
0590: 52 45 50 4c 41 43 45 20 30 20 30 29 0a 20 20 20  REPLACE 0 0).   
05a0: 20 20 20 28 67 69 6d 70 2d 62 79 2d 63 6f 6c 6f     (gimp-by-colo
05b0: 72 2d 73 65 6c 65 63 74 20 64 72 61 77 61 62 6c  r-select drawabl
05c0: 65 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e .             
05d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
05e0: 6f 6c 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20  olor.           
05f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0600: 20 31 20 0a 20 20 20 20 20 20 20 20 20 20 20 20   1 .            
0610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0620: 43 48 41 4e 4e 45 4c 2d 4f 50 2d 53 55 42 54 52  CHANNEL-OP-SUBTR
0630: 41 43 54 20 0a 20 20 20 20 20 20 20 20 20 20 20  ACT .           
0640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0650: 20 46 41 4c 53 45 0a 20 20 20 20 20 20 20 20 20   FALSE.         
0660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0670: 20 20 20 46 41 4c 53 45 0a 20 20 20 20 20 20 20     FALSE.       
0680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0690: 20 20 20 20 20 30 20 0a 20 20 20 20 20 20 20 20       0 .        
06a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
06b0: 20 20 20 20 30 20 29 20 29 0a 20 20 20 20 28 6e      0 ) ).    (n
06c0: 6f 74 20 28 7a 65 72 6f 3f 20 28 63 61 72 20 28  ot (zero? (car (
06d0: 67 69 6d 70 2d 73 65 6c 65 63 74 69 6f 6e 2d 69  gimp-selection-i
06e0: 73 2d 65 6d 70 74 79 20 69 6d 61 67 65 29 29 29  s-empty image)))
06f0: 29 20 29 0a 20 20 28 64 65 66 69 6e 65 20 28 63  ) ).  (define (c
0700: 6f 6c 2d 73 6f 6c 69 64 3f 20 69 6d 61 67 65 20  ol-solid? image 
0710: 64 72 61 77 61 62 6c 65 20 78 29 0a 20 20 20 20  drawable x).    
0720: 28 6c 65 74 20 28 28 63 6f 6c 6f 72 20 28 76 65  (let ((color (ve
0730: 63 74 6f 72 2d 3e 6c 69 73 74 20 28 63 61 64 72  ctor->list (cadr
0740: 20 28 67 69 6d 70 2d 64 72 61 77 61 62 6c 65 2d   (gimp-drawable-
0750: 67 65 74 2d 70 69 78 65 6c 20 64 72 61 77 61 62  get-pixel drawab
0760: 6c 65 20 78 20 30 29 29 29 29 0a 20 20 20 20 20  le x 0)))).     
0770: 20 20 20 20 20 28 68 65 69 67 68 74 20 28 63 61       (height (ca
0780: 72 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 68 65  r (gimp-image-he
0790: 69 67 68 74 20 69 6d 61 67 65 29 29 29 20 29 0a  ight image))) ).
07a0: 20 20 20 20 20 20 28 67 69 6d 70 2d 72 65 63 74        (gimp-rect
07b0: 2d 73 65 6c 65 63 74 20 69 6d 61 67 65 20 78 20  -select image x 
07c0: 30 20 31 20 68 65 69 67 68 74 20 43 48 41 4e 4e  0 1 height CHANN
07d0: 45 4c 2d 4f 50 2d 52 45 50 4c 41 43 45 20 30 20  EL-OP-REPLACE 0 
07e0: 30 29 0a 20 20 20 20 20 20 28 67 69 6d 70 2d 62  0).      (gimp-b
07f0: 79 2d 63 6f 6c 6f 72 2d 73 65 6c 65 63 74 20 64  y-color-select d
0800: 72 61 77 61 62 6c 65 20 0a 20 20 20 20 20 20 20  rawable .       
0810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0820: 20 20 20 20 20 63 6f 6c 6f 72 0a 20 20 20 20 20       color.     
0830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0840: 20 20 20 20 20 20 20 31 20 0a 20 20 20 20 20 20         1 .      
0850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0860: 20 20 20 20 20 20 43 48 41 4e 4e 45 4c 2d 4f 50        CHANNEL-OP
0870: 2d 53 55 42 54 52 41 43 54 20 0a 20 20 20 20 20  -SUBTRACT .     
0880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0890: 20 20 20 20 20 20 20 46 41 4c 53 45 0a 20 20 20         FALSE.   
08a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
08b0: 20 20 20 20 20 20 20 20 20 46 41 4c 53 45 0a 20           FALSE. 
08c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
08d0: 20 20 20 20 20 20 20 20 20 20 20 30 20 0a 20 20             0 .  
08e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
08f0: 20 20 20 20 20 20 20 20 20 20 30 20 29 29 0a 20            0 )). 
0900: 20 20 20 28 6e 6f 74 20 28 7a 65 72 6f 3f 20 28     (not (zero? (
0910: 63 61 72 20 28 67 69 6d 70 2d 73 65 6c 65 63 74  car (gimp-select
0920: 69 6f 6e 2d 69 73 2d 65 6d 70 74 79 20 69 6d 61  ion-is-empty ima
0930: 67 65 29 29 29 29 20 29 0a 0a 20 20 28 64 65 66  ge)))) )..  (def
0940: 69 6e 65 20 28 70 6c 61 63 65 2d 74 65 78 74 20  ine (place-text 
0950: 6c 61 79 65 72 20 74 65 78 74 20 78 2d 6c 69 73  layer text x-lis
0960: 74 20 79 2d 6c 69 73 74 29 0a 20 20 20 20 28 6c  t y-list).    (l
0970: 65 74 20 28 28 69 6d 61 67 65 20 28 63 61 72 20  et ((image (car 
0980: 28 67 69 6d 70 2d 64 72 61 77 61 62 6c 65 2d 67  (gimp-drawable-g
0990: 65 74 2d 69 6d 61 67 65 20 6c 61 79 65 72 29 29  et-image layer))
09a0: 29 0a 20 20 20 20 20 20 20 20 20 20 28 74 65 78  ).          (tex
09b0: 74 2d 77 69 64 74 68 20 28 63 61 72 20 28 67 69  t-width (car (gi
09c0: 6d 70 2d 74 65 78 74 2d 67 65 74 2d 65 78 74 65  mp-text-get-exte
09d0: 6e 74 73 2d 66 6f 6e 74 6e 61 6d 65 20 74 65 78  nts-fontname tex
09e0: 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  t.              
09f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 32 30 0a               20.
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 20 20 20 20 20 20 20                  
0a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0a50: 20 20 20 20 20 20 20 20 20 20 20 50 49 58 45 4c             PIXEL
0a60: 53 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  S.              
0a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53 61               "Sa
0aa0: 6e 73 20 42 6f 6c 64 22 20 29 29 29 20 29 0a 20  ns Bold" ))) ). 
0ab0: 20 20 20 20 20 28 67 69 6d 70 2d 66 6c 6f 61 74       (gimp-float
0ac0: 69 6e 67 2d 73 65 6c 2d 61 6e 63 68 6f 72 0a 20  ing-sel-anchor. 
0ad0: 20 20 20 20 20 20 20 28 63 61 72 20 28 67 69 6d         (car (gim
0ae0: 70 2d 74 65 78 74 2d 66 6f 6e 74 6e 61 6d 65 20  p-text-fontname 
0af0: 69 6d 61 67 65 20 0a 20 20 20 20 20 20 20 20 20  image .         
0b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b10: 20 20 20 20 20 20 20 20 6c 61 79 65 72 0a 20 20          layer.  
0b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
0b40: 2b 20 28 63 61 72 20 78 2d 6c 69 73 74 29 20 0a  + (car x-list) .
0b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b70: 20 20 20 20 28 2f 20 28 2d 20 28 63 61 64 72 20      (/ (- (cadr 
0b80: 78 2d 6c 69 73 74 29 20 0a 20 20 20 20 20 20 20  x-list) .       
0b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0bb0: 20 20 20 28 63 61 72 20 78 2d 6c 69 73 74 29 20     (car x-list) 
0bc0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
0bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0be0: 20 20 20 20 20 20 20 20 20 32 20 29 0a 20 20 20           2 ).   
0bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c10: 20 28 2d 20 28 2f 20 74 65 78 74 2d 77 69 64 74   (- (/ text-widt
0c20: 68 20 32 29 29 20 29 0a 20 20 20 20 20 20 20 20  h 2)) ).        
0c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c40: 20 20 20 20 20 20 20 20 20 28 2b 20 28 63 61 72           (+ (car
0c50: 20 79 2d 6c 69 73 74 29 20 36 29 0a 20 20 20 20   y-list) 6).    
0c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78               tex
0c80: 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  t.              
0c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ca0: 20 20 20 30 0a 20 20 20 20 20 20 20 20 20 20 20     0.           
0cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0cc0: 20 20 20 20 20 20 54 52 55 45 0a 20 20 20 20 20        TRUE.     
0cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ce0: 20 20 20 20 20 20 20 20 20 20 20 20 32 30 0a 20              20. 
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 20 20 20 20 20 20                  
0d10: 50 49 58 45 4c 53 0a 20 20 20 20 20 20 20 20 20  PIXELS.         
0d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0d30: 20 20 20 20 20 20 20 20 22 53 61 6e 73 20 42 6f          "Sans Bo
0d40: 6c 64 22 20 29 29 29 29 29 0a 0a 20 20 28 64 65  ld" )))))..  (de
0d50: 66 69 6e 65 20 28 63 72 65 61 74 65 2d 74 61 62  fine (create-tab
0d60: 6c 65 2d 69 6d 61 67 65 20 70 61 67 65 2d 6e 75  le-image page-nu
0d70: 6d 29 0a 20 20 20 20 28 6c 65 74 2a 20 28 28 74  m).    (let* ((t
0d80: 61 62 6c 65 2d 69 6d 61 67 65 20 28 63 61 72 20  able-image (car 
0d90: 28 67 69 6d 70 2d 69 6d 61 67 65 2d 6e 65 77 20  (gimp-image-new 
0da0: 31 32 38 30 20 31 30 32 34 20 52 47 42 29 29 29  1280 1024 RGB)))
0db0: 0a 20 20 20 20 20 20 20 20 20 20 20 28 74 61 62  .           (tab
0dc0: 6c 65 2d 6c 61 79 65 72 20 28 63 61 72 20 28 67  le-layer (car (g
0dd0: 69 6d 70 2d 6c 61 79 65 72 2d 6e 65 77 20 74 61  imp-layer-new ta
0de0: 62 6c 65 2d 69 6d 61 67 65 20 31 32 38 30 20 31  ble-image 1280 1
0df0: 30 32 34 20 52 47 42 2d 49 4d 41 47 45 20 22 54  024 RGB-IMAGE "T
0e00: 61 62 6c 65 22 20 31 30 30 20 4e 4f 52 4d 41 4c  able" 100 NORMAL
0e10: 2d 4d 4f 44 45 29 29 29 0a 20 20 20 20 20 20 20  -MODE))).       
0e20: 20 20 20 20 28 62 72 75 73 68 20 28 63 61 72 20      (brush (car 
0e30: 28 67 69 6d 70 2d 62 72 75 73 68 2d 6e 65 77 20  (gimp-brush-new 
0e40: 22 74 65 6d 70 2d 62 72 75 73 68 22 29 29 29 0a  "temp-brush"))).
0e50: 20 20 20 20 20 20 20 20 20 20 20 28 70 61 67 65             (page
0e60: 2d 73 74 72 69 6e 67 20 28 73 74 72 69 6e 67 2d  -string (string-
0e70: 61 70 70 65 6e 64 20 22 50 61 67 65 20 22 0a 20  append "Page ". 
0e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ea0: 20 20 20 20 20 20 28 6e 75 6d 62 65 72 2d 3e 73        (number->s
0eb0: 74 72 69 6e 67 20 70 61 67 65 2d 6e 75 6d 29 20  tring page-num) 
0ec0: 29 29 29 0a 20 20 20 20 20 20 28 67 69 6d 70 2d  ))).      (gimp-
0ed0: 69 6d 61 67 65 2d 75 6e 64 6f 2d 64 69 73 61 62  image-undo-disab
0ee0: 6c 65 20 74 61 62 6c 65 2d 69 6d 61 67 65 29 0a  le table-image).
0ef0: 20 20 20 20 20 20 28 67 69 6d 70 2d 69 6d 61 67        (gimp-imag
0f00: 65 2d 61 64 64 2d 6c 61 79 65 72 20 74 61 62 6c  e-add-layer tabl
0f10: 65 2d 69 6d 61 67 65 20 74 61 62 6c 65 2d 6c 61  e-image table-la
0f20: 79 65 72 20 30 29 0a 20 20 20 20 20 20 28 67 69  yer 0).      (gi
0f30: 6d 70 2d 64 72 61 77 61 62 6c 65 2d 66 69 6c 6c  mp-drawable-fill
0f40: 20 74 61 62 6c 65 2d 6c 61 79 65 72 20 57 48 49   table-layer WHI
0f50: 54 45 2d 46 49 4c 4c 29 0a 20 20 20 20 20 20 28  TE-FILL).      (
0f60: 67 69 6d 70 2d 63 6f 6e 74 65 78 74 2d 70 75 73  gimp-context-pus
0f70: 68 29 0a 20 20 20 20 20 20 28 67 69 6d 70 2d 63  h).      (gimp-c
0f80: 6f 6e 74 65 78 74 2d 73 65 74 2d 66 6f 72 65 67  ontext-set-foreg
0f90: 72 6f 75 6e 64 20 27 28 30 20 30 20 30 29 29 0a  round '(0 0 0)).
0fa0: 20 20 20 20 20 20 0a 20 20 20 20 20 20 28 67 69        .      (gi
0fb0: 6d 70 2d 66 6c 6f 61 74 69 6e 67 2d 73 65 6c 2d  mp-floating-sel-
0fc0: 61 6e 63 68 6f 72 0a 20 20 20 20 20 20 20 20 28  anchor.        (
0fd0: 63 61 72 20 28 67 69 6d 70 2d 74 65 78 74 2d 66  car (gimp-text-f
0fe0: 6f 6e 74 6e 61 6d 65 20 74 61 62 6c 65 2d 69 6d  ontname table-im
0ff0: 61 67 65 20 0a 20 20 20 20 20 20 20 20 20 20 20  age .           
1000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1010: 20 20 20 20 20 20 74 61 62 6c 65 2d 6c 61 79 65        table-laye
1020: 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  r.              
1030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1040: 20 20 20 28 2d 20 28 63 61 72 20 28 67 69 6d 70     (- (car (gimp
1050: 2d 69 6d 61 67 65 2d 77 69 64 74 68 20 74 61 62  -image-width tab
1060: 6c 65 2d 69 6d 61 67 65 29 29 0a 20 20 20 20 20  le-image)).     
1070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
1090: 63 61 72 20 28 67 69 6d 70 2d 74 65 78 74 2d 67  car (gimp-text-g
10a0: 65 74 2d 65 78 74 65 6e 74 73 2d 66 6f 6e 74 6e  et-extents-fontn
10b0: 61 6d 65 20 70 61 67 65 2d 73 74 72 69 6e 67 0a  ame page-string.
10c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1100: 20 20 20 20 20 20 20 20 20 32 34 0a 20 20 20 20           24.    
1110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1150: 20 20 20 20 20 50 49 58 45 4c 53 0a 20 20 20 20       PIXELS.    
1160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a0: 20 20 20 20 20 22 53 61 6e 73 20 42 6f 6c 64 22       "Sans Bold"
11b0: 20 29 29 0a 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 20 20                  
11d0: 20 20 20 20 20 20 20 20 36 35 20 29 0a 20 20 20          65 ).   
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 32 35                25
1200: 0a 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 20 20 20 20 20 20 20                  
1220: 20 20 70 61 67 65 2d 73 74 72 69 6e 67 0a 20 20    page-string.  
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 30                 0
1250: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1270: 20 20 54 52 55 45 0a 20 20 20 20 20 20 20 20 20    TRUE.         
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 32 30 0a 20 20 20 20 20          20.     
12a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b0: 20 20 20 20 20 20 20 20 20 20 20 20 50 49 58 45              PIXE
12c0: 4c 53 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  LS.             
12d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e0: 20 20 20 20 22 53 61 6e 73 20 42 6f 6c 64 22 20      "Sans Bold" 
12f0: 29 29 29 0a 20 20 20 20 20 20 0a 20 20 20 20 20  ))).      .     
1300: 20 28 67 69 6d 70 2d 62 72 75 73 68 2d 73 65 74   (gimp-brush-set
1310: 2d 72 61 64 69 75 73 20 62 72 75 73 68 20 31 29  -radius brush 1)
1320: 0a 20 20 20 20 20 20 28 67 69 6d 70 2d 63 6f 6e  .      (gimp-con
1330: 74 65 78 74 2d 73 65 74 2d 70 61 69 6e 74 2d 6d  text-set-paint-m
1340: 65 74 68 6f 64 20 22 67 69 6d 70 2d 70 61 69 6e  ethod "gimp-pain
1350: 74 62 72 75 73 68 22 29 0a 20 20 20 20 20 20 28  tbrush").      (
1360: 67 69 6d 70 2d 63 6f 6e 74 65 78 74 2d 73 65 74  gimp-context-set
1370: 2d 62 72 75 73 68 20 62 72 75 73 68 29 0a 20 20  -brush brush).  
1380: 20 20 20 20 28 67 69 6d 70 2d 63 6f 6e 74 65 78      (gimp-contex
1390: 74 2d 73 65 74 2d 70 61 69 6e 74 2d 6d 6f 64 65  t-set-paint-mode
13a0: 20 4e 4f 52 4d 41 4c 2d 4d 4f 44 45 29 0a 20 20   NORMAL-MODE).  
13b0: 20 20 20 20 28 67 69 6d 70 2d 70 72 6f 67 72 65      (gimp-progre
13c0: 73 73 2d 70 75 6c 73 65 29 0a 20 20 20 20 20 20  ss-pulse).      
13d0: 28 67 69 6d 70 2d 70 72 6f 67 72 65 73 73 2d 73  (gimp-progress-s
13e0: 65 74 2d 74 65 78 74 20 28 73 74 72 69 6e 67 2d  et-text (string-
13f0: 61 70 70 65 6e 64 20 22 43 72 65 61 74 69 6e 67  append "Creating
1400: 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   ".             
1410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1430: 70 61 67 65 2d 73 74 72 69 6e 67 0a 20 20 20 20  page-string.    
1440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1460: 20 20 20 20 20 20 20 20 20 22 2e 2e 2e 22 20 29           "..." )
1470: 29 0a 20 20 20 20 20 20 28 6c 65 74 20 6c 6f 6f  ).      (let loo
1480: 70 20 28 28 76 2d 6c 69 6e 65 73 20 76 2d 67 72  p ((v-lines v-gr
1490: 69 64 29 29 20 3b 20 70 61 69 6e 74 20 68 6f 72  id)) ; paint hor
14a0: 69 7a 6f 6e 74 61 6c 20 6c 69 6e 65 73 0a 20 20  izontal lines.  
14b0: 20 20 20 20 20 20 28 67 69 6d 70 2d 70 72 6f 67        (gimp-prog
14c0: 72 65 73 73 2d 70 75 6c 73 65 29 0a 20 20 20 20  ress-pulse).    
14d0: 20 20 20 20 28 75 6e 6c 65 73 73 20 28 6e 75 6c      (unless (nul
14e0: 6c 3f 20 76 2d 6c 69 6e 65 73 29 0a 20 20 20 20  l? v-lines).    
14f0: 20 20 20 20 20 20 28 67 69 6d 70 2d 70 61 69 6e        (gimp-pain
1500: 74 62 72 75 73 68 20 74 61 62 6c 65 2d 6c 61 79  tbrush table-lay
1510: 65 72 20 30 20 34 0a 20 20 20 20 20 20 20 20 20  er 0 4.         
1520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1530: 20 20 28 76 65 63 74 6f 72 20 28 63 61 72 20 76    (vector (car v
1540: 2d 6c 69 6e 65 73 29 20 28 63 61 72 20 68 2d 67  -lines) (car h-g
1550: 72 69 64 29 20 28 63 61 72 20 76 2d 6c 69 6e 65  rid) (car v-line
1560: 73 29 20 28 63 61 72 20 28 6c 61 73 74 20 68 2d  s) (car (last h-
1570: 67 72 69 64 29 29 29 0a 20 20 20 20 20 20 20 20  grid))).        
1580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1590: 20 20 20 50 41 49 4e 54 2d 43 4f 4e 53 54 41 4e     PAINT-CONSTAN
15a0: 54 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  T.              
15b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 30 20 29               0 )
15c0: 0a 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 70  .          (loop
15d0: 20 28 63 64 72 20 76 2d 6c 69 6e 65 73 29 29 20   (cdr v-lines)) 
15e0: 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 6c 6f  )).      (let lo
15f0: 6f 70 20 28 28 68 2d 6c 69 6e 65 73 20 68 2d 67  op ((h-lines h-g
1600: 72 69 64 29 29 20 3b 20 70 61 69 6e 74 20 76 65  rid)) ; paint ve
1610: 72 74 69 63 61 6c 20 6c 69 6e 65 73 0a 20 20 20  rtical lines.   
1620: 20 20 20 20 20 28 67 69 6d 70 2d 70 72 6f 67 72       (gimp-progr
1630: 65 73 73 2d 70 75 6c 73 65 29 0a 20 20 20 20 20  ess-pulse).     
1640: 20 20 20 28 75 6e 6c 65 73 73 20 28 6e 75 6c 6c     (unless (null
1650: 3f 20 68 2d 6c 69 6e 65 73 29 0a 20 20 20 20 20  ? h-lines).     
1660: 20 20 20 20 20 28 67 69 6d 70 2d 70 61 69 6e 74       (gimp-paint
1670: 62 72 75 73 68 20 74 61 62 6c 65 2d 6c 61 79 65  brush table-laye
1680: 72 20 30 20 34 0a 20 20 20 20 20 20 20 20 20 20  r 0 4.          
1690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16a0: 20 28 76 65 63 74 6f 72 20 28 63 61 72 20 76 2d   (vector (car v-
16b0: 67 72 69 64 29 20 28 63 61 72 20 68 2d 6c 69 6e  grid) (car h-lin
16c0: 65 73 29 20 28 63 61 72 20 28 6c 61 73 74 20 76  es) (car (last v
16d0: 2d 67 72 69 64 29 29 20 28 63 61 72 20 68 2d 6c  -grid)) (car h-l
16e0: 69 6e 65 73 29 29 0a 20 20 20 20 20 20 20 20 20  ines)).         
16f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1700: 20 20 50 41 49 4e 54 2d 43 4f 4e 53 54 41 4e 54    PAINT-CONSTANT
1710: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1720: 20 20 20 20 20 20 20 20 20 20 20 20 30 20 29 0a              0 ).
1730: 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 70 20            (loop 
1740: 28 63 64 72 20 68 2d 6c 69 6e 65 73 29 29 20 29  (cdr h-lines)) )
1750: 29 0a 20 20 20 20 20 20 28 6c 65 74 20 6c 6f 6f  ).      (let loo
1760: 70 2d 63 6f 6c 73 20 28 28 78 73 20 28 63 64 64  p-cols ((xs (cdd
1770: 64 72 20 76 2d 67 72 69 64 29 29 29 20 3b 20 73  dr v-grid))) ; s
1780: 65 6c 65 63 74 20 67 72 61 79 65 64 20 63 65 6c  elect grayed cel
1790: 6c 73 0a 20 20 20 20 20 20 20 20 28 67 69 6d 70  ls.        (gimp
17a0: 2d 70 72 6f 67 72 65 73 73 2d 70 75 6c 73 65 29  -progress-pulse)
17b0: 0a 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73  .        (unless
17c0: 20 28 6e 75 6c 6c 3f 20 78 73 29 0a 20 20 20 20   (null? xs).    
17d0: 20 20 20 20 20 20 28 6c 65 74 20 6c 6f 6f 70 2d        (let loop-
17e0: 72 6f 77 73 20 28 28 79 73 20 28 62 75 74 6c 61  rows ((ys (butla
17f0: 73 74 20 68 2d 67 72 69 64 29 29 20 29 0a 20 20  st h-grid)) ).  
1800: 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6e            (if (n
1810: 75 6c 6c 3f 20 79 73 29 0a 20 20 20 20 20 20 20  ull? ys).       
1820: 20 20 20 20 20 20 20 28 6c 6f 6f 70 2d 63 6f 6c         (loop-col
1830: 73 20 28 63 64 64 72 20 78 73 29 29 0a 20 20 20  s (cddr xs)).   
1840: 20 20 20 20 20 20 20 20 20 20 20 28 62 65 67 69             (begi
1850: 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  n.              
1860: 20 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 73 65    (gimp-image-se
1870: 6c 65 63 74 2d 63 6f 6e 74 69 67 75 6f 75 73 2d  lect-contiguous-
1880: 63 6f 6c 6f 72 20 74 61 62 6c 65 2d 69 6d 61 67  color table-imag
1890: 65 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e .             
18a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18c0: 20 20 20 20 20 20 20 43 48 41 4e 4e 45 4c 2d 4f         CHANNEL-O
18d0: 50 2d 41 44 44 0a 20 20 20 20 20 20 20 20 20 20  P-ADD.          
18e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1900: 20 20 20 20 20 20 20 20 20 20 74 61 62 6c 65 2d            table-
1910: 6c 61 79 65 72 0a 20 20 20 20 20 20 20 20 20 20  layer.          
1920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1940: 20 20 20 20 20 20 20 20 20 20 28 2b 20 28 63 61            (+ (ca
1950: 72 20 78 73 29 20 32 29 0a 20 20 20 20 20 20 20  r xs) 2).       
1960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1980: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2b 20               (+ 
1990: 28 63 61 72 20 79 73 29 20 32 29 20 29 0a 20 20  (car ys) 2) ).  
19a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c                (l
19b0: 6f 6f 70 2d 72 6f 77 73 20 28 63 64 72 20 79 73  oop-rows (cdr ys
19c0: 29 29 20 29 29 29 29 29 0a 20 20 20 20 20 20 28  )) ))))).      (
19d0: 67 69 6d 70 2d 63 6f 6e 74 65 78 74 2d 73 65 74  gimp-context-set
19e0: 2d 66 6f 72 65 67 72 6f 75 6e 64 20 27 28 32 32  -foreground '(22
19f0: 38 20 32 32 38 20 32 32 38 29 29 0a 20 20 20 20  8 228 228)).    
1a00: 20 20 28 67 69 6d 70 2d 65 64 69 74 2d 66 69 6c    (gimp-edit-fil
1a10: 6c 20 74 61 62 6c 65 2d 6c 61 79 65 72 20 46 4f  l table-layer FO
1a20: 52 45 47 52 4f 55 4e 44 2d 46 49 4c 4c 29 0a 20  REGROUND-FILL). 
1a30: 20 20 20 20 20 28 67 69 6d 70 2d 73 65 6c 65 63       (gimp-selec
1a40: 74 69 6f 6e 2d 6e 6f 6e 65 20 74 61 62 6c 65 2d  tion-none table-
1a50: 69 6d 61 67 65 29 0a 20 20 20 20 20 20 28 67 69  image).      (gi
1a60: 6d 70 2d 62 72 75 73 68 2d 64 65 6c 65 74 65 20  mp-brush-delete 
1a70: 62 72 75 73 68 29 0a 20 20 20 20 20 20 20 0a 20  brush).       . 
1a80: 20 20 20 20 20 28 67 69 6d 70 2d 63 6f 6e 74 65       (gimp-conte
1a90: 78 74 2d 73 65 74 2d 66 6f 72 65 67 72 6f 75 6e  xt-set-foregroun
1aa0: 64 20 27 28 30 20 30 20 30 29 29 0a 20 20 20 20  d '(0 0 0)).    
1ab0: 20 20 28 70 6c 61 63 65 2d 74 65 78 74 20 74 61    (place-text ta
1ac0: 62 6c 65 2d 6c 61 79 65 72 20 22 52 4f 57 22 20  ble-layer "ROW" 
1ad0: 76 2d 67 72 69 64 20 68 2d 67 72 69 64 29 0a 20  v-grid h-grid). 
1ae0: 20 20 20 20 20 28 70 6c 61 63 65 2d 74 65 78 74       (place-text
1af0: 20 74 61 62 6c 65 2d 6c 61 79 65 72 20 22 52 45   table-layer "RE
1b00: 41 44 22 20 28 63 64 72 20 76 2d 67 72 69 64 29  AD" (cdr v-grid)
1b10: 20 68 2d 67 72 69 64 29 0a 20 20 20 20 20 20 28   h-grid).      (
1b20: 6c 65 74 20 6c 6f 6f 70 20 28 28 78 73 20 28 63  let loop ((xs (c
1b30: 64 64 72 20 76 2d 67 72 69 64 29 29 0a 20 20 20  ddr v-grid)).   
1b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74                (t
1b50: 65 78 74 3f 20 23 66 29 20 29 0a 20 20 20 20 20  ext? #f) ).     
1b60: 20 20 20 28 67 69 6d 70 2d 70 72 6f 67 72 65 73     (gimp-progres
1b70: 73 2d 70 75 6c 73 65 29 0a 20 20 20 20 20 20 20  s-pulse).       
1b80: 20 28 75 6e 6c 65 73 73 20 28 6e 75 6c 6c 3f 20   (unless (null? 
1b90: 28 63 64 72 20 78 73 29 29 0a 20 20 20 20 20 20  (cdr xs)).      
1ba0: 20 20 20 20 28 70 6c 61 63 65 2d 74 65 78 74 20      (place-text 
1bb0: 74 61 62 6c 65 2d 6c 61 79 65 72 20 28 69 66 20  table-layer (if 
1bc0: 74 65 78 74 3f 20 22 53 22 20 22 4f 22 29 20 78  text? "S" "O") x
1bd0: 73 20 68 2d 67 72 69 64 29 0a 20 20 20 20 20 20  s h-grid).      
1be0: 20 20 20 20 28 6c 6f 6f 70 20 28 63 64 72 20 78      (loop (cdr x
1bf0: 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  s).             
1c00: 20 20 20 28 6e 6f 74 20 74 65 78 74 3f 29 20 29     (not text?) )
1c10: 29 29 0a 20 20 20 20 20 20 28 67 69 6d 70 2d 63  )).      (gimp-c
1c20: 6f 6e 74 65 78 74 2d 70 6f 70 29 0a 20 20 20 20  ontext-pop).    
1c30: 20 20 74 61 62 6c 65 2d 69 6d 61 67 65 0a 20 20    table-image.  
1c40: 20 20 20 20 29 0a 20 20 20 20 29 0a 20 20 20 20      ).    ).    
1c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20               .  
1c70: 3b 20 4d 41 49 4e 20 70 72 6f 63 65 73 73 69 6e  ; MAIN processin
1c80: 67 20 73 74 61 72 74 73 20 68 65 72 65 0a 20 20  g starts here.  
1c90: 28 67 69 6d 70 2d 63 6f 6e 74 65 78 74 2d 70 75  (gimp-context-pu
1ca0: 73 68 29 0a 20 20 28 6c 65 74 2a 20 28 28 77 69  sh).  (let* ((wi
1cb0: 64 74 68 20 28 63 61 72 20 28 67 69 6d 70 2d 64  dth (car (gimp-d
1cc0: 72 61 77 61 62 6c 65 2d 77 69 64 74 68 20 6f 72  rawable-width or
1cd0: 69 67 2d 64 72 61 77 61 62 6c 65 29 29 29 0a 20  ig-drawable))). 
1ce0: 20 20 20 20 20 20 20 20 28 68 65 69 67 68 74 20          (height 
1cf0: 28 63 61 72 20 28 67 69 6d 70 2d 64 72 61 77 61  (car (gimp-drawa
1d00: 62 6c 65 2d 68 65 69 67 68 74 20 6f 72 69 67 2d  ble-height orig-
1d10: 64 72 61 77 61 62 6c 65 29 29 29 0a 20 20 20 20  drawable))).    
1d20: 20 20 20 20 20 28 62 75 66 66 65 72 20 28 63 61       (buffer (ca
1d30: 72 20 28 67 69 6d 70 2d 65 64 69 74 2d 6e 61 6d  r (gimp-edit-nam
1d40: 65 64 2d 63 6f 70 79 20 6f 72 69 67 2d 64 72 61  ed-copy orig-dra
1d50: 77 61 62 6c 65 20 22 42 47 22 29 29 29 0a 20 20  wable "BG"))).  
1d60: 20 20 20 20 20 20 20 28 69 6d 61 67 65 20 28 63         (image (c
1d70: 61 72 20 28 67 69 6d 70 2d 65 64 69 74 2d 6e 61  ar (gimp-edit-na
1d80: 6d 65 64 2d 70 61 73 74 65 2d 61 73 2d 6e 65 77  med-paste-as-new
1d90: 20 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20   buffer))).     
1da0: 20 20 20 20 28 6c 61 79 65 72 20 20 28 63 61 72      (layer  (car
1db0: 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 66 6c 61   (gimp-image-fla
1dc0: 74 74 65 6e 20 69 6d 61 67 65 29 29 29 20 29 0a  tten image))) ).
1dd0: 20 20 20 20 28 67 69 6d 70 2d 62 75 66 66 65 72      (gimp-buffer
1de0: 2d 64 65 6c 65 74 65 20 62 75 66 66 65 72 29 0a  -delete buffer).
1df0: 20 20 20 20 28 75 6e 6c 65 73 73 20 28 7a 65 72      (unless (zer
1e00: 6f 3f 20 28 63 61 72 20 28 67 69 6d 70 2d 69 6d  o? (car (gimp-im
1e10: 61 67 65 2d 62 61 73 65 2d 74 79 70 65 20 69 6d  age-base-type im
1e20: 61 67 65 29 29 29 0a 20 20 20 20 20 20 28 67 69  age))).      (gi
1e30: 6d 70 2d 69 6d 61 67 65 2d 63 6f 6e 76 65 72 74  mp-image-convert
1e40: 2d 72 67 62 20 69 6d 61 67 65 29 20 29 0a 20 20  -rgb image) ).  
1e50: 20 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 63 6f    (gimp-image-co
1e60: 6e 76 65 72 74 2d 69 6e 64 65 78 65 64 20 69 6d  nvert-indexed im
1e70: 61 67 65 20 0a 20 20 20 20 20 20 20 20 20 20 20  age .           
1e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e90: 20 20 20 20 20 4e 4f 2d 44 49 54 48 45 52 0a 20       NO-DITHER. 
1ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
1ec0: 41 4b 45 2d 50 41 4c 45 54 54 45 0a 20 20 20 20  AKE-PALETTE.    
1ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ee0: 20 20 20 20 20 20 20 20 20 20 20 20 33 0a 20 20              3.  
1ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 41                FA
1f10: 4c 53 45 0a 20 20 20 20 20 20 20 20 20 20 20 20  LSE.            
1f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f30: 20 20 20 20 46 41 4c 53 45 0a 20 20 20 20 20 20      FALSE.      
1f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f50: 20 20 20 20 20 20 20 20 20 20 22 22 29 0a 20 20            "").  
1f60: 20 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 63 6f    (gimp-image-co
1f70: 6e 76 65 72 74 2d 72 67 62 20 69 6d 61 67 65 29  nvert-rgb image)
1f80: 0a 20 20 20 20 28 70 6c 75 67 2d 69 6e 2d 61 75  .    (plug-in-au
1f90: 74 6f 63 72 6f 70 20 52 55 4e 2d 4e 4f 4e 49 4e  tocrop RUN-NONIN
1fa0: 54 45 52 41 43 54 49 56 45 20 69 6d 61 67 65 20  TERACTIVE image 
1fb0: 6c 61 79 65 72 29 0a 20 20 20 20 28 73 65 74 21  layer).    (set!
1fc0: 20 77 69 64 74 68 20 28 63 61 72 20 28 67 69 6d   width (car (gim
1fd0: 70 2d 69 6d 61 67 65 2d 77 69 64 74 68 20 69 6d  p-image-width im
1fe0: 61 67 65 29 29 29 0a 20 20 20 20 28 73 65 74 21  age))).    (set!
1ff0: 20 68 65 69 67 68 74 20 28 63 61 72 20 28 67 69   height (car (gi
2000: 6d 70 2d 69 6d 61 67 65 2d 68 65 69 67 68 74 20  mp-image-height 
2010: 69 6d 61 67 65 29 29 29 0a 20 20 20 20 28 67 69  image))).    (gi
2020: 6d 70 2d 70 72 6f 67 72 65 73 73 2d 70 75 6c 73  mp-progress-puls
2030: 65 29 0a 20 20 20 20 28 67 69 6d 70 2d 70 72 6f  e).    (gimp-pro
2040: 67 72 65 73 73 2d 73 65 74 2d 74 65 78 74 20 22  gress-set-text "
2050: 53 63 61 6e 6e 69 6e 67 2e 2e 2e 22 29 0a 20 20  Scanning...").  
2060: 20 20 28 6c 65 74 20 28 28 72 6f 77 73 20 28 6c    (let ((rows (l
2070: 65 74 20 6c 6f 6f 70 20 28 28 79 20 30 29 0a 20  et loop ((y 0). 
2080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2090: 20 20 20 20 20 20 20 20 20 20 28 72 6f 77 73 20            (rows 
20a0: 27 28 29 29 20 29 0a 20 20 20 20 20 20 20 20 20  '()) ).         
20b0: 20 20 20 20 20 20 20 20 20 28 67 69 6d 70 2d 70           (gimp-p
20c0: 72 6f 67 72 65 73 73 2d 70 75 6c 73 65 29 0a 20  rogress-pulse). 
20d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20e0: 20 28 77 68 69 6c 65 20 28 61 6e 64 20 28 3c 20   (while (and (< 
20f0: 79 20 68 65 69 67 68 74 29 20 28 72 6f 77 2d 73  y height) (row-s
2100: 6f 6c 69 64 3f 20 69 6d 61 67 65 20 6c 61 79 65  olid? image laye
2110: 72 20 79 29 20 29 0a 20 20 20 20 20 20 20 20 20  r y) ).         
2120: 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 21             (set!
2130: 20 79 20 28 73 75 63 63 20 79 29 29 20 29 0a 20   y (succ y)) ). 
2140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2150: 20 28 6c 65 74 20 28 28 73 74 61 72 74 2d 72 6f   (let ((start-ro
2160: 77 20 79 29 29 0a 20 20 20 20 20 20 20 20 20 20  w y)).          
2170: 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65            (while
2180: 20 28 61 6e 64 20 28 3c 20 79 20 68 65 69 67 68   (and (< y heigh
2190: 74 29 20 28 6e 6f 74 20 28 72 6f 77 2d 73 6f 6c  t) (not (row-sol
21a0: 69 64 3f 20 69 6d 61 67 65 20 6c 61 79 65 72 20  id? image layer 
21b0: 79 29 29 20 29 0a 20 20 20 20 20 20 20 20 20 20  y)) ).          
21c0: 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74              (set
21d0: 21 20 79 20 28 73 75 63 63 20 79 29 29 20 29 0a  ! y (succ y)) ).
21e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21f0: 20 20 20 20 28 69 66 20 28 3d 20 73 74 61 72 74      (if (= start
2200: 2d 72 6f 77 20 79 29 0a 20 20 20 20 20 20 20 20  -row y).        
2210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72                (r
2220: 65 76 65 72 73 65 20 72 6f 77 73 29 0a 20 20 20  everse rows).   
2230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2240: 20 20 20 28 6c 6f 6f 70 20 28 73 75 63 63 20 79     (loop (succ y
2250: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
2260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63                (c
2270: 6f 6e 73 20 28 63 6f 6e 73 20 73 74 61 72 74 2d  ons (cons start-
2280: 72 6f 77 20 79 29 20 72 6f 77 73 29 20 29 29 29  row y) rows) )))
2290: 29 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28  ))).      (let (
22a0: 28 63 6f 6c 73 20 28 6c 65 74 20 6c 6f 6f 70 20  (cols (let loop 
22b0: 28 28 78 20 30 29 0a 20 20 20 20 20 20 20 20 20  ((x 0).         
22c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d0: 20 20 20 20 28 63 6f 6c 73 20 27 28 29 29 20 29      (cols '()) )
22e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22f0: 20 20 20 20 20 28 67 69 6d 70 2d 70 72 6f 67 72       (gimp-progr
2300: 65 73 73 2d 70 75 6c 73 65 29 0a 20 20 20 20 20  ess-pulse).     
2310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
2320: 77 68 69 6c 65 20 28 61 6e 64 20 28 3c 20 78 20  while (and (< x 
2330: 77 69 64 74 68 29 20 28 63 6f 6c 2d 73 6f 6c 69  width) (col-soli
2340: 64 3f 20 69 6d 61 67 65 20 6c 61 79 65 72 20 78  d? image layer x
2350: 29 20 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) ).            
2360: 20 20 20 20 20 20 20 20 20 20 28 73 65 74 21 20            (set! 
2370: 78 20 28 73 75 63 63 20 78 29 29 20 29 0a 20 20  x (succ x)) ).  
2380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2390: 20 20 28 6c 65 74 20 28 28 73 74 61 72 74 2d 63    (let ((start-c
23a0: 6f 6c 20 78 29 29 0a 20 20 20 20 20 20 20 20 20  ol x)).         
23b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68               (wh
23c0: 69 6c 65 20 28 61 6e 64 20 28 3c 20 78 20 77 69  ile (and (< x wi
23d0: 64 74 68 29 20 28 6e 6f 74 20 28 63 6f 6c 2d 73  dth) (not (col-s
23e0: 6f 6c 69 64 3f 20 69 6d 61 67 65 20 6c 61 79 65  olid? image laye
23f0: 72 20 78 29 29 20 29 0a 20 20 20 20 20 20 20 20  r x)) ).        
2400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2410: 28 73 65 74 21 20 78 20 28 73 75 63 63 20 78 29  (set! x (succ x)
2420: 29 20 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) ).            
2430: 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 3d            (if (=
2440: 20 73 74 61 72 74 2d 63 6f 6c 20 78 29 0a 20 20   start-col x).  
2450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2460: 20 20 20 20 20 20 28 72 65 76 65 72 73 65 20 63        (reverse c
2470: 6f 6c 73 29 0a 20 20 20 20 20 20 20 20 20 20 20  ols).           
2480: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f               (lo
2490: 6f 70 20 28 73 75 63 63 20 78 29 0a 20 20 20 20  op (succ x).    
24a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b0: 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20            (cons 
24c0: 28 63 6f 6e 73 20 73 74 61 72 74 2d 63 6f 6c 20  (cons start-col 
24d0: 78 29 20 63 6f 6c 73 29 20 29 29 29 29 29 29 0a  x) cols) )))))).
24e0: 20 20 20 20 20 20 20 20 28 73 65 74 21 20 72 6f          (set! ro
24f0: 77 73 20 28 6d 61 70 20 28 6c 61 6d 62 64 61 20  ws (map (lambda 
2500: 28 78 29 20 28 2f 20 28 2b 20 28 63 61 72 20 78  (x) (/ (+ (car x
2510: 29 20 28 63 64 72 20 78 29 29 20 32 29 29 20 72  ) (cdr x)) 2)) r
2520: 6f 77 73 29 29 0a 20 20 20 20 20 20 20 20 28 73  ows)).        (s
2530: 65 74 21 20 63 6f 6c 73 20 28 6d 61 70 20 28 6c  et! cols (map (l
2540: 61 6d 62 64 61 20 28 78 29 20 28 2f 20 28 2b 20  ambda (x) (/ (+ 
2550: 28 63 61 72 20 78 29 20 28 63 64 72 20 78 29 29  (car x) (cdr x))
2560: 20 32 29 29 20 63 6f 6c 73 29 29 0a 20 20 20 20   2)) cols)).    
2570: 20 20 20 20 28 67 69 6d 70 2d 73 65 6c 65 63 74      (gimp-select
2580: 69 6f 6e 2d 6e 6f 6e 65 20 69 6d 61 67 65 29 0a  ion-none image).
2590: 20 20 20 20 20 20 20 20 28 67 69 6d 70 2d 74 68          (gimp-th
25a0: 72 65 73 68 6f 6c 64 20 6c 61 79 65 72 20 31 32  reshold layer 12
25b0: 37 20 32 35 35 29 0a 20 20 20 20 20 20 20 20 28  7 255).        (
25c0: 67 69 6d 70 2d 69 6d 61 67 65 2d 63 6f 6e 76 65  gimp-image-conve
25d0: 72 74 2d 67 72 61 79 73 63 61 6c 65 20 69 6d 61  rt-grayscale ima
25e0: 67 65 29 0a 20 20 20 20 20 20 20 20 28 73 65 74  ge).        (set
25f0: 21 20 72 6f 77 73 0a 20 20 20 20 20 20 20 20 20  ! rows.         
2600: 20 20 20 28 6c 65 74 20 6c 6f 6f 70 2d 72 6f 77     (let loop-row
2610: 73 20 28 28 72 6f 77 73 20 72 6f 77 73 29 0a 20  s ((rows rows). 
2620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2630: 20 20 20 20 20 20 20 20 20 20 20 28 72 6f 77 2d             (row-
2640: 72 65 73 75 6c 74 20 27 28 29 29 20 29 0a 20 20  result '()) ).  
2650: 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20              (if 
2660: 28 6e 75 6c 6c 3f 20 72 6f 77 73 29 0a 20 20 20  (null? rows).   
2670: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65               (re
2680: 76 65 72 73 65 20 72 6f 77 2d 72 65 73 75 6c 74  verse row-result
2690: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
26a0: 20 20 28 6c 65 74 20 28 28 72 6f 77 20 28 6d 61    (let ((row (ma
26b0: 70 20 28 6c 61 6d 62 64 61 20 28 78 29 20 0a 20  p (lambda (x) . 
26c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26e0: 20 28 7a 65 72 6f 3f 20 28 76 65 63 74 6f 72 2d   (zero? (vector-
26f0: 72 65 66 20 28 63 61 64 72 20 28 67 69 6d 70 2d  ref (cadr (gimp-
2700: 64 72 61 77 61 62 6c 65 2d 67 65 74 2d 70 69 78  drawable-get-pix
2710: 65 6c 20 6c 61 79 65 72 20 78 20 28 63 61 72 20  el layer x (car 
2720: 72 6f 77 73 29 29 29 20 30 29 29 20 29 20 0a 20  rows))) 0)) ) . 
2730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
2750: 6f 6c 73 29 20 29 29 0a 20 20 20 20 20 20 20 20  ols) )).        
2760: 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 72            (let r
2770: 6c 65 20 28 28 63 6f 6c 73 20 72 6f 77 29 0a 20  le ((cols row). 
2780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2790: 20 20 20 20 20 20 20 20 20 20 20 28 72 65 73 75             (resu
27a0: 6c 74 20 27 28 29 29 20 29 0a 20 20 20 20 20 20  lt '()) ).      
27b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c                (l
27c0: 65 74 20 28 28 72 65 73 74 20 28 6d 65 6d 62 65  et ((rest (membe
27d0: 72 20 28 6e 6f 74 20 28 63 61 72 20 63 6f 6c 73  r (not (car cols
27e0: 29 29 20 63 6f 6c 73 29 29 29 0a 20 20 20 20 20  )) cols))).     
27f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2800: 20 28 69 66 20 72 65 73 74 0a 20 20 20 20 20 20   (if rest.      
2810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2820: 20 20 28 72 6c 65 20 72 65 73 74 0a 20 20 20 20    (rle rest.    
2830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2840: 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 28           (cons (
2850: 63 6f 6e 73 20 28 63 61 72 20 63 6f 6c 73 29 20  cons (car cols) 
2860: 28 2d 20 28 6c 65 6e 67 74 68 20 63 6f 6c 73 29  (- (length cols)
2870: 20 28 6c 65 6e 67 74 68 20 72 65 73 74 29 29 29   (length rest)))
2880: 20 72 65 73 75 6c 74 29 20 29 0a 20 20 20 20 20   result) ).     
2890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28a0: 20 20 20 28 6c 6f 6f 70 2d 72 6f 77 73 20 28 63     (loop-rows (c
28b0: 64 72 20 72 6f 77 73 29 0a 20 20 20 20 20 20 20  dr rows).       
28c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28d0: 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e              (con
28e0: 73 20 28 63 6f 6e 73 20 28 63 6f 6e 73 20 28 63  s (cons (cons (c
28f0: 61 72 20 63 6f 6c 73 29 20 28 6c 65 6e 67 74 68  ar cols) (length
2900: 20 63 6f 6c 73 29 29 20 72 65 73 75 6c 74 29 20   cols)) result) 
2910: 72 6f 77 2d 72 65 73 75 6c 74 29 20 29 29 29 29  row-result) ))))
2920: 29 29 29 29 0a 20 20 20 20 20 20 20 20 3b 20 4f  )))).        ; O
2930: 75 72 20 74 61 62 6c 65 73 20 6e 65 65 64 20 74  ur tables need t
2940: 6f 20 62 65 20 66 69 6c 6c 65 64 20 66 72 6f 6d  o be filled from
2950: 20 62 6f 74 74 6f 6d 20 6f 66 20 74 68 65 20 73   bottom of the s
2960: 63 61 6e 6e 65 64 20 69 6d 61 67 65 20 74 6f 20  canned image to 
2970: 69 74 73 20 74 6f 70 0a 20 20 20 20 20 20 20 20  its top.        
2980: 28 73 65 74 21 20 72 6f 77 73 20 28 72 65 76 65  (set! rows (reve
2990: 72 73 65 20 72 6f 77 73 29 29 0a 20 20 20 20 20  rse rows)).     
29a0: 20 20 20 3b 20 4e 6f 77 20 77 65 20 6e 65 65 64     ; Now we need
29b0: 20 74 6f 20 72 65 76 65 72 73 65 20 64 69 72 65   to reverse dire
29c0: 63 74 69 6f 6e 20 66 6f 72 20 65 76 65 72 79 20  ction for every 
29d0: 6f 74 68 65 72 20 72 6f 77 0a 20 20 20 20 20 20  other row.      
29e0: 20 20 28 73 65 74 21 20 72 6f 77 73 20 0a 20 20    (set! rows .  
29f0: 20 20 20 20 20 20 20 20 28 6c 65 74 20 6c 6f 6f          (let loo
2a00: 70 20 28 28 72 6f 77 73 20 72 6f 77 73 29 0a 20  p ((rows rows). 
2a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a20: 20 20 20 20 28 72 65 73 75 6c 74 20 27 28 29 29      (result '())
2a30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a40: 20 20 20 20 20 20 28 72 76 73 3f 20 23 66 29 20        (rvs? #f) 
2a50: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69  ).            (i
2a60: 66 20 28 6e 75 6c 6c 3f 20 72 6f 77 73 29 0a 20  f (null? rows). 
2a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65               (re
2a80: 76 65 72 73 65 20 72 65 73 75 6c 74 29 0a 20 20  verse result).  
2a90: 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f              (loo
2aa0: 70 20 28 63 64 72 20 72 6f 77 73 29 0a 20 20 20  p (cdr rows).   
2ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ac0: 20 28 63 6f 6e 73 20 28 69 66 20 72 76 73 3f 20   (cons (if rvs? 
2ad0: 28 72 65 76 65 72 73 65 20 28 63 61 72 20 72 6f  (reverse (car ro
2ae0: 77 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  ws)).           
2af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b00: 20 20 20 20 20 20 20 20 28 63 61 72 20 72 6f 77          (car row
2b10: 73 29 20 29 0a 20 20 20 20 20 20 20 20 20 20 20  s) ).           
2b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2b30: 65 73 75 6c 74 20 29 0a 20 20 20 20 20 20 20 20  esult ).        
2b40: 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74              (not
2b50: 20 72 76 73 3f 29 20 29 29 29 29 0a 20 20 20 20   rvs?) )))).    
2b60: 20 20 20 20 3b 20 41 74 20 74 68 69 73 20 70 6f      ; At this po
2b70: 69 6e 74 20 77 65 20 68 61 76 65 20 61 20 6c 69  int we have a li
2b80: 73 74 20 6f 66 20 72 6f 77 20 69 6e 66 6f 72 6d  st of row inform
2b90: 61 74 69 6f 6e 2c 20 72 65 61 64 79 20 74 6f 20  ation, ready to 
2ba0: 63 72 65 61 74 65 20 6f 75 72 20 74 61 62 6c 65  create our table
2bb0: 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 28 67       .        (g
2bc0: 69 6d 70 2d 69 6d 61 67 65 2d 64 65 6c 65 74 65  imp-image-delete
2bd0: 20 69 6d 61 67 65 29 0a 20 20 20 20 20 20 20 20   image).        
2be0: 3b 20 4e 65 78 74 20 77 65 20 6e 65 65 64 20 74  ; Next we need t
2bf0: 6f 20 65 6e 73 75 72 65 20 74 68 61 74 20 65 61  o ensure that ea
2c00: 63 68 20 72 6f 77 20 73 74 61 72 74 73 20 77 69  ch row starts wi
2c10: 74 68 20 61 6e 20 4f 50 45 4e 20 72 75 6e 20 28  th an OPEN run (
2c20: 70 6f 73 73 69 62 6c 79 20 6f 66 20 7a 65 72 6f  possibly of zero
2c30: 20 6c 65 6e 67 74 68 29 0a 20 20 20 20 20 20 20   length).       
2c40: 20 28 73 65 74 21 20 72 6f 77 73 20 0a 20 20 20   (set! rows .   
2c50: 20 20 20 20 20 20 20 28 6c 65 74 20 6c 6f 6f 70         (let loop
2c60: 20 28 28 72 6f 77 73 20 72 6f 77 73 29 0a 20 20   ((rows rows).  
2c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c80: 20 20 20 28 72 65 73 75 6c 74 20 27 28 29 29 20     (result '()) 
2c90: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69  ).            (i
2ca0: 66 20 28 6e 75 6c 6c 3f 20 72 6f 77 73 29 0a 20  f (null? rows). 
2cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65               (re
2cc0: 76 65 72 73 65 20 72 65 73 75 6c 74 29 0a 20 20  verse result).  
2cd0: 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20              (if 
2ce0: 28 63 61 61 61 72 20 72 6f 77 73 29 0a 20 20 20  (caaar rows).   
2cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f               (lo
2d00: 6f 70 20 28 63 64 72 20 72 6f 77 73 29 0a 20 20  op (cdr rows).  
2d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d20: 20 20 20 20 28 63 6f 6e 73 20 28 63 6f 6e 73 20      (cons (cons 
2d30: 30 20 28 6d 61 70 20 63 64 72 20 28 63 61 72 20  0 (map cdr (car 
2d40: 72 6f 77 73 29 29 29 20 72 65 73 75 6c 74 29 20  rows))) result) 
2d50: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
2d60: 20 20 28 6c 6f 6f 70 20 28 63 64 72 20 72 6f 77    (loop (cdr row
2d70: 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  s).             
2d80: 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 28           (cons (
2d90: 6d 61 70 20 63 64 72 20 28 63 61 72 20 72 6f 77  map cdr (car row
2da0: 73 29 29 20 72 65 73 75 6c 74 29 20 29 29 29 29  s)) result) ))))
2db0: 29 0a 20 20 20 20 20 20 20 20 3b 20 4e 65 78 74  ).        ; Next
2dc0: 20 77 65 20 70 72 65 70 65 6e 64 20 61 20 72 6f   we prepend a ro
2dd0: 77 20 6e 75 6d 62 65 72 20 74 6f 20 65 61 63 68  w number to each
2de0: 20 72 6f 77 20 61 6e 64 20 69 6e 73 75 72 65 20   row and insure 
2df0: 65 61 63 68 20 6c 69 6e 65 0a 20 20 20 20 20 20  each line.      
2e00: 20 20 3b 20 68 61 73 20 6e 6f 20 6d 6f 72 65 20    ; has no more 
2e10: 74 68 61 6e 20 32 30 20 63 65 6c 6c 73 2e 0a 20  than 20 cells.. 
2e20: 20 20 20 20 20 20 20 28 73 65 74 21 20 72 6f 77         (set! row
2e30: 73 20 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65  s .          (le
2e40: 74 20 6c 6f 6f 70 20 28 28 72 6f 77 73 20 72 6f  t loop ((rows ro
2e50: 77 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ws).            
2e60: 20 20 20 20 20 20 20 20 20 28 72 6f 77 2d 6e 75           (row-nu
2e70: 6d 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 20  m 1).           
2e80: 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 74 69            (conti
2e90: 6e 75 65 64 3f 20 23 66 29 0a 20 20 20 20 20 20  nued? #f).      
2ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
2eb0: 72 65 73 75 6c 74 20 27 28 29 29 20 29 0a 20 20  result '()) ).  
2ec0: 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 70            (if (p
2ed0: 61 69 72 3f 20 72 6f 77 73 29 0a 20 20 20 20 20  air? rows).     
2ee0: 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20             (let 
2ef0: 28 28 72 65 6d 61 69 6e 69 6e 67 20 28 63 64 72  ((remaining (cdr
2f00: 20 28 73 70 6c 69 74 20 28 63 61 72 20 72 6f 77   (split (car row
2f10: 73 29 20 32 30 29 29 29 0a 20 20 20 20 20 20 20  s) 20))).       
2f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
2f30: 74 68 69 73 2d 72 6f 77 20 28 63 61 72 20 28 73  this-row (car (s
2f40: 70 6c 69 74 20 28 63 61 72 20 72 6f 77 73 29 20  plit (car rows) 
2f50: 32 30 29 29 29 20 29 0a 20 20 20 20 20 20 20 20  20))) ).        
2f60: 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 70            (if (p
2f70: 61 69 72 3f 20 72 65 6d 61 69 6e 69 6e 67 29 0a  air? remaining).
2f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f90: 20 20 20 20 28 6c 6f 6f 70 20 28 63 6f 6e 73 20      (loop (cons 
2fa0: 72 65 6d 61 69 6e 69 6e 67 20 28 63 64 72 20 72  remaining (cdr r
2fb0: 6f 77 73 29 29 0a 20 20 20 20 20 20 20 20 20 20  ows)).          
2fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fd0: 72 6f 77 2d 6e 75 6d 0a 20 20 20 20 20 20 20 20  row-num.        
2fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff0: 20 20 23 74 0a 20 20 20 20 20 20 20 20 20 20 20    #t.           
3000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
3010: 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 28 6c  append result (l
3020: 69 73 74 20 28 63 6f 6e 73 20 28 69 66 20 63 6f  ist (cons (if co
3030: 6e 74 69 6e 75 65 64 3f 0a 20 20 20 20 20 20 20  ntinued?.       
3040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3070: 20 22 2d 2d 2d 22 0a 20 20 20 20 20 20 20 20 20   "---".         
3080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
30b0: 6e 75 6d 62 65 72 2d 3e 73 74 72 69 6e 67 20 72  number->string r
30c0: 6f 77 2d 6e 75 6d 29 20 29 0a 20 20 20 20 20 20  ow-num) ).      
30d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
3100: 68 69 73 2d 72 6f 77 29 29 29 20 29 0a 20 20 20  his-row))) ).   
3110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3120: 20 28 6c 6f 6f 70 20 28 63 64 72 20 72 6f 77 73   (loop (cdr rows
3130: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
3140: 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 63              (suc
3150: 63 20 72 6f 77 2d 6e 75 6d 29 0a 20 20 20 20 20  c row-num).     
3160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3170: 20 20 20 20 20 23 66 0a 20 20 20 20 20 20 20 20       #f.        
3180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3190: 20 20 28 61 70 70 65 6e 64 20 72 65 73 75 6c 74    (append result
31a0: 20 28 6c 69 73 74 20 28 63 6f 6e 73 20 28 69 66   (list (cons (if
31b0: 20 63 6f 6e 74 69 6e 75 65 64 3f 0a 20 20 20 20   continued?.    
31c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31f0: 20 20 20 20 22 2d 2d 2d 22 0a 20 20 20 20 20 20      "---".      
3200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3230: 20 20 28 6e 75 6d 62 65 72 2d 3e 73 74 72 69 6e    (number->strin
3240: 67 20 72 6f 77 2d 6e 75 6d 29 20 29 0a 20 20 20  g row-num) ).   
3250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3280: 20 20 74 68 69 73 2d 72 6f 77 29 29 29 20 29 29    this-row))) ))
3290: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
32a0: 20 20 72 65 73 75 6c 74 20 29 29 29 0a 20 20 20    result ))).   
32b0: 20 20 20 20 20 28 67 69 6d 70 2d 63 6f 6e 74 65       (gimp-conte
32c0: 78 74 2d 73 65 74 2d 66 6f 72 65 67 72 6f 75 6e  xt-set-foregroun
32d0: 64 20 27 28 30 20 30 20 30 29 29 0a 20 20 20 20  d '(0 0 0)).    
32e0: 20 20 20 20 28 6c 65 74 20 28 28 68 2d 67 72 69      (let ((h-gri
32f0: 64 20 28 63 64 72 20 68 2d 67 72 69 64 29 29 29  d (cdr h-grid)))
3300: 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20  .          (let 
3310: 28 28 69 6d 61 67 65 73 20 0a 20 20 20 20 20 20  ((images .      
3320: 20 20 20 20 20 20 28 6c 65 74 20 70 61 67 65 2d        (let page-
3330: 6c 6f 6f 70 20 28 28 70 61 67 65 2d 72 6f 77 73  loop ((page-rows
3340: 20 28 63 61 72 20 28 73 70 6c 69 74 20 72 6f 77   (car (split row
3350: 73 20 32 35 29 29 29 0a 20 20 20 20 20 20 20 20  s 25))).        
3360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3370: 20 20 20 20 28 72 65 6d 61 69 6e 69 6e 67 2d 72      (remaining-r
3380: 6f 77 73 20 28 63 64 72 20 28 73 70 6c 69 74 20  ows (cdr (split 
3390: 72 6f 77 73 20 32 35 29 29 29 0a 20 20 20 20 20  rows 25))).     
33a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33b0: 20 20 20 20 20 20 20 28 70 61 67 65 2d 6e 75 6d         (page-num
33c0: 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20   1).            
33d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33e0: 28 72 6f 77 2d 67 72 69 64 20 68 2d 67 72 69 64  (row-grid h-grid
33f0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
3400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74                (t
3410: 61 62 6c 65 73 20 27 28 29 29 20 29 0a 20 20 20  ables '()) ).   
3420: 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28             (if (
3430: 6e 75 6c 6c 3f 20 70 61 67 65 2d 72 6f 77 73 29  null? page-rows)
3440: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3450: 20 28 69 66 20 28 6e 75 6c 6c 3f 20 72 65 6d 61   (if (null? rema
3460: 69 6e 69 6e 67 2d 72 6f 77 73 29 0a 20 20 20 20  ining-rows).    
3470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61                ta
3480: 62 6c 65 73 20 3b 20 44 6f 6e 65 21 0a 20 20 20  bles ; Done!.   
3490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
34a0: 70 61 67 65 2d 6c 6f 6f 70 20 28 63 61 72 20 28  page-loop (car (
34b0: 73 70 6c 69 74 20 72 65 6d 61 69 6e 69 6e 67 2d  split remaining-
34c0: 72 6f 77 73 20 32 35 29 29 0a 20 20 20 20 20 20  rows 25)).      
34d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34e0: 20 20 20 20 20 20 20 28 63 64 72 20 28 73 70 6c         (cdr (spl
34f0: 69 74 20 72 65 6d 61 69 6e 69 6e 67 2d 72 6f 77  it remaining-row
3500: 73 20 32 35 29 29 0a 20 20 20 20 20 20 20 20 20  s 25)).         
3510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3520: 20 20 20 20 70 61 67 65 2d 6e 75 6d 0a 20 20 20      page-num.   
3530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3540: 20 20 20 20 20 20 20 20 20 20 68 2d 67 72 69 64            h-grid
3550: 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
3560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
3570: 61 62 6c 65 73 20 29 29 0a 20 20 20 20 20 20 20  ables )).       
3580: 20 20 20 20 20 20 20 20 20 28 62 65 67 69 6e 0a           (begin.
3590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35a0: 20 20 28 6c 65 74 2a 20 28 28 74 61 62 6c 65 2d    (let* ((table-
35b0: 69 6d 61 67 65 20 28 63 72 65 61 74 65 2d 74 61  image (create-ta
35c0: 62 6c 65 2d 69 6d 61 67 65 20 70 61 67 65 2d 6e  ble-image page-n
35d0: 75 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  um)).           
35e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74                (t
35f0: 61 62 6c 65 2d 6c 61 79 65 72 20 28 63 61 72 20  able-layer (car 
3600: 28 67 69 6d 70 2d 69 6d 61 67 65 2d 67 65 74 2d  (gimp-image-get-
3610: 61 63 74 69 76 65 2d 6c 61 79 65 72 20 74 61 62  active-layer tab
3620: 6c 65 2d 69 6d 61 67 65 29 29 29 20 29 0a 20 20  le-image))) ).  
3630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3640: 20 20 28 67 69 6d 70 2d 70 72 6f 67 72 65 73 73    (gimp-progress
3650: 2d 70 75 6c 73 65 29 0a 20 20 20 20 20 20 20 20  -pulse).        
3660: 20 20 20 20 20 20 20 20 20 20 20 20 28 67 69 6d              (gim
3670: 70 2d 70 72 6f 67 72 65 73 73 2d 73 65 74 2d 74  p-progress-set-t
3680: 65 78 74 20 22 46 69 6c 6c 69 6e 67 20 74 61 62  ext "Filling tab
3690: 6c 65 2e 2e 2e 22 29 0a 20 20 20 20 20 20 20 20  le...").        
36a0: 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74              (set
36b0: 21 20 74 61 62 6c 65 73 20 28 63 6f 6e 73 20 74  ! tables (cons t
36c0: 61 62 6c 65 2d 69 6d 61 67 65 20 74 61 62 6c 65  able-image table
36d0: 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  s)).            
36e0: 20 20 20 20 20 20 20 20 28 6c 65 74 20 6c 69 6e          (let lin
36f0: 65 2d 6c 6f 6f 70 20 28 28 6c 69 6e 65 2d 72 6f  e-loop ((line-ro
3700: 77 73 20 70 61 67 65 2d 72 6f 77 73 29 0a 20 20  ws page-rows).  
3710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3730: 20 20 28 72 6f 77 2d 6f 66 66 73 65 74 73 20 68    (row-offsets h
3740: 2d 67 72 69 64 29 0a 20 20 20 20 20 20 20 20 20  -grid).         
3750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3760: 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 6e 65             (line
3770: 2d 63 6e 74 20 28 6c 65 6e 67 74 68 20 70 61 67  -cnt (length pag
3780: 65 2d 72 6f 77 73 29 29 20 29 0a 20 20 20 20 20  e-rows)) ).     
3790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37a0: 20 28 75 6e 6c 65 73 73 20 28 6f 72 20 28 6e 75   (unless (or (nu
37b0: 6c 6c 3f 20 6c 69 6e 65 2d 72 6f 77 73 29 20 28  ll? line-rows) (
37c0: 7a 65 72 6f 3f 20 6c 69 6e 65 2d 63 6e 74 29 29  zero? line-cnt))
37d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37e0: 20 20 20 20 20 20 20 20 20 28 70 6c 61 63 65 2d           (place-
37f0: 74 65 78 74 20 74 61 62 6c 65 2d 6c 61 79 65 72  text table-layer
3800: 20 28 63 61 61 72 20 6c 69 6e 65 2d 72 6f 77 73   (caar line-rows
3810: 29 20 76 2d 67 72 69 64 20 72 6f 77 2d 6f 66 66  ) v-grid row-off
3820: 73 65 74 73 29 0a 20 20 20 20 20 20 20 20 20 20  sets).          
3830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c                (l
3840: 65 74 20 28 28 6e 75 6d 2d 74 65 78 74 20 28 63  et ((num-text (c
3850: 61 61 72 20 6c 69 6e 65 2d 72 6f 77 73 29 29 29  aar line-rows)))
3860: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3870: 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 61 63             (plac
3880: 65 2d 74 65 78 74 20 74 61 62 6c 65 2d 6c 61 79  e-text table-lay
3890: 65 72 20 6e 75 6d 2d 74 65 78 74 20 76 2d 67 72  er num-text v-gr
38a0: 69 64 20 72 6f 77 2d 6f 66 66 73 65 74 73 29 0a  id row-offsets).
38b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38c0: 20 20 20 20 20 20 20 20 20 20 28 70 6c 61 63 65            (place
38d0: 2d 74 65 78 74 20 74 61 62 6c 65 2d 6c 61 79 65  -text table-laye
38e0: 72 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r .             
38f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3900: 20 20 20 20 20 20 20 20 20 28 69 66 20 28 73 74           (if (st
3910: 72 69 6e 67 3d 3f 20 6e 75 6d 2d 74 65 78 74 20  ring=? num-text 
3920: 22 2d 2d 2d 22 29 0a 20 20 20 20 20 20 20 20 20  "---").         
3930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3950: 22 2d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  "-".            
3960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3970: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66               (if
3980: 20 28 65 76 65 6e 3f 20 28 73 74 72 69 6e 67 2d   (even? (string-
3990: 3e 6e 75 6d 62 65 72 20 6e 75 6d 2d 74 65 78 74  >number num-text
39a0: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
39b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4c                "L
39d0: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ".              
39e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 52 22               "R"
3a00: 20 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20   )).            
3a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a20: 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 76            (cdr v
3a30: 2d 67 72 69 64 29 0a 20 20 20 20 20 20 20 20 20  -grid).         
3a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 77               row
3a60: 2d 6f 66 66 73 65 74 73 20 29 29 0a 20 20 20 20  -offsets )).    
3a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a80: 20 20 20 20 28 6c 65 74 20 63 65 6c 6c 2d 6c 6f      (let cell-lo
3a90: 6f 70 20 28 28 63 65 6c 6c 73 20 28 63 64 61 72  op ((cells (cdar
3aa0: 20 6c 69 6e 65 2d 72 6f 77 73 29 29 0a 20 20 20   line-rows)).   
3ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ad0: 20 20 20 20 20 28 63 6f 6c 2d 67 72 69 64 20 28       (col-grid (
3ae0: 63 64 64 72 20 76 2d 67 72 69 64 29 29 20 3b 20  cddr v-grid)) ; 
3af0: 73 6b 69 70 20 74 68 65 20 27 72 6f 77 27 20 61  skip the 'row' a
3b00: 6e 64 20 27 72 65 61 64 27 20 63 6f 6c 75 6d 6e  nd 'read' column
3b10: 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  s.              
3b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b30: 20 20 20 20 20 20 20 20 20 20 28 63 65 6c 6c 2d            (cell-
3b40: 63 6e 74 20 32 30 29 20 29 0a 20 20 20 20 20 20  cnt 20) ).      
3b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b60: 20 20 20 20 28 67 69 6d 70 2d 70 72 6f 67 72 65      (gimp-progre
3b70: 73 73 2d 70 75 6c 73 65 29 0a 20 20 20 20 20 20  ss-pulse).      
3b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b90: 20 20 20 20 28 75 6e 6c 65 73 73 20 28 6f 72 20      (unless (or 
3ba0: 28 7a 65 72 6f 3f 20 63 65 6c 6c 2d 63 6e 74 29  (zero? cell-cnt)
3bb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3bd0: 20 20 20 20 20 20 20 28 6e 75 6c 6c 3f 20 63 65         (null? ce
3be0: 6c 6c 73 29 20 29 0a 20 20 20 20 20 20 20 20 20  lls) ).         
3bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c00: 20 20 20 28 70 6c 61 63 65 2d 74 65 78 74 20 74     (place-text t
3c10: 61 62 6c 65 2d 6c 61 79 65 72 20 28 6e 75 6d 62  able-layer (numb
3c20: 65 72 2d 3e 73 74 72 69 6e 67 20 28 63 61 72 20  er->string (car 
3c30: 63 65 6c 6c 73 29 29 20 63 6f 6c 2d 67 72 69 64  cells)) col-grid
3c40: 20 72 6f 77 2d 6f 66 66 73 65 74 73 29 0a 20 20   row-offsets).  
3c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c60: 20 20 20 20 20 20 20 20 20 20 28 63 65 6c 6c 2d            (cell-
3c70: 6c 6f 6f 70 20 28 63 64 72 20 63 65 6c 6c 73 29  loop (cdr cells)
3c80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ca0: 20 20 20 20 20 20 20 20 28 63 64 72 20 63 6f 6c          (cdr col
3cb0: 2d 67 72 69 64 29 0a 20 20 20 20 20 20 20 20 20  -grid).         
3cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70                (p
3ce0: 72 65 64 20 63 65 6c 6c 2d 63 6e 74 29 20 29 29  red cell-cnt) ))
3cf0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
3d00: 20 20 20 20 20 20 20 20 20 20 28 6c 69 6e 65 2d            (line-
3d10: 6c 6f 6f 70 20 28 63 64 72 20 6c 69 6e 65 2d 72  loop (cdr line-r
3d20: 6f 77 73 29 0a 20 20 20 20 20 20 20 20 20 20 20  ows).           
3d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d40: 20 20 20 20 20 20 20 20 28 63 64 72 20 72 6f 77          (cdr row
3d50: 2d 6f 66 66 73 65 74 73 29 0a 20 20 20 20 20 20  -offsets).      
3d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72               (pr
3d80: 65 64 20 6c 69 6e 65 2d 63 6e 74 29 20 29 29 29  ed line-cnt) )))
3d90: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
3da0: 20 20 20 20 20 20 28 70 61 67 65 2d 6c 6f 6f 70        (page-loop
3db0: 20 27 28 29 0a 20 20 20 20 20 20 20 20 20 20 20   '().           
3dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3dd0: 20 20 20 20 72 65 6d 61 69 6e 69 6e 67 2d 72 6f      remaining-ro
3de0: 77 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ws.             
3df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e00: 20 20 28 73 75 63 63 20 70 61 67 65 2d 6e 75 6d    (succ page-num
3e10: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
3e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e30: 20 68 2d 67 72 69 64 0a 20 20 20 20 20 20 20 20   h-grid.        
3e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e50: 20 20 20 20 20 20 20 74 61 62 6c 65 73 20 29 29         tables ))
3e60: 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  )))).           
3e70: 20 28 6c 65 74 20 6c 6f 6f 70 20 28 28 69 6d 61   (let loop ((ima
3e80: 67 65 73 20 69 6d 61 67 65 73 29 29 0a 20 20 20  ges images)).   
3e90: 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65             (unle
3ea0: 73 73 20 28 6e 75 6c 6c 3f 20 69 6d 61 67 65 73  ss (null? images
3eb0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
3ec0: 20 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 75 6e    (gimp-image-un
3ed0: 64 6f 2d 65 6e 61 62 6c 65 20 28 63 61 72 20 69  do-enable (car i
3ee0: 6d 61 67 65 73 29 29 0a 20 20 20 20 20 20 20 20  mages)).        
3ef0: 20 20 20 20 20 20 20 20 28 67 69 6d 70 2d 64 69          (gimp-di
3f00: 73 70 6c 61 79 2d 6e 65 77 20 28 63 61 72 20 69  splay-new (car i
3f10: 6d 61 67 65 73 29 29 0a 20 20 20 20 20 20 20 20  mages)).        
3f20: 20 20 20 20 20 20 20 20 28 6c 6f 6f 70 20 28 63          (loop (c
3f30: 64 72 20 69 6d 61 67 65 73 29 29 20 29 29 0a 20  dr images)) )). 
3f40: 20 20 20 20 20 20 20 20 20 20 20 29 29 29 29 0a             )))).
3f50: 20 20 20 20 28 67 69 6d 70 2d 64 69 73 70 6c 61      (gimp-displa
3f60: 79 73 2d 66 6c 75 73 68 29 0a 20 20 20 20 28 67  ys-flush).    (g
3f70: 69 6d 70 2d 70 72 6f 67 72 65 73 73 2d 65 6e 64  imp-progress-end
3f80: 29 20 0a 20 20 20 20 29 0a 20 20 28 67 69 6d 70  ) .    ).  (gimp
3f90: 2d 63 6f 6e 74 65 78 74 2d 70 6f 70 29 20 0a 20  -context-pop) . 
3fa0: 20 29 0a 20 20 20 20 20 0a 28 73 63 72 69 70 74   ).     .(script
3fb0: 2d 66 75 2d 72 65 67 69 73 74 65 72 20 22 73 63  -fu-register "sc
3fc0: 72 69 70 74 2d 66 75 2d 73 67 2d 76 69 6b 74 6f  ript-fu-sg-vikto
3fd0: 72 69 61 22 0a 20 20 22 5f 43 72 6f 63 68 65 74  ria".  "_Crochet
3fe0: 20 50 61 74 74 65 72 6e 20 62 79 20 56 69 6b 74   Pattern by Vikt
3ff0: 6f 72 69 61 22 0a 20 20 22 43 72 65 61 74 65 20  oria".  "Create 
4000: 63 72 6f 63 68 65 74 20 69 6e 73 74 72 75 63 74  crochet instruct
4010: 69 6f 6e 73 20 70 65 72 20 56 69 6b 74 6f 72 69  ions per Viktori
4020: 61 22 0a 20 20 22 53 61 75 6c 20 47 6f 6f 64 65  a".  "Saul Goode
4030: 22 0a 20 20 22 53 61 75 6c 20 47 6f 6f 64 65 22  ".  "Saul Goode"
4040: 0a 20 20 22 41 70 72 69 6c 20 32 30 31 33 22 0a  .  "April 2013".
4050: 20 20 22 2a 22 0a 20 20 53 46 2d 49 4d 41 47 45    "*".  SF-IMAGE
4060: 20 20 20 20 22 49 6d 61 67 65 22 20 20 20 20 30      "Image"    0
4070: 0a 20 20 53 46 2d 44 52 41 57 41 42 4c 45 20 22  .  SF-DRAWABLE "
4080: 44 72 61 77 61 62 6c 65 22 20 30 0a 20 20 29 0a  Drawable" 0.  ).
4090: 28 73 63 72 69 70 74 2d 66 75 2d 6d 65 6e 75 2d  (script-fu-menu-
40a0: 72 65 67 69 73 74 65 72 20 22 73 63 72 69 70 74  register "script
40b0: 2d 66 75 2d 73 67 2d 76 69 6b 74 6f 72 69 61 22  -fu-sg-viktoria"
40c0: 0a 20 20 22 3c 49 6d 61 67 65 3e 2f 46 69 6c 65  .  "<Image>/File
40d0: 2f 43 72 65 61 74 65 22 0a 20 20 29 0a           /Create".  ).