GIMP Script-fu

Hex Artifact Content
Login

Artifact 59fa26dfcf591a4bbcb2750c07b363905e667c9d:


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 3b 20 52  re details...; R
01f0: 65 76 69 73 69 6f 6e 3a 20 4a 61 6e 75 61 72 79  evision: January
0200: 20 32 30 31 32 20 2d 20 61 64 64 65 64 20 48 75   2012 - added Hu
0210: 6e 67 61 72 69 61 6e 20 74 72 61 6e 73 6c 61 74  ngarian translat
0220: 69 6f 6e 20 28 74 68 61 6e 6b 73 20 74 6f 20 70  ion (thanks to p
0230: 65 74 72 69 6b 70 29 0a 3b 20 20 20 20 20 20 20  etrikp).;       
0240: 20 20 20 20 4d 61 72 63 68 20 32 30 31 32 20 20      March 2012  
0250: 20 2d 20 61 64 64 65 64 20 50 6f 6c 69 73 68 20   - added Polish 
0260: 28 74 68 61 6e 6b 73 20 74 6f 20 4d 61 72 69 6f  (thanks to Mario
0270: 29 0a 3b 20 20 20 20 20 20 20 20 20 20 20 4a 61  ).;           Ja
0280: 6e 75 61 72 79 20 32 30 31 33 20 2d 20 61 64 64  nuary 2013 - add
0290: 65 64 20 52 75 73 73 69 61 6e 20 74 72 61 6e 73  ed Russian trans
02a0: 6c 61 74 69 6f 6e 20 28 74 68 61 6e 6b 73 20 74  lation (thanks t
02b0: 6f 20 4c 65 6f 6e 69 64 29 0a 3b 20 20 20 20 20  o Leonid).;     
02c0: 20 20 20 20 20 20 4a 61 6e 75 61 72 79 20 32 30        January 20
02d0: 31 33 20 2d 20 53 65 72 62 69 61 6e 2c 20 43 72  13 - Serbian, Cr
02e0: 6f 61 74 69 61 6e 2c 20 53 6c 6f 76 65 6e 69 61  oatian, Slovenia
02f0: 6e 2c 20 4d 61 63 65 64 6f 6e 69 61 6e 20 28 74  n, Macedonian (t
0300: 68 61 6e 6b 73 20 74 6f 20 53 6b 79 6e 65 74 29  hanks to Skynet)
0310: 0a 3b 20 20 20 20 20 20 20 20 20 20 20 4d 61 72  .;           Mar
0320: 63 68 20 32 30 31 33 20 20 20 2d 20 53 77 65 64  ch 2013   - Swed
0330: 69 73 68 20 28 74 68 61 6e 6b 73 20 74 6f 20 55  ish (thanks to U
0340: 6c 6c 69 73 29 0a 3b 20 20 20 20 20 20 20 20 20  llis).;         
0350: 20 20 41 70 72 69 6c 20 32 30 31 35 20 20 20 2d    April 2015   -
0360: 20 43 61 74 61 6c 61 6e 20 28 74 68 61 6e 6b 73   Catalan (thanks
0370: 20 74 6f 20 58 61 76 69 65 72 29 0a 0a 3b 20 27   to Xavier)..; '
0380: 6c 61 79 6f 75 74 27 0a 3b 20 20 20 30 20 3d 20  layout'.;   0 = 
0390: 41 6c 6c 6f 77 20 77 65 65 6b 20 36 0a 3b 20 20  Allow week 6.;  
03a0: 20 31 20 3d 20 46 6f 72 63 65 20 77 65 65 6b 20   1 = Force week 
03b0: 36 0a 3b 20 20 20 32 20 3d 20 57 72 61 70 20 77  6.;   2 = Wrap w
03c0: 36 20 74 6f 20 77 31 0a 3b 20 20 20 33 20 3d 20  6 to w1.;   3 = 
03d0: 57 72 61 70 20 77 36 20 74 6f 20 77 35 0a 0a 28  Wrap w6 to w5..(
03e0: 64 65 66 69 6e 65 20 73 67 2d 63 61 6c 65 6e 64  define sg-calend
03f0: 61 72 2d 6c 61 6e 67 75 61 67 65 73 20 27 28 22  ar-languages '("
0400: 45 6e 67 6c 69 73 68 22 20 20 20 20 20 20 20 22  English"       "
0410: 47 65 72 6d 61 6e 22 20 20 20 20 20 20 20 20 20  German"         
0420: 20 22 49 74 61 6c 69 61 6e 22 20 20 20 22 53 70   "Italian"   "Sp
0430: 61 6e 69 73 68 22 20 20 20 0a 20 20 20 20 20 20  anish"   .      
0440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0450: 20 20 20 20 20 20 20 20 20 20 22 46 72 65 6e 63            "Frenc
0460: 68 22 20 20 20 20 20 20 20 20 22 48 75 6e 67 61  h"        "Hunga
0470: 72 69 61 6e 22 20 20 20 20 20 20 20 22 50 6f 6c  rian"       "Pol
0480: 69 73 68 22 20 20 20 20 22 52 75 73 73 69 61 6e  ish"    "Russian
0490: 22 20 20 20 0a 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 20 20 20                  
04b0: 20 20 20 20 20 22 53 65 72 62 69 61 6e 20 6c 61       "Serbian la
04c0: 74 69 6e 22 20 22 53 65 72 62 69 61 6e 20 63 79  tin" "Serbian cy
04d0: 72 69 6c 69 63 22 20 22 43 72 6f 61 74 69 61 6e  rilic" "Croatian
04e0: 22 20 20 22 53 6c 6f 76 65 6e 69 61 6e 22 20 0a  "  "Slovenian" .
04f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0510: 22 4d 61 63 65 64 6f 6e 69 61 6e 22 20 20 20 20  "Macedonian"    
0520: 22 53 77 65 64 69 73 68 22 20 20 20 20 20 20 20  "Swedish"       
0530: 20 20 22 43 61 74 61 6c 61 6e 22 29 20 29 0a 0a    "Catalan") )..
0540: 3b 3b 20 45 61 63 68 20 6f 66 20 74 68 65 20 66  ;; Each of the f
0550: 6f 6c 6c 6f 77 69 6e 67 20 74 72 61 6e 73 6c 61  ollowing transla
0560: 74 69 6f 6e 73 20 61 72 65 20 63 6f 6d 70 72 69  tions are compri
0570: 73 65 64 20 6f 66 20 61 20 6c 69 73 74 20 6f 66  sed of a list of
0580: 3a 0a 3b 3b 20 20 20 28 6d 6f 6e 74 68 73 29 20  :.;;   (months) 
0590: 28 64 61 79 73 29 20 28 64 61 79 2d 61 62 62 72  (days) (day-abbr
05a0: 65 76 69 61 74 69 6f 6e 73 29 0a 3b 3b 20 49 66  eviations).;; If
05b0: 20 74 68 65 20 64 61 79 2d 61 62 62 72 65 76 69   the day-abbrevi
05c0: 61 74 69 6f 6e 73 20 69 73 20 23 66 20 74 68 65  ations is #f the
05d0: 6e 20 74 68 65 20 6c 65 74 74 65 72 73 2d 69 6e  n the letters-in
05e0: 2d 64 61 79 20 70 61 72 61 6d 65 74 65 72 20 69  -day parameter i
05f0: 73 0a 3b 3b 20 75 73 65 64 20 74 6f 20 67 65 6e  s.;; used to gen
0600: 65 72 61 74 65 20 74 68 65 20 61 62 62 72 65 76  erate the abbrev
0610: 69 61 74 69 6f 6e 20 66 72 6f 6d 20 74 68 65 20  iation from the 
0620: 66 75 6c 6c 20 64 61 79 20 6e 61 6d 65 2e 0a 3b  full day name..;
0630: 3b 20 0a 3b 3b 20 4c 61 6e 67 75 61 67 65 73 20  ; .;; Languages 
0640: 61 70 70 65 61 72 20 69 6e 20 74 68 65 20 6f 72  appear in the or
0650: 64 65 72 20 74 68 61 74 20 74 68 65 79 20 77 65  der that they we
0660: 72 65 20 63 6f 6e 74 72 69 62 75 74 65 64 2e 0a  re contributed..
0670: 3b 3b 0a 28 64 65 66 69 6e 65 20 73 67 2d 63 61  ;;.(define sg-ca
0680: 6c 65 6e 64 61 72 2d 74 72 61 6e 73 6c 61 74 69  lendar-translati
0690: 6f 6e 73 0a 20 20 27 28 28 20 3b 20 22 45 6e 67  ons.  '(( ; "Eng
06a0: 6c 69 73 68 22 20 0a 20 20 20 20 20 20 20 20 20  lish" .         
06b0: 28 22 4a 61 6e 75 61 72 79 22 20 20 20 20 20 20  ("January"      
06c0: 22 46 65 62 72 75 61 72 79 22 20 20 20 20 20 22  "February"     "
06d0: 4d 61 72 63 68 22 20 20 20 20 20 20 20 22 41 70  March"       "Ap
06e0: 72 69 6c 22 20 0a 20 20 20 20 20 20 20 20 20 20  ril" .          
06f0: 22 4d 61 79 22 20 20 20 20 20 20 20 20 20 20 22  "May"          "
0700: 4a 75 6e 65 22 20 20 20 20 20 20 20 20 20 22 4a  June"         "J
0710: 75 6c 79 22 20 20 20 20 20 20 20 20 22 41 75 67  uly"        "Aug
0720: 75 73 74 22 0a 20 20 20 20 20 20 20 20 20 20 22  ust".          "
0730: 53 65 70 74 65 6d 62 65 72 22 20 20 20 20 22 4f  September"    "O
0740: 63 74 6f 62 65 72 22 20 20 20 20 20 20 22 4e 6f  ctober"      "No
0750: 76 65 6d 62 65 72 22 20 20 20 20 22 44 65 63 65  vember"    "Dece
0760: 6d 62 65 72 22 29 0a 20 20 20 20 20 20 20 20 20  mber").         
0770: 28 22 4d 6f 6e 64 61 79 22 20 20 20 20 20 20 20  ("Monday"       
0780: 22 54 75 65 73 64 61 79 22 20 20 20 20 20 20 22  "Tuesday"      "
0790: 57 65 64 6e 65 73 64 61 79 22 20 20 20 22 54 68  Wednesday"   "Th
07a0: 75 72 73 64 61 79 22 0a 20 20 20 20 20 20 20 20  ursday".        
07b0: 20 20 22 46 72 69 64 61 79 22 20 20 20 20 20 20    "Friday"      
07c0: 20 22 53 61 74 75 72 64 61 79 22 20 20 20 20 20   "Saturday"     
07d0: 22 53 75 6e 64 61 79 22 29 0a 20 20 20 20 20 20  "Sunday").      
07e0: 20 20 20 20 23 66 29 0a 20 20 20 20 28 20 3b 20      #f).    ( ; 
07f0: 22 47 65 72 6d 61 6e 22 20 0a 20 20 20 20 20 20  "German" .      
0800: 20 20 28 22 4a 61 6e 75 61 72 22 20 20 20 20 20    ("Januar"     
0810: 20 20 20 22 46 65 62 72 75 61 72 22 20 20 20 20     "Februar"    
0820: 20 20 22 4d c3 a4 72 7a 22 20 20 20 20 20 20 20    "M..rz"       
0830: 20 22 41 70 72 69 6c 22 0a 20 20 20 20 20 20 20   "April".       
0840: 20 20 22 4d 61 69 22 20 20 20 20 20 20 20 20 20    "Mai"         
0850: 20 20 22 4a 75 6e 69 22 20 20 20 20 20 20 20 20    "Juni"        
0860: 20 22 4a 75 6c 69 22 20 20 20 20 20 20 20 20 22   "Juli"        "
0870: 41 75 67 75 73 74 22 20 0a 20 20 20 20 20 20 20  August" .       
0880: 20 20 22 53 65 70 74 65 6d 62 65 72 22 20 20 20    "September"   
0890: 20 20 22 4f 6b 74 6f 62 65 72 22 20 20 20 20 20    "Oktober"     
08a0: 20 22 4e 6f 76 65 6d 62 65 72 22 20 20 20 20 22   "November"    "
08b0: 44 65 7a 65 6d 62 65 72 22 29 0a 20 20 20 20 20  Dezember").     
08c0: 20 20 20 28 22 4d 6f 6e 74 61 67 22 20 20 20 20     ("Montag"    
08d0: 20 20 20 20 22 44 69 65 6e 73 74 61 67 22 20 20      "Dienstag"  
08e0: 20 20 20 22 4d 69 74 74 77 6f 63 68 22 20 20 20     "Mittwoch"   
08f0: 20 22 44 6f 6e 6e 65 72 73 74 61 67 22 20 0a 20   "Donnerstag" . 
0900: 20 20 20 20 20 20 20 20 22 46 72 65 69 74 61 67          "Freitag
0910: 22 20 20 20 20 20 20 20 22 53 61 6d 73 74 61 67  "       "Samstag
0920: 22 20 20 20 20 20 20 22 53 6f 6e 6e 74 61 67 22  "      "Sonntag"
0930: 29 0a 20 20 20 20 20 20 20 20 23 66 29 0a 20 20  ).        #f).  
0940: 20 20 28 20 3b 20 22 49 74 61 6c 69 61 6e 22 20    ( ; "Italian" 
0950: 0a 20 20 20 20 20 20 20 20 28 22 47 65 6e 6e 61  .        ("Genna
0960: 69 6f 22 20 20 20 20 20 20 20 22 46 65 62 62 72  io"       "Febbr
0970: 61 69 6f 22 20 20 20 20 20 22 4d 61 72 7a 6f 22  aio"     "Marzo"
0980: 20 20 20 20 20 20 20 22 41 70 72 69 6c 65 22 20         "Aprile" 
0990: 0a 20 20 20 20 20 20 20 20 20 22 4d 61 67 67 69  .         "Maggi
09a0: 6f 22 20 20 20 20 20 20 20 20 22 47 69 75 67 6e  o"        "Giugn
09b0: 6f 22 20 20 20 20 20 20 20 22 4c 75 67 6c 69 6f  o"       "Luglio
09c0: 22 20 20 20 20 20 20 22 41 67 6f 73 74 6f 22 20  "      "Agosto" 
09d0: 0a 20 20 20 20 20 20 20 20 20 22 53 65 74 74 65  .         "Sette
09e0: 6d 62 72 65 22 20 20 20 20 20 22 4f 74 74 6f 62  mbre"     "Ottob
09f0: 72 65 22 20 20 20 20 20 20 22 4e 6f 76 65 6d 62  re"      "Novemb
0a00: 72 65 22 20 20 20 20 22 44 69 63 65 6d 62 72 65  re"    "Dicembre
0a10: 22 29 0a 20 20 20 20 20 20 20 20 28 22 4c 75 6e  ").        ("Lun
0a20: 65 64 69 22 20 20 20 20 20 20 20 20 22 4d 61 72  edi"        "Mar
0a30: 74 65 64 69 22 20 20 20 20 20 20 22 4d 65 72 63  tedi"      "Merc
0a40: 6f 6c 65 64 69 22 20 20 20 22 47 69 6f 76 65 64  oledi"   "Gioved
0a50: 69 22 20 0a 20 20 20 20 20 20 20 20 20 22 56 65  i" .         "Ve
0a60: 6e 65 72 64 69 22 20 20 20 20 20 20 20 22 53 61  nerdi"       "Sa
0a70: 62 61 74 6f 22 20 20 20 20 20 20 20 22 44 6f 6d  bato"       "Dom
0a80: 65 6e 69 63 61 22 29 0a 20 20 20 20 20 20 20 20  enica").        
0a90: 23 66 29 0a 20 20 20 20 28 20 3b 20 22 53 70 61  #f).    ( ; "Spa
0aa0: 6e 69 73 68 22 0a 20 20 20 20 20 20 20 20 28 22  nish".        ("
0ab0: 45 6e 65 72 6f 22 20 20 20 20 20 20 20 20 20 22  Enero"         "
0ac0: 46 65 62 72 65 72 6f 22 20 20 20 20 20 20 22 4d  Febrero"      "M
0ad0: 61 72 7a 6f 22 20 20 20 20 20 20 20 22 41 62 72  arzo"       "Abr
0ae0: 69 6c 22 20 0a 20 20 20 20 20 20 20 20 20 22 4d  il" .         "M
0af0: 61 79 6f 22 20 20 20 20 20 20 20 20 20 20 22 4a  ayo"          "J
0b00: 75 6e 69 6f 22 20 20 20 20 20 20 20 20 22 4a 75  unio"        "Ju
0b10: 6c 69 6f 22 20 20 20 20 20 20 20 22 41 67 6f 73  lio"       "Agos
0b20: 74 6f 22 20 0a 20 20 20 20 20 20 20 20 20 22 53  to" .         "S
0b30: 65 70 74 69 65 6d 62 72 65 22 20 20 20 20 22 4f  eptiembre"    "O
0b40: 63 74 75 62 72 65 22 20 20 20 20 20 20 22 4e 6f  ctubre"      "No
0b50: 76 69 65 6d 62 72 65 22 20 20 20 22 44 69 63 69  viembre"   "Dici
0b60: 65 6d 62 72 65 22 29 0a 20 20 20 20 20 20 20 20  embre").        
0b70: 28 22 4c 75 6e 65 73 22 20 20 20 20 20 20 20 20  ("Lunes"        
0b80: 20 22 4d 61 72 74 65 73 22 20 20 20 20 20 20 20   "Martes"       
0b90: 22 4d 69 65 72 63 6f 6c 65 73 22 20 20 20 22 4a  "Miercoles"   "J
0ba0: 75 65 76 65 73 22 20 0a 20 20 20 20 20 20 20 20  ueves" .        
0bb0: 20 22 56 69 65 72 6e 65 73 22 20 20 20 20 20 20   "Viernes"      
0bc0: 20 22 53 61 62 61 64 6f 22 20 20 20 20 20 20 20   "Sabado"       
0bd0: 22 44 6f 6d 69 6e 67 6f 22 29 0a 20 20 20 20 20  "Domingo").     
0be0: 20 20 20 23 66 29 0a 20 20 20 20 28 20 3b 20 22     #f).    ( ; "
0bf0: 46 72 65 6e 63 68 22 0a 20 20 20 20 20 20 20 20  French".        
0c00: 28 22 4a 61 6e 76 69 65 72 22 20 20 20 20 20 20  ("Janvier"      
0c10: 20 22 46 c3 a9 76 72 69 65 72 22 20 20 20 20 20   "F..vrier"     
0c20: 20 22 4d 61 72 73 22 20 20 20 20 20 20 20 20 22   "Mars"        "
0c30: 41 76 72 69 6c 22 0a 20 20 20 20 20 20 20 20 20  Avril".         
0c40: 22 4d 61 69 22 20 20 20 20 20 20 20 20 20 20 20  "Mai"           
0c50: 22 4a 75 69 6e 22 20 20 20 20 20 20 20 20 20 22  "Juin"         "
0c60: 4a 75 69 6c 6c 65 74 22 20 20 20 20 20 22 41 6f  Juillet"     "Ao
0c70: c3 bb 74 22 20 0a 20 20 20 20 20 20 20 20 20 22  ..t" .         "
0c80: 53 65 70 74 65 6d 62 72 65 22 20 20 20 20 20 22  Septembre"     "
0c90: 4f 63 74 6f 62 72 65 22 20 20 20 20 20 20 22 4e  Octobre"      "N
0ca0: 6f 76 65 6d 62 72 65 22 20 20 20 20 22 44 c3 a9  ovembre"    "D..
0cb0: 63 65 6d 62 72 65 22 29 0a 20 20 20 20 20 20 20  cembre").       
0cc0: 20 28 22 4c 75 6e 64 69 22 20 20 20 20 20 20 20   ("Lundi"       
0cd0: 20 20 22 4d 61 72 64 69 22 20 20 20 20 20 20 20    "Mardi"       
0ce0: 20 22 4d 65 72 63 72 65 64 69 22 20 20 20 20 22   "Mercredi"    "
0cf0: 4a 65 75 64 69 22 20 0a 20 20 20 20 20 20 20 20  Jeudi" .        
0d00: 20 22 56 65 6e 64 72 65 64 69 22 20 20 20 20 20   "Vendredi"     
0d10: 20 22 53 61 6d 65 64 69 22 20 20 20 20 20 20 20   "Samedi"       
0d20: 22 44 69 6d 61 6e 63 68 65 22 29 0a 20 20 20 20  "Dimanche").    
0d30: 20 20 20 20 23 66 29 0a 20 20 20 20 28 20 3b 20      #f).    ( ; 
0d40: 22 48 75 6e 67 61 72 69 61 6e 22 0a 20 20 20 20  "Hungarian".    
0d50: 20 20 20 20 28 22 4a 61 6e 75 c3 a1 72 22 20 20      ("Janu..r"  
0d60: 20 20 20 20 20 20 22 46 65 62 72 75 c3 a1 72 22        "Febru..r"
0d70: 20 20 20 20 20 20 22 4d c3 a1 72 63 69 75 73 22        "M..rcius"
0d80: 20 20 20 20 20 22 c3 81 70 72 69 6c 69 73 22 20       "..prilis" 
0d90: 0a 20 20 20 20 20 20 20 20 20 22 4d c3 a1 6a 75  .         "M..ju
0da0: 73 22 20 20 20 20 20 20 20 20 20 22 4a c3 ba 6e  s"         "J..n
0db0: 69 75 73 22 20 20 20 20 20 20 20 22 4a c3 ba 6c  ius"       "J..l
0dc0: 69 75 73 22 20 20 20 20 20 20 22 41 75 67 75 73  ius"      "Augus
0dd0: 7a 74 75 73 22 20 0a 20 20 20 20 20 20 20 20 20  ztus" .         
0de0: 22 53 7a 65 70 74 65 6d 62 65 72 22 20 20 20 20  "Szeptember"    
0df0: 22 4f 6b 74 c3 b3 62 65 72 22 20 20 20 20 20 20  "Okt..ber"      
0e00: 22 4e 6f 76 65 6d 62 65 72 22 20 20 20 20 22 44  "November"    "D
0e10: 65 63 65 6d 62 65 72 22 29 0a 20 20 20 20 20 20  ecember").      
0e20: 20 20 28 22 76 61 73 c3 a1 72 6e 61 70 22 20 20    ("vas..rnap"  
0e30: 20 20 20 20 22 68 c3 a9 74 66 c5 91 22 20 20 20      "h..tf.."   
0e40: 20 20 20 20 20 22 6b 65 64 64 22 20 20 20 20 20       "kedd"     
0e50: 20 20 20 22 73 7a 65 72 64 61 22 20 0a 20 20 20     "szerda" .   
0e60: 20 20 20 20 20 20 22 63 73 c3 bc 74 c3 b6 72 74        "cs..t..rt
0e70: c3 b6 6b 22 20 20 20 20 20 22 70 c3 a9 6e 74 65  ..k"     "p..nte
0e80: 6b 22 20 20 20 20 20 20 20 22 73 7a 6f 6d 62 61  k"       "szomba
0e90: 74 22 29 0a 20 20 20 20 20 20 20 20 23 66 29 0a  t").        #f).
0ea0: 20 20 20 20 28 20 3b 20 22 50 6f 6c 69 73 68 22      ( ; "Polish"
0eb0: 0a 20 20 20 20 20 20 20 20 28 22 53 74 79 63 7a  .        ("Stycz
0ec0: 65 c5 84 22 20 20 20 20 20 20 20 22 4c 75 74 79  e.."       "Luty
0ed0: 22 20 20 20 20 20 20 20 20 20 22 4d 61 72 7a 65  "         "Marze
0ee0: 63 22 20 20 20 20 20 20 22 4b 77 69 65 63 69 65  c"      "Kwiecie
0ef0: c5 84 22 20 0a 20 20 20 20 20 20 20 20 20 22 4d  .." .         "M
0f00: 61 6a 22 20 20 20 20 20 20 20 20 20 20 20 22 43  aj"           "C
0f10: 7a 65 72 77 69 65 63 22 20 20 20 20 20 22 4c 69  zerwiec"     "Li
0f20: 70 69 65 63 22 20 20 20 20 20 20 22 53 69 65 72  piec"      "Sier
0f30: 70 69 65 c5 84 22 20 0a 20 20 20 20 20 20 20 20  pie.." .        
0f40: 20 22 57 72 7a 65 73 69 65 c5 84 22 20 20 20 20   "Wrzesie.."    
0f50: 20 20 22 50 61 c5 ba 64 7a 69 65 72 6e 69 6b 22    "Pa..dziernik"
0f60: 20 20 22 4c 69 73 74 6f 70 61 64 22 20 20 20 20    "Listopad"    
0f70: 22 47 72 75 64 7a 69 65 c5 84 22 29 0a 20 20 20  "Grudzie..").   
0f80: 20 20 20 20 20 28 22 50 6f 6e 69 65 64 7a 69 61       ("Poniedzia
0f90: c5 82 65 6b 22 20 20 22 57 74 6f 72 65 6b 22 20  ..ek"  "Wtorek" 
0fa0: 20 20 20 20 20 20 22 c5 9a 72 6f 64 61 22 20 20        "..roda"  
0fb0: 20 20 20 20 20 22 43 7a 77 61 72 74 65 6b 22 20       "Czwartek" 
0fc0: 0a 20 20 20 20 20 20 20 20 20 22 50 69 c4 85 74  .         "Pi..t
0fd0: 65 6b 22 20 20 20 20 20 20 20 20 22 53 6f 62 6f  ek"        "Sobo
0fe0: 74 61 22 20 20 20 20 20 20 20 22 4e 69 65 64 7a  ta"       "Niedz
0ff0: 69 65 6c 61 22 29 0a 20 20 20 20 20 20 20 20 23  iela").        #
1000: 66 29 0a 20 20 20 20 28 20 3b 20 22 52 75 73 73  f).    ( ; "Russ
1010: 69 61 6e 22 0a 20 20 20 20 20 20 20 20 28 22 d0  ian".        (".
1020: af d0 bd d0 b2 d0 b0 d1 80 d1 8c 22 20 20 20 20  ..........."    
1030: 20 20 20 20 22 d0 a4 d0 b5 d0 b2 d1 80 d0 b0 d0      "...........
1040: bb d1 8c 22 20 20 20 20 20 20 22 d0 9c d0 b0 d1  ..."      ".....
1050: 80 d1 82 22 20 20 20 20 20 20 20 20 22 d0 90 d0  ..."        "...
1060: bf d1 80 d0 b5 d0 bb d1 8c 22 20 0a 20 20 20 20  ........." .    
1070: 20 20 20 20 20 22 d0 9c d0 b0 d0 b9 22 20 20 20       "......"   
1080: 20 20 20 20 20 20 20 20 22 d0 98 d1 8e d0 bd d1          ".......
1090: 8c 22 20 20 20 20 20 20 20 20 20 22 d0 98 d1 8e  ."         "....
10a0: d0 bb d1 8c 22 20 20 20 20 20 20 20 20 22 d0 90  ...."        "..
10b0: d0 b2 d0 b3 d1 83 d1 81 d1 82 22 20 0a 20 20 20  .........." .   
10c0: 20 20 20 20 20 20 22 d0 a1 d0 b5 d0 bd d1 82 d1        ".........
10d0: 8f d0 b1 d1 80 d1 8c 22 20 20 20 20 20 20 22 d0  ......."      ".
10e0: 9e d0 ba d1 82 d1 8f d0 b1 d1 80 d1 8c 22 20 20  ............."  
10f0: 20 20 20 20 22 d0 9d d0 be d1 8f d0 b1 d1 80 d1      "...........
1100: 8c 22 20 20 20 20 20 20 22 d0 94 d0 b5 d0 ba d0  ."      ".......
1110: b0 d0 b1 d1 80 d1 8c 22 29 0a 20 20 20 20 20 20  .......").      
1120: 20 20 28 22 d0 9f d0 be d0 bd d0 b5 d0 b4 d0 b5    ("............
1130: d0 bb d1 8c d0 bd d0 b8 d0 ba 22 20 20 20 22 d0  .........."   ".
1140: 92 d1 82 d0 be d1 80 d0 bd d0 b8 d0 ba 22 20 20  ............."  
1150: 20 20 20 20 22 d0 a1 d1 80 d0 b5 d0 b4 d0 b0 22      ".........."
1160: 20 20 20 20 20 20 20 22 d0 a7 d0 b5 d1 82 d0 b2         "........
1170: d0 b5 d1 80 d0 b3 22 0a 20 20 20 20 20 20 20 20  ......".        
1180: 20 22 d0 9f d1 8f d1 82 d0 bd d0 b8 d1 86 d0 b0   "..............
1190: 22 20 20 20 20 20 20 20 22 d0 a1 d1 83 d0 b1 d0  "       ".......
11a0: b1 d0 be d1 82 d0 b0 22 20 20 20 20 20 20 22 d0  ......."      ".
11b0: 92 d0 be d1 81 d0 ba d1 80 d0 b5 d1 81 d0 b5 d0  ................
11c0: bd d1 8c d0 b5 22 29 0a 20 20 20 20 20 20 20 20  .....").        
11d0: 23 66 29 0a 20 20 20 20 28 20 3b 20 22 53 65 72  #f).    ( ; "Ser
11e0: 62 69 61 6e 20 6c 61 74 69 6e 22 0a 20 20 20 20  bian latin".    
11f0: 20 20 20 20 28 22 4a 61 6e 75 61 72 22 20 20 20      ("Januar"   
1200: 20 20 20 20 20 22 46 65 62 72 75 61 72 22 20 20       "Februar"  
1210: 20 20 20 20 22 4d 61 72 74 22 20 20 20 20 20 20      "Mart"      
1220: 20 20 22 41 70 72 69 6c 22 0a 20 20 20 20 20 20    "April".      
1230: 20 20 20 22 4d 61 6a 22 20 20 20 20 20 20 20 20     "Maj"        
1240: 20 20 20 22 4a 75 6e 22 20 20 20 20 20 20 20 20     "Jun"        
1250: 20 20 22 4a 75 6c 22 20 20 20 20 20 20 20 20 20    "Jul"         
1260: 22 41 76 67 75 73 74 22 0a 20 20 20 20 20 20 20  "Avgust".       
1270: 20 20 22 53 65 70 74 65 6d 62 61 72 22 20 20 20    "Septembar"   
1280: 20 20 22 4f 6b 74 6f 62 61 72 22 20 20 20 20 20    "Oktobar"     
1290: 20 22 4e 6f 76 65 6d 62 61 72 22 20 20 20 20 22   "Novembar"    "
12a0: 44 65 63 65 6d 62 61 72 22 29 0a 20 20 20 20 20  Decembar").     
12b0: 20 20 20 28 22 50 6f 6e 65 64 65 6c 6a 61 6b 22     ("Ponedeljak"
12c0: 20 20 20 20 22 55 74 6f 72 61 6b 22 20 20 20 20      "Utorak"    
12d0: 20 20 20 22 53 72 65 64 61 22 20 20 20 20 20 20     "Sreda"      
12e0: 20 22 c4 8c 65 74 76 72 74 61 6b 22 20 0a 20 20   "..etvrtak" .  
12f0: 20 20 20 20 20 20 20 22 50 65 74 61 6b 22 20 20         "Petak"  
1300: 20 20 20 20 20 20 20 22 53 75 62 6f 74 61 22 20         "Subota" 
1310: 20 20 20 20 20 20 22 4e 65 64 65 6c 6a 61 22 29        "Nedelja")
1320: 0a 20 20 20 20 20 20 20 20 23 66 29 0a 20 20 20  .        #f).   
1330: 20 28 20 3b 20 22 53 65 72 62 69 61 6e 20 63 79   ( ; "Serbian cy
1340: 72 69 6c 69 63 22 0a 20 20 20 20 20 20 20 20 28  rilic".        (
1350: 22 d0 88 d0 b0 d0 bd d1 83 d0 b0 d1 80 22 20 20  "............"  
1360: 20 20 20 20 20 20 22 d0 a4 d0 b5 d0 b1 d1 80 d1        ".........
1370: 83 d0 b0 d1 80 22 20 20 20 20 20 20 22 d0 9c d0  ....."      "...
1380: b0 d1 80 d1 82 22 20 20 20 20 20 20 20 20 22 d0  ....."        ".
1390: 90 d0 bf d1 80 d0 b8 d0 bb 22 0a 20 20 20 20 20  .........".     
13a0: 20 20 20 20 22 d0 9c d0 b0 d1 98 22 20 20 20 20      "......"    
13b0: 20 20 20 20 20 20 20 22 d0 88 d1 83 d0 bd 22 20         "......" 
13c0: 20 20 20 20 20 20 20 20 20 22 d0 88 d1 83 d0 bb           "......
13d0: 22 20 20 20 20 20 20 20 20 20 22 d0 90 d0 b2 d0  "         ".....
13e0: b3 d1 83 d1 81 d1 82 22 0a 20 20 20 20 20 20 20  .......".       
13f0: 20 20 22 d0 a1 d0 b5 d0 bf d1 82 d0 b5 d0 bc d0    ".............
1400: b1 d0 b0 d1 80 22 20 20 20 20 20 22 d0 9e d0 ba  ....."     "....
1410: d1 82 d0 be d0 b1 d0 b0 d1 80 22 20 20 20 20 20  .........."     
1420: 20 22 d0 9d d0 be d0 b2 d0 b5 d0 bc d0 b1 d0 b0   "..............
1430: d1 80 22 20 20 20 20 22 d0 94 d0 b5 d1 86 d0 b5  .."    "........
1440: d0 bc d0 b1 d0 b0 d1 80 22 29 0a 20 20 20 20 20  ........").     
1450: 20 20 20 28 22 d0 9f d0 be d0 bd d0 b5 d0 b4 d0     ("...........
1460: b5 d1 99 d0 b0 d0 ba 22 20 20 20 20 20 22 d0 a3  ......."     "..
1470: d1 82 d0 be d1 80 d0 b0 d0 ba 22 20 20 20 20 20  .........."     
1480: 20 20 22 d0 a1 d1 80 d0 b5 d0 b4 d0 b0 22 20 20    ".........."  
1490: 20 20 20 20 20 22 d0 a7 d0 b5 d1 82 d0 b2 d1 80       "..........
14a0: d1 82 d0 b0 d0 ba 22 0a 20 20 20 20 20 20 20 20  ......".        
14b0: 20 22 d0 9f d0 b5 d1 82 d0 b0 d0 ba 22 20 20 20   ".........."   
14c0: 20 20 20 20 20 20 22 d0 a1 d1 83 d0 b1 d0 be d1        ".........
14d0: 82 d0 b0 22 20 20 20 20 20 20 20 22 d0 9d d0 b5  ..."       "....
14e0: d0 b4 d0 b5 d1 99 d0 b0 22 29 0a 20 20 20 20 20  ........").     
14f0: 20 20 20 23 66 29 0a 20 20 20 20 28 20 3b 20 22     #f).    ( ; "
1500: 43 72 6f 61 74 69 61 6e 22 0a 20 20 20 20 20 20  Croatian".      
1510: 20 20 28 22 53 69 6a 65 c4 8d 61 6e 6a 22 20 20    ("Sije..anj"  
1520: 20 20 20 20 22 56 65 6c 6a 61 c4 8d 61 22 20 20      "Velja..a"  
1530: 20 20 20 20 22 4f c5 be 75 6a 61 6b 22 20 20 20      "O..ujak"   
1540: 20 20 20 22 54 72 61 76 61 6e 6a 22 0a 20 20 20     "Travanj".   
1550: 20 20 20 20 20 20 22 53 76 69 62 61 6e 6a 22 20        "Svibanj" 
1560: 20 20 20 20 20 20 22 4c 69 70 61 6e 6a 22 20 20        "Lipanj"  
1570: 20 20 20 20 20 22 53 72 70 61 6e 6a 22 20 20 20       "Srpanj"   
1580: 20 20 20 22 4b 6f 6c 6f 76 6f 7a 22 0a 20 20 20     "Kolovoz".   
1590: 20 20 20 20 20 20 22 52 75 6a 61 6e 22 20 20 20        "Rujan"   
15a0: 20 20 20 20 20 20 22 4c 69 73 74 6f 70 61 64 22        "Listopad"
15b0: 20 20 20 20 20 22 53 74 75 64 65 6e 69 22 20 20       "Studeni"  
15c0: 20 20 20 22 50 72 6f 73 69 6e 61 63 22 29 0a 20     "Prosinac"). 
15d0: 20 20 20 20 20 20 20 28 22 50 6f 6e 65 64 6a 65         ("Ponedje
15e0: 6c 6a 61 6b 22 20 20 20 22 55 74 6f 72 61 6b 22  ljak"   "Utorak"
15f0: 20 20 20 20 20 20 20 22 53 72 69 6a 65 64 61 22         "Srijeda"
1600: 20 20 20 20 20 22 c4 8c 65 74 76 72 74 61 6b 22       "..etvrtak"
1610: 20 0a 20 20 20 20 20 20 20 20 20 22 50 65 74 61   .         "Peta
1620: 6b 22 20 20 20 20 20 20 20 20 20 22 53 75 62 6f  k"         "Subo
1630: 74 61 22 20 20 20 20 20 20 20 22 4e 65 64 6a 65  ta"       "Nedje
1640: 6c 6a 61 22 29 0a 20 20 20 20 20 20 20 20 23 66  lja").        #f
1650: 29 0a 20 20 20 20 28 20 3b 20 22 53 6c 6f 76 65  ).    ( ; "Slove
1660: 6e 69 61 6e 22 0a 20 20 20 20 20 20 20 20 28 22  nian".        ("
1670: 4a 61 6e 75 61 72 22 20 20 20 20 20 20 20 20 22  Januar"        "
1680: 46 65 62 72 75 61 72 22 20 20 20 20 20 20 22 4d  Februar"      "M
1690: 61 72 65 63 22 20 20 20 20 20 20 20 22 41 70 72  arec"       "Apr
16a0: 69 6c 22 0a 20 20 20 20 20 20 20 20 20 22 4d 61  il".         "Ma
16b0: 6a 22 20 20 20 20 20 20 20 20 20 20 20 22 4a 75  j"           "Ju
16c0: 6e 69 6a 22 20 20 20 20 20 20 20 20 22 4a 75 6c  nij"        "Jul
16d0: 69 6a 22 20 20 20 20 20 20 20 22 41 76 67 75 73  ij"       "Avgus
16e0: 74 22 0a 20 20 20 20 20 20 20 20 20 22 53 65 70  t".         "Sep
16f0: 74 65 6d 62 65 72 22 20 20 20 20 20 22 4f 6b 74  tember"     "Okt
1700: 6f 62 65 72 22 20 20 20 20 20 20 22 4e 6f 76 65  ober"      "Nove
1710: 6d 62 65 72 22 20 20 20 20 22 44 65 63 65 6d 62  mber"    "Decemb
1720: 65 72 22 29 0a 20 20 20 20 20 20 20 20 28 22 50  er").        ("P
1730: 6f 6e 65 64 65 6c 6a 65 6b 22 20 20 20 20 22 54  onedeljek"    "T
1740: 6f 72 65 6b 22 20 20 20 20 20 20 20 20 22 53 72  orek"        "Sr
1750: 65 64 61 22 20 20 20 20 20 20 20 22 c4 8c 65 74  eda"       "..et
1760: 72 74 65 6b 22 20 0a 20 20 20 20 20 20 20 20 20  rtek" .         
1770: 22 50 65 74 65 6b 22 20 20 20 20 20 20 20 20 20  "Petek"         
1780: 22 53 6f 62 6f 74 61 22 20 20 20 20 20 20 20 22  "Sobota"       "
1790: 4e 65 64 65 6c 6a 61 22 29 0a 20 20 20 20 20 20  Nedelja").      
17a0: 20 20 23 66 29 0a 20 20 20 20 28 20 3b 20 22 4d    #f).    ( ; "M
17b0: 61 63 65 64 6f 6e 69 61 6e 22 0a 20 20 20 20 20  acedonian".     
17c0: 20 20 20 28 22 d0 9a d0 be d0 bb d0 be d0 b6 d0     ("...........
17d0: b5 d0 b3 22 20 20 20 20 20 20 20 22 d0 a1 d0 b5  ..."       "....
17e0: d1 87 d0 ba d0 be 22 20 20 20 20 20 20 20 20 22  ......"        "
17f0: d0 a6 d1 83 d1 82 d0 b0 d1 80 22 20 20 20 20 20  .........."     
1800: 20 20 22 d0 a2 d1 80 d0 b5 d0 b2 d0 b5 d0 bd 22    "............"
1810: 0a 20 20 20 20 20 20 20 20 20 22 d0 9a d0 be d1  .         ".....
1820: 81 d0 b0 d1 80 22 20 20 20 20 20 20 20 20 20 22  ....."         "
1830: d0 96 d0 b5 d1 82 d0 b2 d0 b0 d1 80 22 20 20 20  ............"   
1840: 20 20 20 20 22 d0 97 d0 bb d0 b0 d1 82 d0 b5 d1      "...........
1850: 86 22 20 20 20 20 20 20 22 d0 96 d0 b8 d1 82 d0  ."      ".......
1860: b0 d1 80 22 0a 20 20 20 20 20 20 20 20 20 22 d0  ...".         ".
1870: 93 d1 80 d0 be d0 b7 d0 b4 d0 be d0 b1 d0 b5 d1  ................
1880: 80 22 20 20 20 20 20 22 d0 9b d0 b8 d1 81 d1 82  ."     "........
1890: d0 be d0 bf d0 b0 d0 b4 22 20 20 20 20 20 22 d0  ........"     ".
18a0: a1 d1 82 d1 83 d0 b4 d0 b5 d0 bd 22 20 20 20 20  ..........."    
18b0: 20 20 22 d0 a1 d0 bd d0 b5 d0 b6 d0 bd d0 b8 d0    ".............
18c0: ba 22 29 0a 20 20 20 20 20 20 20 20 28 22 d0 9f  .").        ("..
18d0: d0 be d0 bd d0 b5 d0 b4 d0 b5 d0 bb d0 bd d0 b8  ................
18e0: d0 ba 22 20 20 20 20 22 d0 92 d1 82 d0 be d1 80  .."    "........
18f0: d0 bd d0 b8 d0 ba 22 20 20 20 20 20 20 22 d0 a1  ......"      "..
1900: d1 80 d0 b5 d0 b4 d0 b0 22 20 20 20 20 20 20 20  ........"       
1910: 22 d0 a7 d0 b5 d1 82 d0 b2 d1 80 d1 82 d0 be d0  "...............
1920: ba 22 0a 20 20 20 20 20 20 20 20 20 22 d0 9f d0  .".         "...
1930: b5 d1 82 d0 be d0 ba 22 20 20 20 20 20 20 20 20  ......."        
1940: 20 22 d0 a1 d0 b0 d0 b1 d0 be d1 82 d0 b0 22 20   "............" 
1950: 20 20 20 20 20 20 22 d0 9d d0 b5 d0 b4 d0 b5 d0        ".........
1960: bb d0 b0 22 29 0a 20 20 20 20 20 20 20 20 23 66  ...").        #f
1970: 29 0a 20 20 20 20 28 20 3b 20 22 53 77 65 64 69  ).    ( ; "Swedi
1980: 73 68 22 0a 20 20 20 20 20 20 20 20 28 22 4a 61  sh".        ("Ja
1990: 6e 75 61 72 69 22 20 20 20 20 20 20 20 22 46 65  nuari"       "Fe
19a0: 62 72 75 61 72 69 22 20 20 20 20 20 22 4d 61 72  bruari"     "Mar
19b0: 73 22 20 20 20 20 20 20 20 20 22 41 70 72 69 6c  s"        "April
19c0: 22 20 0a 20 20 20 20 20 20 20 20 20 22 4d 61 6a  " .         "Maj
19d0: 22 20 20 20 20 20 20 20 20 20 20 20 22 4a 75 6e  "           "Jun
19e0: 69 22 20 20 20 20 20 20 20 20 20 22 4a 75 6c 69  i"         "Juli
19f0: 22 20 20 20 20 20 20 20 20 22 41 75 67 75 73 74  "        "August
1a00: 69 22 20 0a 20 20 20 20 20 20 20 20 20 22 53 65  i" .         "Se
1a10: 70 74 65 6d 62 65 72 22 20 20 20 20 20 22 4f 6b  ptember"     "Ok
1a20: 74 6f 62 65 72 22 20 20 20 20 20 20 22 4e 6f 76  tober"      "Nov
1a30: 65 6d 62 65 72 22 20 20 20 20 22 44 65 63 65 6d  ember"    "Decem
1a40: 62 65 72 22 29 0a 20 20 20 20 20 20 20 20 28 22  ber").        ("
1a50: 4d c3 a5 6e 64 61 67 22 20 20 20 20 20 20 20 20  M..ndag"        
1a60: 22 54 69 73 64 61 67 22 20 20 20 20 20 20 20 22  "Tisdag"       "
1a70: 4f 6e 73 64 61 67 22 20 20 20 20 20 20 22 54 6f  Onsdag"      "To
1a80: 72 73 64 61 67 22 0a 20 20 20 20 20 20 20 20 20  rsdag".         
1a90: 22 46 72 65 64 61 67 22 20 20 20 20 20 20 20 20  "Fredag"        
1aa0: 22 4c c3 b6 72 64 61 67 22 20 20 20 20 20 20 20  "L..rdag"       
1ab0: 22 53 c3 b6 6e 64 61 67 22 29 0a 20 20 20 20 20  "S..ndag").     
1ac0: 20 20 20 23 66 29 0a 20 20 20 20 28 20 3b 20 22     #f).    ( ; "
1ad0: 43 61 74 61 6c 61 6e 22 0a 20 20 20 20 20 20 20  Catalan".       
1ae0: 20 28 22 47 65 6e 65 72 22 20 20 20 20 20 20 20   ("Gener"       
1af0: 20 20 22 46 65 62 72 65 72 22 20 20 20 20 20 20    "Febrer"      
1b00: 20 22 4d 61 72 c3 a7 22 20 20 20 20 20 20 20 20   "Mar.."        
1b10: 22 41 62 72 69 6c 22 20 0a 20 20 20 20 20 20 20  "Abril" .       
1b20: 20 20 22 4d 61 69 67 22 20 20 20 20 20 20 20 20    "Maig"        
1b30: 20 20 22 4a 75 6e 79 22 20 20 20 20 20 20 20 20    "Juny"        
1b40: 20 22 4a 75 6c 69 6f 6c 22 20 20 20 20 20 20 22   "Juliol"      "
1b50: 41 67 6f 73 74 22 20 0a 20 20 20 20 20 20 20 20  Agost" .        
1b60: 20 22 53 65 74 65 6d 62 72 65 22 20 20 20 20 20   "Setembre"     
1b70: 20 22 4f 63 74 75 62 72 65 22 20 20 20 20 20 20   "Octubre"      
1b80: 22 4e 6f 76 65 6d 62 72 65 22 20 20 20 20 22 44  "Novembre"    "D
1b90: 65 73 65 6d 62 72 65 22 29 0a 20 20 20 20 20 20  esembre").      
1ba0: 20 20 28 22 44 69 6c 6c 75 6e 73 22 20 20 20 20    ("Dilluns"    
1bb0: 20 20 20 22 44 69 6d 61 72 74 73 22 20 20 20 20     "Dimarts"    
1bc0: 20 20 22 44 69 6d 65 63 72 65 73 22 20 20 20 20    "Dimecres"    
1bd0: 22 44 69 6a 6f 75 73 22 0a 20 20 20 20 20 20 20  "Dijous".       
1be0: 20 20 22 44 69 76 65 6e 64 72 65 73 22 20 20 20    "Divendres"   
1bf0: 20 20 22 44 69 73 73 61 62 74 65 22 20 20 20 20    "Dissabte"    
1c00: 20 22 44 69 75 6d 65 6e 67 65 22 29 0a 20 20 20   "Diumenge").   
1c10: 20 20 20 20 20 28 22 44 4c 22 20 22 44 54 22 20       ("DL" "DT" 
1c20: 22 44 43 22 20 22 44 4a 22 20 22 44 56 22 20 22  "DC" "DJ" "DV" "
1c30: 44 53 22 20 22 44 47 22 29 29 0a 20 20 20 20 29  DS" "DG")).    )
1c40: 29 0a 0a 3b 3b 20 50 65 72 66 6f 72 6d 20 61 20  )..;; Perform a 
1c50: 63 72 75 64 65 20 73 65 61 72 63 68 20 66 6f 72  crude search for
1c60: 20 74 68 65 20 6c 61 72 67 65 73 74 20 66 6f 6e   the largest fon
1c70: 74 20 74 68 61 74 20 77 69 6c 6c 20 66 69 74 20  t that will fit 
1c80: 77 69 74 68 69 6e 0a 3b 3b 20 74 68 65 20 63 65  within.;; the ce
1c90: 6c 6c 20 28 74 68 69 73 20 61 6c 67 6f 72 69 74  ll (this algorit
1ca0: 68 6d 20 63 6f 75 6c 64 20 62 65 20 62 65 74 74  hm could be bett
1cb0: 65 72 21 29 0a 3b 0a 28 64 65 66 69 6e 65 20 28  er!).;.(define (
1cc0: 73 67 2d 63 61 6c 65 6e 64 61 72 2d 63 61 6c 63  sg-calendar-calc
1cd0: 2d 66 6f 6e 74 73 69 7a 65 20 74 65 78 74 20 66  -fontsize text f
1ce0: 6f 6e 74 20 66 6f 6e 74 73 69 7a 65 25 20 77 69  ont fontsize% wi
1cf0: 64 74 68 20 68 65 69 67 68 74 29 0a 20 20 28 6c  dth height).  (l
1d00: 65 74 2a 20 28 28 66 6f 6e 74 73 69 7a 65 20 36  et* ((fontsize 6
1d10: 29 20 3b 3b 20 6d 69 6e 69 6d 75 6d 20 70 6f 73  ) ;; minimum pos
1d20: 73 69 62 6c 65 20 66 6f 6e 74 73 69 7a 65 0a 20  sible fontsize. 
1d30: 20 20 20 20 20 20 20 20 28 65 78 74 65 6e 74 73          (extents
1d40: 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 28   nil).         (
1d50: 6c 61 73 74 2d 65 78 74 65 6e 74 73 20 6e 69 6c  last-extents nil
1d60: 29 0a 20 20 20 20 20 20 20 20 20 28 6c 61 73 74  ).         (last
1d70: 2d 66 6f 6e 74 73 69 7a 65 20 33 29 0a 20 20 20  -fontsize 3).   
1d80: 20 20 20 20 20 20 28 61 64 6a 75 73 74 20 32 29        (adjust 2)
1d90: 20 29 0a 20 20 20 20 28 73 65 74 21 20 65 78 74   ).    (set! ext
1da0: 65 6e 74 73 20 28 67 69 6d 70 2d 74 65 78 74 2d  ents (gimp-text-
1db0: 67 65 74 2d 65 78 74 65 6e 74 73 2d 66 6f 6e 74  get-extents-font
1dc0: 6e 61 6d 65 20 74 65 78 74 20 66 6f 6e 74 73 69  name text fontsi
1dd0: 7a 65 20 50 49 58 45 4c 53 20 66 6f 6e 74 29 29  ze PIXELS font))
1de0: 0a 20 20 20 20 28 73 65 74 21 20 77 69 64 74 68  .    (set! width
1df0: 20 28 2a 20 77 69 64 74 68 20 66 6f 6e 74 73 69   (* width fontsi
1e00: 7a 65 25 20 30 2e 30 31 29 29 0a 20 20 20 20 28  ze% 0.01)).    (
1e10: 73 65 74 21 20 68 65 69 67 68 74 20 28 2a 20 68  set! height (* h
1e20: 65 69 67 68 74 20 66 6f 6e 74 73 69 7a 65 25 20  eight fontsize% 
1e30: 30 2e 30 31 29 29 0a 20 20 20 20 28 77 68 69 6c  0.01)).    (whil
1e40: 65 20 28 61 6e 64 20 28 3c 3e 20 6c 61 73 74 2d  e (and (<> last-
1e50: 66 6f 6e 74 73 69 7a 65 20 66 6f 6e 74 73 69 7a  fontsize fontsiz
1e60: 65 29 20 28 6e 6f 74 20 28 65 71 75 61 6c 3f 20  e) (not (equal? 
1e70: 65 78 74 65 6e 74 73 20 6c 61 73 74 2d 65 78 74  extents last-ext
1e80: 65 6e 74 73 29 29 29 0a 20 20 20 20 20 20 28 69  ents))).      (i
1e90: 66 20 28 6f 72 20 28 3e 20 28 63 61 72 20 65 78  f (or (> (car ex
1ea0: 74 65 6e 74 73 29 20 77 69 64 74 68 29 20 28 3e  tents) width) (>
1eb0: 20 28 63 61 64 72 20 65 78 74 65 6e 74 73 29 20   (cadr extents) 
1ec0: 68 65 69 67 68 74 29 29 0a 20 20 20 20 20 20 20  height)).       
1ed0: 20 28 62 65 67 69 6e 20 0a 20 20 20 20 20 20 20   (begin .       
1ee0: 20 20 20 28 73 65 74 21 20 66 6f 6e 74 73 69 7a     (set! fontsiz
1ef0: 65 20 6c 61 73 74 2d 66 6f 6e 74 73 69 7a 65 29  e last-fontsize)
1f00: 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 21  .          (set!
1f10: 20 61 64 6a 75 73 74 20 28 2b 20 28 2a 20 28 2d   adjust (+ (* (-
1f20: 20 61 64 6a 75 73 74 20 31 29 20 30 2e 35 29 20   adjust 1) 0.5) 
1f30: 31 29 29 20 29 0a 20 20 20 20 20 20 20 20 28 62  1)) ).        (b
1f40: 65 67 69 6e 0a 20 20 20 20 20 20 20 20 20 20 28  egin.          (
1f50: 73 65 74 21 20 6c 61 73 74 2d 65 78 74 65 6e 74  set! last-extent
1f60: 73 20 65 78 74 65 6e 74 73 29 0a 20 20 20 20 20  s extents).     
1f70: 20 20 20 20 20 28 73 65 74 21 20 6c 61 73 74 2d       (set! last-
1f80: 66 6f 6e 74 73 69 7a 65 20 66 6f 6e 74 73 69 7a  fontsize fontsiz
1f90: 65 29 20 29 20 29 0a 20 20 20 20 20 20 28 73 65  e) ) ).      (se
1fa0: 74 21 20 66 6f 6e 74 73 69 7a 65 20 28 74 72 75  t! fontsize (tru
1fb0: 6e 63 61 74 65 20 28 2a 20 66 6f 6e 74 73 69 7a  ncate (* fontsiz
1fc0: 65 20 61 64 6a 75 73 74 29 29 29 0a 20 20 20 20  e adjust))).    
1fd0: 20 20 28 73 65 74 21 20 65 78 74 65 6e 74 73 20    (set! extents 
1fe0: 28 67 69 6d 70 2d 74 65 78 74 2d 67 65 74 2d 65  (gimp-text-get-e
1ff0: 78 74 65 6e 74 73 2d 66 6f 6e 74 6e 61 6d 65 20  xtents-fontname 
2000: 74 65 78 74 20 66 6f 6e 74 73 69 7a 65 20 50 49  text fontsize PI
2010: 58 45 4c 53 20 66 6f 6e 74 29 29 20 29 0a 20 20  XELS font)) ).  
2020: 20 20 28 6d 61 78 20 66 6f 6e 74 73 69 7a 65 20    (max fontsize 
2030: 36 29 20 29 20 29 0a 20 20 0a 0a 28 64 65 66 69  6) ) ).  ..(defi
2040: 6e 65 20 28 73 63 72 69 70 74 2d 66 75 2d 73 67  ne (script-fu-sg
2050: 2d 63 61 6c 65 6e 64 61 72 20 69 6d 61 67 65 20  -calendar image 
2060: 64 72 61 77 61 62 6c 65 20 6c 61 6e 67 20 6d 6f  drawable lang mo
2070: 6e 74 68 20 79 65 61 72 20 73 75 6e 64 61 79 3f  nth year sunday?
2080: 20 0a 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 20 20 20 20 20 20                  
20a0: 20 6c 65 74 74 65 72 73 2d 69 6e 2d 64 61 79 20   letters-in-day 
20b0: 6c 61 79 6f 75 74 20 74 65 78 74 2d 66 6f 6e 74  layout text-font
20c0: 20 6e 75 6d 62 65 72 2d 66 6f 6e 74 20 0a 20 20   number-font .  
20d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 6e               fon
20f0: 74 73 69 7a 65 25 20 6a 75 73 74 69 66 79 3f 20  tsize% justify? 
2100: 62 6f 72 64 65 72 20 62 6f 72 64 65 72 2d 63 6f  border border-co
2110: 6c 6f 72 20 67 72 61 76 69 74 79 29 0a 20 20 3b  lor gravity).  ;
2120: 3b 20 27 6c 65 61 70 2d 79 65 61 72 27 20 72 65  ; 'leap-year' re
2130: 74 75 72 6e 73 20 6f 6e 65 20 69 66 20 67 69 76  turns one if giv
2140: 65 6e 20 79 65 61 72 20 69 73 20 61 20 6c 65 61  en year is a lea
2150: 70 20 79 65 61 72 2c 20 65 6c 73 65 20 7a 65 72  p year, else zer
2160: 6f 0a 20 20 3b 0a 20 20 28 64 65 66 69 6e 65 20  o.  ;.  (define 
2170: 28 6c 65 61 70 2d 79 65 61 72 20 79 79 29 20 0a  (leap-year yy) .
2180: 20 20 20 20 28 69 66 20 28 3d 20 28 6d 6f 64 75      (if (= (modu
2190: 6c 6f 20 79 79 20 34 29 20 30 29 0a 20 20 20 20  lo yy 4) 0).    
21a0: 20 20 28 69 66 20 20 28 6f 72 20 28 3e 20 28 6d    (if  (or (> (m
21b0: 6f 64 75 6c 6f 20 79 79 20 31 30 30 29 20 30 29  odulo yy 100) 0)
21c0: 20 28 3d 20 28 6d 6f 64 75 6c 6f 20 79 79 20 34   (= (modulo yy 4
21d0: 30 30 29 20 30 29 29 0a 20 20 20 20 20 20 20 20  00) 0)).        
21e0: 31 0a 20 20 20 20 20 20 20 20 30 20 29 0a 20 20  1.        0 ).  
21f0: 20 20 20 20 30 20 29 20 29 0a 0a 20 20 3b 3b 20      0 ) )..  ;; 
2200: 47 69 76 65 6e 20 61 20 47 72 65 67 6f 72 69 61  Given a Gregoria
2210: 6e 20 64 61 74 65 2c 20 74 68 65 20 66 6f 6c 6c  n date, the foll
2220: 6f 77 69 6e 67 20 63 6f 6d 70 75 74 65 73 20 74  owing computes t
2230: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 64 61 79  he number of day
2240: 73 20 74 68 61 74 20 68 61 76 65 20 65 6c 61 70  s that have elap
2250: 73 65 64 20 73 69 6e 63 65 0a 20 20 3b 3b 20 4d  sed since.  ;; M
2260: 61 72 63 68 20 31 73 74 2c 20 30 30 30 30 2e 20  arch 1st, 0000. 
2270: 54 68 69 73 20 64 61 74 65 20 69 73 20 63 68 6f  This date is cho
2280: 73 65 6e 20 61 73 20 61 6e 20 61 62 73 6f 6c 75  sen as an absolu
2290: 74 65 20 72 65 66 65 72 65 6e 63 65 0a 20 20 3b  te reference.  ;
22a0: 3b 20 73 6f 20 74 68 61 74 20 6c 65 61 70 20 64  ; so that leap d
22b0: 61 79 73 20 6f 63 63 75 72 20 61 74 20 74 68 65  ays occur at the
22c0: 20 22 65 6e 64 20 6f 66 20 74 68 65 20 79 65 61   "end of the yea
22d0: 72 22 20 28 73 69 6d 70 6c 69 66 79 69 6e 67 20  r" (simplifying 
22e0: 0a 20 20 3b 3b 20 63 61 6c 63 75 6c 61 74 69 6f  .  ;; calculatio
22f0: 6e 73 29 2e 20 46 6f 72 20 6c 61 63 6b 20 6f 66  ns). For lack of
2300: 20 61 20 62 65 74 74 65 72 20 6e 61 6d 65 2c 20   a better name, 
2310: 49 20 73 68 61 6c 6c 20 63 61 6c 6c 20 74 68 69  I shall call thi
2320: 73 20 61 0a 20 20 3b 3b 20 22 6d 61 72 74 69 75  s a.  ;; "martiu
2330: 73 20 64 61 74 65 22 20 61 66 74 65 72 20 74 68  s date" after th
2340: 65 20 52 6f 6d 61 6e 20 77 6f 72 64 20 66 6f 72  e Roman word for
2350: 20 74 68 65 20 6d 6f 6e 74 68 20 6f 66 20 4d 61   the month of Ma
2360: 72 63 68 2e 0a 20 20 3b 0a 20 20 28 64 65 66 69  rch..  ;.  (defi
2370: 6e 65 20 28 67 72 65 67 6f 72 69 61 6e 2d 3e 6d  ne (gregorian->m
2380: 61 72 74 69 75 73 20 79 79 20 6d 6d 20 64 64 29  artius yy mm dd)
2390: 0a 20 20 20 20 28 73 65 74 21 20 6d 6d 20 28 6d  .    (set! mm (m
23a0: 6f 64 75 6c 6f 20 28 2b 20 6d 6d 20 39 29 20 31  odulo (+ mm 9) 1
23b0: 32 29 29 0a 20 20 20 20 28 73 65 74 21 20 79 79  2)).    (set! yy
23c0: 20 28 2d 20 79 79 20 28 74 72 75 6e 63 61 74 65   (- yy (truncate
23d0: 20 28 2f 20 6d 6d 20 31 30 29 29 29 29 0a 20 20   (/ mm 10)))).  
23e0: 20 20 28 69 6e 65 78 61 63 74 2d 3e 65 78 61 63    (inexact->exac
23f0: 74 20 28 2b 20 28 74 72 75 6e 63 20 28 2a 20 33  t (+ (trunc (* 3
2400: 36 35 20 79 79 29 29 20 0a 20 20 20 20 20 20 20  65 yy)) .       
2410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2420: 28 74 72 75 6e 63 20 28 2f 20 79 79 20 34 29 29  (trunc (/ yy 4))
2430: 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
2440: 20 20 20 20 20 20 20 20 20 28 2d 20 28 74 72 75           (- (tru
2450: 6e 63 20 28 2f 20 79 79 20 31 30 30 29 29 29 20  nc (/ yy 100))) 
2460: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2470: 20 20 20 20 20 20 20 20 28 74 72 75 6e 63 20 28          (trunc (
2480: 2f 20 79 79 20 34 30 30 29 29 20 0a 20 20 20 20  / yy 400)) .    
2490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a0: 20 20 20 28 72 6f 75 6e 64 20 28 2a 20 6d 6d 20     (round (* mm 
24b0: 33 30 2e 36 29 29 20 64 64 20 2d 31 20 29 29 20  30.6)) dd -1 )) 
24c0: 29 0a 0a 20 20 3b 3b 20 47 69 76 65 6e 20 61 20  )..  ;; Given a 
24d0: 47 72 65 67 6f 72 69 61 6e 20 64 61 74 65 2c 20  Gregorian date, 
24e0: 72 65 74 75 72 6e 20 74 68 65 20 64 61 79 20 6f  return the day o
24f0: 66 20 74 68 65 20 77 65 65 6b 20 28 30 3d 53 75  f the week (0=Su
2500: 6e 64 61 79 2c 20 31 3d 4d 6f 6e 64 61 79 2c 2e  nday, 1=Monday,.
2510: 2e 2e 29 0a 20 20 3b 0a 20 20 28 64 65 66 69 6e  ..).  ;.  (defin
2520: 65 20 28 64 61 79 2d 6f 66 2d 77 65 65 6b 20 79  e (day-of-week y
2530: 79 20 6d 6d 20 64 64 29 0a 20 20 20 20 28 6d 6f  y mm dd).    (mo
2540: 64 75 6c 6f 20 28 2b 20 28 67 72 65 67 6f 72 69  dulo (+ (gregori
2550: 61 6e 2d 3e 6d 61 72 74 69 75 73 20 79 79 20 6d  an->martius yy m
2560: 6d 20 64 64 29 20 33 29 20 37 29 20 29 0a 0a 20  m dd) 3) 7) ).. 
2570: 20 3b 3b 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e   ;; The followin
2580: 67 20 63 6f 6e 76 65 72 74 73 20 66 72 6f 6d 20  g converts from 
2590: 61 6e 20 61 62 73 6f 6c 75 74 65 20 6e 75 6d 62  an absolute numb
25a0: 65 72 20 6f 66 20 64 61 79 73 20 73 69 6e 63 65  er of days since
25b0: 20 0a 20 20 3b 3b 20 4d 61 72 63 68 20 31 73 74   .  ;; March 1st
25c0: 2c 20 30 30 30 30 20 28 69 2e 65 2e 2c 20 61 20  , 0000 (i.e., a 
25d0: 22 6d 61 72 74 69 75 73 20 64 61 74 65 22 29 20  "martius date") 
25e0: 74 6f 20 61 20 47 72 65 67 6f 72 69 61 6e 20 64  to a Gregorian d
25f0: 61 74 65 0a 20 20 3b 3b 20 41 20 6c 69 73 74 20  ate.  ;; A list 
2600: 69 73 20 72 65 74 75 72 6e 65 64 20 63 6f 6e 74  is returned cont
2610: 61 69 6e 69 6e 67 20 27 28 79 65 61 72 20 6d 6f  aining '(year mo
2620: 6e 74 68 20 64 61 79 29 0a 20 20 3b 0a 20 20 28  nth day).  ;.  (
2630: 64 65 66 69 6e 65 20 28 6d 61 72 74 69 75 73 2d  define (martius-
2640: 3e 67 72 65 67 6f 72 69 61 6e 20 6d 64 61 79 73  >gregorian mdays
2650: 29 0a 20 20 20 20 28 6c 65 74 2a 20 28 28 79 79  ).    (let* ((yy
2660: 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 28   0).           (
2670: 6d 6d 20 30 29 0a 20 20 20 20 20 20 20 20 20 20  mm 0).          
2680: 20 28 6d 69 20 30 29 0a 20 20 20 20 20 20 20 20   (mi 0).        
2690: 20 20 20 28 64 64 20 30 29 20 29 0a 20 20 20 20     (dd 0) ).    
26a0: 20 20 28 73 65 74 21 20 79 79 20 28 74 72 75 6e    (set! yy (trun
26b0: 63 61 74 65 20 28 2b 20 28 2f 20 6d 64 61 79 73  cate (+ (/ mdays
26c0: 20 33 36 35 2e 32 34 32 35 29 20 28 2f 20 31 2e   365.2425) (/ 1.
26d0: 34 37 38 30 20 33 36 35 2e 32 34 32 35 29 29 29  4780 365.2425)))
26e0: 29 0a 20 20 20 20 20 20 28 73 65 74 21 20 64 64  ).      (set! dd
26f0: 20 28 2d 20 6d 64 61 79 73 20 28 74 72 75 6e 63   (- mdays (trunc
2700: 61 74 65 20 28 2a 20 79 79 20 33 36 35 2e 32 34  ate (* yy 365.24
2710: 32 35 29 29 29 29 0a 20 20 20 20 20 20 28 77 68  25)))).      (wh
2720: 65 6e 20 28 3c 20 64 64 20 30 29 0a 20 20 20 20  en (< dd 0).    
2730: 20 20 20 20 28 73 65 74 21 20 79 79 20 28 2d 20      (set! yy (- 
2740: 79 79 20 31 29 29 0a 20 20 20 20 20 20 20 20 28  yy 1)).        (
2750: 73 65 74 21 20 64 64 20 28 2d 20 6d 64 61 79 73  set! dd (- mdays
2760: 20 28 74 72 75 6e 63 61 74 65 20 28 2a 20 79 79   (truncate (* yy
2770: 20 33 36 35 2e 32 34 32 35 29 29 29 29 20 29 0a   365.2425)))) ).
2780: 20 20 20 20 20 20 28 73 65 74 21 20 6d 69 20 28        (set! mi (
2790: 69 6e 65 78 61 63 74 2d 3e 65 78 61 63 74 20 28  inexact->exact (
27a0: 74 72 75 6e 63 61 74 65 20 28 2f 20 28 2b 20 30  truncate (/ (+ 0
27b0: 2e 35 32 20 64 64 29 20 33 30 2e 36 30 29 29 29  .52 dd) 30.60)))
27c0: 29 0a 20 20 20 20 20 20 28 73 65 74 21 20 6d 6d  ).      (set! mm
27d0: 20 28 2b 20 28 6d 6f 64 75 6c 6f 20 28 2b 20 6d   (+ (modulo (+ m
27e0: 69 20 32 29 20 31 32 29 20 31 29 29 0a 20 20 20  i 2) 12) 1)).   
27f0: 20 20 20 28 73 65 74 21 20 79 79 20 28 2b 20 79     (set! yy (+ y
2800: 79 20 28 74 72 75 6e 63 61 74 65 20 28 2f 20 28  y (truncate (/ (
2810: 2b 20 6d 69 20 32 29 20 31 32 29 29 29 29 0a 20  + mi 2) 12)))). 
2820: 20 20 20 20 20 28 73 65 74 21 20 64 64 20 28 2b       (set! dd (+
2830: 20 28 2d 20 64 64 20 28 72 6f 75 6e 64 20 28 2a   (- dd (round (*
2840: 20 6d 69 20 33 30 2e 36 29 29 29 20 31 29 29 0a   mi 30.6))) 1)).
2850: 20 20 20 20 20 20 28 6c 69 73 74 20 79 79 20 6d        (list yy m
2860: 6d 20 64 64 29 20 29 20 29 0a 0a 20 20 3b 3b 20  m dd) ) )..  ;; 
2870: 43 72 65 61 74 65 20 61 20 6c 69 73 74 20 6f 66  Create a list of
2880: 20 66 6c 6f 61 74 73 20 65 76 65 6e 6c 79 20 64   floats evenly d
2890: 69 73 74 72 69 62 75 74 65 64 20 62 65 74 77 65  istributed betwe
28a0: 65 6e 20 73 74 61 72 74 20 61 6e 64 20 65 6e 64  en start and end
28b0: 0a 20 20 3b 0a 20 20 28 64 65 66 69 6e 65 20 28  .  ;.  (define (
28c0: 61 6c 67 65 62 72 61 69 63 2d 70 72 6f 67 20 73  algebraic-prog s
28d0: 74 61 72 74 20 65 6e 64 20 65 6c 65 6d 65 6e 74  tart end element
28e0: 73 29 0a 20 20 20 20 28 6c 65 74 20 28 28 65 6c  s).    (let ((el
28f0: 65 6d 65 6e 74 73 20 28 69 6e 65 78 61 63 74 2d  ements (inexact-
2900: 3e 65 78 61 63 74 20 65 6c 65 6d 65 6e 74 73 29  >exact elements)
2910: 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 6e 63  ).          (inc
2920: 72 20 28 69 66 20 28 7a 65 72 6f 3f 20 73 74 61  r (if (zero? sta
2930: 72 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  rt).            
2940: 20 20 20 20 20 20 28 2f 20 65 6e 64 20 28 2d 20        (/ end (- 
2950: 65 6c 65 6d 65 6e 74 73 20 31 29 29 0a 20 20 20  elements 1)).   
2960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
2970: 2f 20 28 2d 20 28 2f 20 65 6e 64 20 73 74 61 72  / (- (/ end star
2980: 74 29 20 31 29 20 28 2d 20 65 6c 65 6d 65 6e 74  t) 1) (- element
2990: 73 20 31 29 29 20 29 20 29 20 29 0a 20 20 20 20  s 1)) ) ) ).    
29a0: 20 20 28 6c 65 74 20 0a 20 20 20 20 20 20 20 20    (let .        
29b0: 6c 6f 6f 70 20 28 28 63 6e 74 20 28 2d 20 65 6c  loop ((cnt (- el
29c0: 65 6d 65 6e 74 73 20 31 29 29 0a 20 20 20 20 20  ements 1)).     
29d0: 20 20 20 20 20 20 20 20 20 28 6c 69 73 20 28 69           (lis (i
29e0: 66 20 28 7a 65 72 6f 3f 20 73 74 61 72 74 29 0a  f (zero? start).
29f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a00: 20 20 20 20 20 27 28 30 29 0a 20 20 20 20 20 20       '(0).      
2a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27                 '
2a20: 28 31 29 20 29 20 29 20 29 0a 20 20 20 20 20 20  (1) ) ) ).      
2a30: 20 20 28 69 66 20 28 7a 65 72 6f 3f 20 63 6e 74    (if (zero? cnt
2a40: 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20  ).          (if 
2a50: 28 7a 65 72 6f 3f 20 73 74 61 72 74 29 0a 20 20  (zero? start).  
2a60: 20 20 20 20 20 20 20 20 20 20 28 72 65 76 65 72            (rever
2a70: 73 65 20 6c 69 73 29 0a 20 20 20 20 20 20 20 20  se lis).        
2a80: 20 20 20 20 28 6d 61 70 20 2a 20 28 72 65 76 65      (map * (reve
2a90: 72 73 65 20 6c 69 73 29 20 28 6d 61 6b 65 2d 6c  rse lis) (make-l
2aa0: 69 73 74 20 65 6c 65 6d 65 6e 74 73 20 73 74 61  ist elements sta
2ab0: 72 74 29 29 20 29 0a 20 20 20 20 20 20 20 20 20  rt)) ).         
2ac0: 20 28 6c 6f 6f 70 20 28 2d 20 63 6e 74 20 31 29   (loop (- cnt 1)
2ad0: 20 28 63 6f 6e 73 20 28 2b 20 28 63 61 72 20 6c   (cons (+ (car l
2ae0: 69 73 29 20 69 6e 63 72 29 20 6c 69 73 29 29 20  is) incr) lis)) 
2af0: 29 20 29 20 29 20 29 0a 0a 20 20 3b 3b 20 43 72  ) ) ) )..  ;; Cr
2b00: 65 61 74 65 20 61 20 66 72 61 6d 65 20 6c 61 79  eate a frame lay
2b10: 65 72 20 66 6f 72 20 61 20 63 65 6c 6c 0a 20 20  er for a cell.  
2b20: 3b 0a 20 20 28 64 65 66 69 6e 65 20 28 63 72 65  ;.  (define (cre
2b30: 61 74 65 2d 63 65 6c 6c 2d 66 72 61 6d 65 20 78  ate-cell-frame x
2b40: 20 79 20 77 20 68 29 0a 20 20 20 20 28 6c 65 74   y w h).    (let
2b50: 2a 20 28 28 66 72 61 6d 65 2d 6c 61 79 65 72 20  * ((frame-layer 
2b60: 28 63 61 72 20 28 67 69 6d 70 2d 6c 61 79 65 72  (car (gimp-layer
2b70: 2d 6e 65 77 20 69 6d 61 67 65 20 0a 20 20 20 20  -new image .    
2b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ba0: 20 20 20 20 20 20 20 20 20 77 20 68 20 0a 20 20           w h .  
2bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bd0: 20 20 20 20 20 20 20 20 20 20 20 52 47 42 41 2d             RGBA-
2be0: 49 4d 41 47 45 20 22 43 65 6c 6c 20 23 31 22 20  IMAGE "Cell #1" 
2bf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 30                10
2c20: 30 20 4e 4f 52 4d 41 4c 2d 4d 4f 44 45 20 29 29  0 NORMAL-MODE ))
2c30: 29 20 29 0a 20 20 20 20 20 20 28 67 69 6d 70 2d  ) ).      (gimp-
2c40: 64 72 61 77 61 62 6c 65 2d 66 69 6c 6c 20 66 72  drawable-fill fr
2c50: 61 6d 65 2d 6c 61 79 65 72 20 54 52 41 4e 53 50  ame-layer TRANSP
2c60: 41 52 45 4e 54 2d 46 49 4c 4c 29 0a 20 20 20 20  ARENT-FILL).    
2c70: 20 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 61 64    (gimp-image-ad
2c80: 64 2d 6c 61 79 65 72 20 69 6d 61 67 65 20 66 72  d-layer image fr
2c90: 61 6d 65 2d 6c 61 79 65 72 20 2d 31 29 0a 20 20  ame-layer -1).  
2ca0: 20 20 20 20 28 67 69 6d 70 2d 6c 61 79 65 72 2d      (gimp-layer-
2cb0: 73 65 74 2d 6f 66 66 73 65 74 73 20 66 72 61 6d  set-offsets fram
2cc0: 65 2d 6c 61 79 65 72 20 78 20 79 29 0a 20 20 20  e-layer x y).   
2cd0: 20 20 20 28 67 69 6d 70 2d 72 65 63 74 2d 73 65     (gimp-rect-se
2ce0: 6c 65 63 74 20 69 6d 61 67 65 20 28 2b 20 78 20  lect image (+ x 
2cf0: 62 6f 72 64 65 72 29 20 28 2b 20 79 20 62 6f 72  border) (+ y bor
2d00: 64 65 72 29 20 28 2d 20 77 20 28 2a 20 32 20 62  der) (- w (* 2 b
2d10: 6f 72 64 65 72 29 29 20 28 2d 20 68 20 28 2a 20  order)) (- h (* 
2d20: 32 20 62 6f 72 64 65 72 29 29 20 43 48 41 4e 4e  2 border)) CHANN
2d30: 45 4c 2d 4f 50 2d 52 45 50 4c 41 43 45 20 46 41  EL-OP-REPLACE FA
2d40: 4c 53 45 20 30 29 0a 20 20 20 20 20 20 28 67 69  LSE 0).      (gi
2d50: 6d 70 2d 73 65 6c 65 63 74 69 6f 6e 2d 69 6e 76  mp-selection-inv
2d60: 65 72 74 20 69 6d 61 67 65 29 0a 20 20 20 20 20  ert image).     
2d70: 20 28 67 69 6d 70 2d 63 6f 6e 74 65 78 74 2d 73   (gimp-context-s
2d80: 65 74 2d 62 61 63 6b 67 72 6f 75 6e 64 20 62 6f  et-background bo
2d90: 72 64 65 72 2d 63 6f 6c 6f 72 29 0a 20 20 20 20  rder-color).    
2da0: 20 20 28 67 69 6d 70 2d 65 64 69 74 2d 66 69 6c    (gimp-edit-fil
2db0: 6c 20 66 72 61 6d 65 2d 6c 61 79 65 72 20 42 41  l frame-layer BA
2dc0: 43 4b 47 52 4f 55 4e 44 2d 46 49 4c 4c 29 0a 20  CKGROUND-FILL). 
2dd0: 20 20 20 20 20 28 67 69 6d 70 2d 73 65 6c 65 63       (gimp-selec
2de0: 74 69 6f 6e 2d 6e 6f 6e 65 20 69 6d 61 67 65 29  tion-none image)
2df0: 0a 20 20 20 20 20 20 66 72 61 6d 65 2d 6c 61 79  .      frame-lay
2e00: 65 72 20 29 20 29 0a 20 20 0a 20 20 3b 3b 20 43  er ) ).  .  ;; C
2e10: 72 65 61 74 65 20 74 68 65 20 74 65 78 74 20 6c  reate the text l
2e20: 61 79 65 72 20 66 6f 72 20 61 20 63 65 6c 6c 2d  ayer for a cell-
2e30: 66 72 61 6d 65 0a 20 20 3b 0a 20 20 28 64 65 66  frame.  ;.  (def
2e40: 69 6e 65 20 28 63 72 65 61 74 65 2d 63 65 6c 6c  ine (create-cell
2e50: 2d 74 65 78 74 20 74 65 78 74 20 66 6f 6e 74 20  -text text font 
2e60: 66 6f 6e 74 73 69 7a 65 20 67 72 61 76 69 74 79  fontsize gravity
2e70: 20 66 72 61 6d 65 2d 6c 61 79 65 72 29 0a 20 20   frame-layer).  
2e80: 20 20 28 6c 65 74 2a 20 28 28 74 65 78 74 2d 6c    (let* ((text-l
2e90: 61 79 65 72 20 28 63 61 72 20 28 67 69 6d 70 2d  ayer (car (gimp-
2ea0: 74 65 78 74 2d 66 6f 6e 74 6e 61 6d 65 20 69 6d  text-fontname im
2eb0: 61 67 65 20 2d 31 20 0a 20 20 20 20 20 20 20 20  age -1 .        
2ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ee0: 20 20 20 20 20 20 20 20 30 20 30 20 0a 20 20 20          0 0 .   
2ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78               tex
2f20: 74 20 28 2a 20 32 20 62 6f 72 64 65 72 29 20 0a  t (* 2 border) .
2f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f60: 54 52 55 45 20 66 6f 6e 74 73 69 7a 65 20 0a 20  TRUE fontsize . 
2f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50                 P
2fa0: 49 58 45 4c 53 20 66 6f 6e 74 20 29 29 29 0a 20  IXELS font ))). 
2fb0: 20 20 20 20 20 20 20 20 20 20 28 78 2d 61 6c 69            (x-ali
2fc0: 67 6e 20 30 29 0a 20 20 20 20 20 20 20 20 20 20  gn 0).          
2fd0: 20 28 79 2d 61 6c 69 67 6e 20 30 29 20 29 0a 20   (y-align 0) ). 
2fe0: 20 20 20 20 20 28 69 66 20 28 6f 72 20 28 3d 20       (if (or (= 
2ff0: 67 72 61 76 69 74 79 20 30 29 20 28 3d 20 67 72  gravity 0) (= gr
3000: 61 76 69 74 79 20 31 29 20 28 3d 20 67 72 61 76  avity 1) (= grav
3010: 69 74 79 20 32 29 29 0a 20 20 20 20 20 20 20 20  ity 2)).        
3020: 28 73 65 74 21 20 79 2d 61 6c 69 67 6e 20 2d 31  (set! y-align -1
3030: 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20  ).        (when 
3040: 28 6f 72 20 28 3d 20 67 72 61 76 69 74 79 20 36  (or (= gravity 6
3050: 29 20 28 3d 20 67 72 61 76 69 74 79 20 37 29 20  ) (= gravity 7) 
3060: 28 3d 20 67 72 61 76 69 74 79 20 38 29 29 0a 20  (= gravity 8)). 
3070: 20 20 20 20 20 20 20 20 20 28 73 65 74 21 20 79           (set! y
3080: 2d 61 6c 69 67 6e 20 31 29 20 29 20 29 0a 20 20  -align 1) ) ).  
3090: 20 20 20 20 28 69 66 20 28 6f 72 20 28 3d 20 67      (if (or (= g
30a0: 72 61 76 69 74 79 20 30 29 20 28 3d 20 67 72 61  ravity 0) (= gra
30b0: 76 69 74 79 20 33 29 20 28 3d 20 67 72 61 76 69  vity 3) (= gravi
30c0: 74 79 20 36 29 29 0a 20 20 20 20 20 20 20 20 28  ty 6)).        (
30d0: 73 65 74 21 20 78 2d 61 6c 69 67 6e 20 2d 31 29  set! x-align -1)
30e0: 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28  .        (when (
30f0: 6f 72 20 28 3d 20 67 72 61 76 69 74 79 20 32 29  or (= gravity 2)
3100: 20 28 3d 20 67 72 61 76 69 74 79 20 35 29 20 28   (= gravity 5) (
3110: 3d 20 67 72 61 76 69 74 79 20 38 29 29 0a 20 20  = gravity 8)).  
3120: 20 20 20 20 20 20 20 20 28 73 65 74 21 20 78 2d          (set! x-
3130: 61 6c 69 67 6e 20 31 29 20 29 20 29 0a 20 20 20  align 1) ) ).   
3140: 20 20 20 28 66 75 2d 61 6c 69 67 6e 2d 6c 61 79     (fu-align-lay
3150: 65 72 73 20 66 72 61 6d 65 2d 6c 61 79 65 72 20  ers frame-layer 
3160: 74 65 78 74 2d 6c 61 79 65 72 20 78 2d 61 6c 69  text-layer x-ali
3170: 67 6e 20 79 2d 61 6c 69 67 6e 29 0a 20 20 20 20  gn y-align).    
3180: 20 20 74 65 78 74 2d 6c 61 79 65 72 0a 20 20 20    text-layer.   
3190: 20 20 20 29 0a 20 20 20 20 29 0a 0a 20 20 3b 3b     ).    )..  ;;
31a0: 20 61 6c 69 67 6e 20 6c 61 79 65 72 28 73 29 20   align layer(s) 
31b0: 77 69 74 68 20 61 20 62 61 73 65 2d 6c 61 79 65  with a base-laye
31c0: 72 20 28 6c 61 79 65 72 73 20 63 61 6e 20 62 65  r (layers can be
31d0: 20 65 69 74 68 65 72 20 61 20 73 69 6e 67 6c 65   either a single
31e0: 20 6c 61 79 65 72 20 6f 72 20 61 20 6c 69 73 74   layer or a list
31f0: 20 6f 66 20 6c 61 79 65 72 73 29 0a 20 20 3b 3b   of layers).  ;;
3200: 20 76 65 72 74 2d 61 6c 69 67 6e 20 61 6e 64 20   vert-align and 
3210: 68 6f 72 69 7a 2d 61 6c 69 67 6e 0a 20 20 3b 3b  horiz-align.  ;;
3220: 20 20 2d 31 20 3d 20 4c 45 46 54 2c 20 30 20 3d    -1 = LEFT, 0 =
3230: 20 43 45 4e 54 45 52 2c 20 31 20 3d 20 52 49 47   CENTER, 1 = RIG
3240: 48 54 0a 20 20 3b 0a 20 20 28 64 65 66 69 6e 65  HT.  ;.  (define
3250: 20 28 66 75 2d 61 6c 69 67 6e 2d 6c 61 79 65 72   (fu-align-layer
3260: 73 20 62 61 73 65 2d 6c 61 79 65 72 20 6c 61 79  s base-layer lay
3270: 65 72 73 20 76 65 72 74 2d 61 6c 69 67 6e 20 68  ers vert-align h
3280: 6f 72 69 7a 2d 61 6c 69 67 6e 29 0a 20 20 20 20  oriz-align).    
3290: 28 6c 65 74 2a 20 28 28 61 6e 63 68 6f 72 2d 78  (let* ((anchor-x
32a0: 20 28 63 61 72 20 28 67 69 6d 70 2d 64 72 61 77   (car (gimp-draw
32b0: 61 62 6c 65 2d 6f 66 66 73 65 74 73 20 62 61 73  able-offsets bas
32c0: 65 2d 6c 61 79 65 72 29 29 29 0a 20 20 20 20 20  e-layer))).     
32d0: 20 20 20 20 20 20 28 61 6e 63 68 6f 72 2d 79 20        (anchor-y 
32e0: 28 63 61 64 72 20 28 67 69 6d 70 2d 64 72 61 77  (cadr (gimp-draw
32f0: 61 62 6c 65 2d 6f 66 66 73 65 74 73 20 62 61 73  able-offsets bas
3300: 65 2d 6c 61 79 65 72 29 29 29 0a 20 20 20 20 20  e-layer))).     
3310: 20 20 20 20 20 20 28 77 69 64 74 68 20 28 63 61        (width (ca
3320: 72 20 28 67 69 6d 70 2d 64 72 61 77 61 62 6c 65  r (gimp-drawable
3330: 2d 77 69 64 74 68 20 62 61 73 65 2d 6c 61 79 65  -width base-laye
3340: 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  r))).           
3350: 28 68 65 69 67 68 74 20 28 63 61 72 20 28 67 69  (height (car (gi
3360: 6d 70 2d 64 72 61 77 61 62 6c 65 2d 68 65 69 67  mp-drawable-heig
3370: 68 74 20 62 61 73 65 2d 6c 61 79 65 72 29 29 29  ht base-layer)))
3380: 20 29 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73   ).      (unless
3390: 20 28 70 61 69 72 3f 20 6c 61 79 65 72 73 29 0a   (pair? layers).
33a0: 20 20 20 20 20 20 20 20 28 73 65 74 21 20 6c 61          (set! la
33b0: 79 65 72 73 20 28 6c 69 73 74 20 6c 61 79 65 72  yers (list layer
33c0: 73 29 29 20 29 0a 20 20 20 20 20 20 28 69 66 20  s)) ).      (if 
33d0: 28 3e 3d 20 76 65 72 74 2d 61 6c 69 67 6e 20 30  (>= vert-align 0
33e0: 29 0a 20 20 20 20 20 20 20 20 28 69 66 20 28 3d  ).        (if (=
33f0: 20 76 65 72 74 2d 61 6c 69 67 6e 20 30 29 0a 20   vert-align 0). 
3400: 20 20 20 20 20 20 20 20 20 28 73 65 74 21 20 61           (set! a
3410: 6e 63 68 6f 72 2d 78 20 28 2b 20 61 6e 63 68 6f  nchor-x (+ ancho
3420: 72 2d 78 20 28 2f 20 77 69 64 74 68 20 32 29 29  r-x (/ width 2))
3430: 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74  ).          (set
3440: 21 20 61 6e 63 68 6f 72 2d 78 20 28 2b 20 61 6e  ! anchor-x (+ an
3450: 63 68 6f 72 2d 78 20 77 69 64 74 68 29 29 20 29  chor-x width)) )
3460: 20 29 0a 20 20 20 20 20 20 28 69 66 20 28 3e 3d   ).      (if (>=
3470: 20 68 6f 72 69 7a 2d 61 6c 69 67 6e 20 30 29 0a   horiz-align 0).
3480: 20 20 20 20 20 20 20 20 28 69 66 20 28 3d 20 68          (if (= h
3490: 6f 72 69 7a 2d 61 6c 69 67 6e 20 30 29 0a 20 20  oriz-align 0).  
34a0: 20 20 20 20 20 20 20 20 28 73 65 74 21 20 61 6e          (set! an
34b0: 63 68 6f 72 2d 79 20 28 2b 20 61 6e 63 68 6f 72  chor-y (+ anchor
34c0: 2d 79 20 28 2f 20 68 65 69 67 68 74 20 32 29 29  -y (/ height 2))
34d0: 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74  ).          (set
34e0: 21 20 61 6e 63 68 6f 72 2d 79 20 28 2b 20 61 6e  ! anchor-y (+ an
34f0: 63 68 6f 72 2d 79 20 68 65 69 67 68 74 29 29 20  chor-y height)) 
3500: 29 20 29 0a 20 20 20 20 20 20 28 77 68 69 6c 65  ) ).      (while
3510: 20 28 70 61 69 72 3f 20 6c 61 79 65 72 73 29 0a   (pair? layers).
3520: 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 0a          (let* (.
3530: 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 79              (lay
3540: 65 72 20 28 63 61 72 20 6c 61 79 65 72 73 29 29  er (car layers))
3550: 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65  .            (re
3560: 66 2d 78 20 28 63 61 72 20 28 67 69 6d 70 2d 64  f-x (car (gimp-d
3570: 72 61 77 61 62 6c 65 2d 6f 66 66 73 65 74 73 20  rawable-offsets 
3580: 6c 61 79 65 72 29 29 29 0a 20 20 20 20 20 20 20  layer))).       
3590: 20 20 20 20 20 28 72 65 66 2d 79 20 28 63 61 64       (ref-y (cad
35a0: 72 20 28 67 69 6d 70 2d 64 72 61 77 61 62 6c 65  r (gimp-drawable
35b0: 2d 6f 66 66 73 65 74 73 20 6c 61 79 65 72 29 29  -offsets layer))
35c0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6f  ).            (o
35d0: 72 69 67 2d 78 20 72 65 66 2d 78 29 0a 20 20 20  rig-x ref-x).   
35e0: 20 20 20 20 20 20 20 20 20 28 6f 72 69 67 2d 79           (orig-y
35f0: 20 72 65 66 2d 79 29 0a 20 20 20 20 20 20 20 20   ref-y).        
3600: 20 20 20 20 28 6f 66 66 73 65 74 2d 78 20 30 29      (offset-x 0)
3610: 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 66  .            (of
3620: 66 73 65 74 2d 79 20 30 29 0a 20 20 20 20 20 20  fset-y 0).      
3630: 20 20 20 20 20 20 29 0a 20 20 20 20 20 20 20 20        ).        
3640: 20 20 28 73 65 74 21 20 77 69 64 74 68 20 28 63    (set! width (c
3650: 61 72 20 28 67 69 6d 70 2d 64 72 61 77 61 62 6c  ar (gimp-drawabl
3660: 65 2d 77 69 64 74 68 20 6c 61 79 65 72 29 29 29  e-width layer)))
3670: 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 21  .          (set!
3680: 20 68 65 69 67 68 74 20 28 63 61 72 20 28 67 69   height (car (gi
3690: 6d 70 2d 64 72 61 77 61 62 6c 65 2d 68 65 69 67  mp-drawable-heig
36a0: 68 74 20 6c 61 79 65 72 29 29 29 0a 20 20 20 20  ht layer))).    
36b0: 20 20 20 20 20 20 28 69 66 20 28 3e 3d 20 76 65        (if (>= ve
36c0: 72 74 2d 61 6c 69 67 6e 20 30 29 0a 20 20 20 20  rt-align 0).    
36d0: 20 20 20 20 20 20 20 20 28 69 66 20 28 3d 20 76          (if (= v
36e0: 65 72 74 2d 61 6c 69 67 6e 20 30 29 0a 20 20 20  ert-align 0).   
36f0: 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 21             (set!
3700: 20 72 65 66 2d 78 20 28 2b 20 72 65 66 2d 78 20   ref-x (+ ref-x 
3710: 28 2f 20 77 69 64 74 68 20 32 29 29 29 0a 20 20  (/ width 2))).  
3720: 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74              (set
3730: 21 20 72 65 66 2d 78 20 28 2b 20 72 65 66 2d 78  ! ref-x (+ ref-x
3740: 20 77 69 64 74 68 29 29 0a 20 20 20 20 20 20 20   width)).       
3750: 20 20 20 20 20 20 20 29 0a 20 20 20 20 20 20 20         ).       
3760: 20 20 20 20 20 29 0a 20 20 20 20 20 20 20 20 20       ).         
3770: 20 28 69 66 20 28 3e 3d 20 68 6f 72 69 7a 2d 61   (if (>= horiz-a
3780: 6c 69 67 6e 20 30 29 0a 20 20 20 20 20 20 20 20  lign 0).        
3790: 20 20 20 20 28 69 66 20 28 3d 20 68 6f 72 69 7a      (if (= horiz
37a0: 2d 61 6c 69 67 6e 20 30 29 0a 20 20 20 20 20 20  -align 0).      
37b0: 20 20 20 20 20 20 20 20 28 73 65 74 21 20 72 65          (set! re
37c0: 66 2d 79 20 28 2b 20 72 65 66 2d 79 20 28 2f 20  f-y (+ ref-y (/ 
37d0: 68 65 69 67 68 74 20 32 29 29 29 0a 20 20 20 20  height 2))).    
37e0: 20 20 20 20 20 20 20 20 20 20 28 73 65 74 21 20            (set! 
37f0: 72 65 66 2d 79 20 28 2b 20 72 65 66 2d 79 20 68  ref-y (+ ref-y h
3800: 65 69 67 68 74 29 29 0a 20 20 20 20 20 20 20 20  eight)).        
3810: 20 20 20 20 20 20 29 0a 20 20 20 20 20 20 20 20        ).        
3820: 20 20 20 20 29 0a 20 20 20 20 20 20 20 20 20 20      ).          
3830: 28 73 65 74 21 20 6f 66 66 73 65 74 2d 78 20 28  (set! offset-x (
3840: 2b 20 6f 72 69 67 2d 78 20 28 2d 20 61 6e 63 68  + orig-x (- anch
3850: 6f 72 2d 78 20 72 65 66 2d 78 29 29 29 0a 20 20  or-x ref-x))).  
3860: 20 20 20 20 20 20 20 20 28 73 65 74 21 20 6f 66          (set! of
3870: 66 73 65 74 2d 79 20 28 2b 20 6f 72 69 67 2d 79  fset-y (+ orig-y
3880: 20 28 2d 20 61 6e 63 68 6f 72 2d 79 20 72 65 66   (- anchor-y ref
3890: 2d 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 20  -y))).          
38a0: 28 67 69 6d 70 2d 6c 61 79 65 72 2d 73 65 74 2d  (gimp-layer-set-
38b0: 6f 66 66 73 65 74 73 20 6c 61 79 65 72 20 6f 66  offsets layer of
38c0: 66 73 65 74 2d 78 20 6f 66 66 73 65 74 2d 79 29  fset-x offset-y)
38d0: 0a 20 20 20 20 20 20 20 20 20 20 29 0a 20 20 20  .          ).   
38e0: 20 20 20 20 20 28 73 65 74 21 20 6c 61 79 65 72       (set! layer
38f0: 73 20 28 63 64 72 20 6c 61 79 65 72 73 29 29 0a  s (cdr layers)).
3900: 20 20 20 20 20 20 20 20 29 0a 20 20 20 20 20 20          ).      
3910: 29 0a 20 20 20 20 29 0a 20 20 3b 3b 20 72 65 74  ).    ).  ;; ret
3920: 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 76 69  urn a list of vi
3930: 73 69 62 6c 65 20 6c 61 79 65 72 73 0a 20 20 3b  sible layers.  ;
3940: 0a 20 20 28 64 65 66 69 6e 65 20 28 66 75 2d 67  .  (define (fu-g
3950: 65 74 2d 76 69 73 69 62 6c 65 2d 6c 61 79 65 72  et-visible-layer
3960: 73 20 69 6d 61 67 65 29 0a 20 20 20 20 28 6c 65  s image).    (le
3970: 74 20 6c 6f 6f 70 20 28 28 6c 61 79 65 72 73 20  t loop ((layers 
3980: 28 76 65 63 74 6f 72 2d 3e 6c 69 73 74 20 28 63  (vector->list (c
3990: 61 64 72 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d  adr (gimp-image-
39a0: 67 65 74 2d 6c 61 79 65 72 73 20 69 6d 61 67 65  get-layers image
39b0: 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  )))).           
39c0: 20 20 20 20 28 76 69 65 77 61 62 6c 65 73 20 6e      (viewables n
39d0: 69 6c 29 20 29 0a 20 20 20 20 20 20 28 69 66 20  il) ).      (if 
39e0: 28 6e 75 6c 6c 3f 20 6c 61 79 65 72 73 29 0a 20  (null? layers). 
39f0: 20 20 20 20 20 20 20 28 69 66 20 28 6e 75 6c 6c         (if (null
3a00: 3f 20 76 69 65 77 61 62 6c 65 73 29 0a 20 20 20  ? viewables).   
3a10: 20 20 20 20 20 20 20 27 28 29 0a 20 20 20 20 20         '().     
3a20: 20 20 20 20 20 28 72 65 76 65 72 73 65 20 76 69       (reverse vi
3a30: 65 77 61 62 6c 65 73 29 20 29 0a 20 20 20 20 20  ewables) ).     
3a40: 20 20 20 28 6c 6f 6f 70 20 28 63 64 72 20 6c 61     (loop (cdr la
3a50: 79 65 72 73 29 0a 20 20 20 20 20 20 20 20 20 20  yers).          
3a60: 20 20 20 20 28 69 66 20 28 7a 65 72 6f 3f 20 28      (if (zero? (
3a70: 63 61 72 20 28 67 69 6d 70 2d 64 72 61 77 61 62  car (gimp-drawab
3a80: 6c 65 2d 67 65 74 2d 76 69 73 69 62 6c 65 20 28  le-get-visible (
3a90: 63 61 72 20 6c 61 79 65 72 73 29 29 29 29 0a 20  car layers)))). 
3aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
3ab0: 69 65 77 61 62 6c 65 73 0a 20 20 20 20 20 20 20  iewables.       
3ac0: 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 28           (cons (
3ad0: 63 61 72 20 6c 61 79 65 72 73 29 20 76 69 65 77  car layers) view
3ae0: 61 62 6c 65 73 29 20 29 20 29 20 29 20 29 20 29  ables) ) ) ) ) )
3af0: 0a 20 20 20 20 20 20 20 20 0a 3b 3b 3b 3b 3b 3b  .        .;;;;;;
3b00: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
3b10: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 0a 3b 3b 20 4d  ;;;;;;;;;;;.;; M
3b20: 61 69 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20 73  ain definition s
3b30: 74 61 72 74 73 20 68 65 72 65 20 3b 3b 20 0a 3b  tarts here ;; .;
3b40: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
3b50: 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b 3b  ;;;;;;;;;;;;;;;;
3b60: 0a 20 20 28 6c 65 74 2a 20 28 28 62 67 2d 6c 61  .  (let* ((bg-la
3b70: 79 65 72 20 30 29 0a 20 20 20 20 20 20 20 20 20  yer 0).         
3b80: 28 78 31 20 30 29 0a 20 20 20 20 20 20 20 20 20  (x1 0).         
3b90: 28 78 32 20 30 29 0a 20 20 20 20 20 20 20 20 20  (x2 0).         
3ba0: 28 79 31 20 30 29 0a 20 20 20 20 20 20 20 20 20  (y1 0).         
3bb0: 28 79 32 20 30 29 0a 20 20 20 20 20 20 20 20 20  (y2 0).         
3bc0: 28 58 27 73 20 27 28 29 29 0a 20 20 20 20 20 20  (X's '()).      
3bd0: 20 20 20 28 59 27 73 20 27 28 29 29 20 0a 20 20     (Y's '()) .  
3be0: 20 20 20 20 20 20 20 28 78 27 73 20 27 28 29 29         (x's '())
3bf0: 0a 20 20 20 20 20 20 20 20 20 28 79 27 73 20 27  .         (y's '
3c00: 28 29 29 0a 20 20 20 20 20 20 20 20 20 28 72 6f  ()).         (ro
3c10: 77 20 30 29 0a 20 20 20 20 20 20 20 20 20 28 74  w 0).         (t
3c20: 6f 74 61 6c 2d 72 6f 77 73 20 36 29 0a 20 20 20  otal-rows 6).   
3c30: 20 20 20 20 20 20 28 63 6f 6c 20 30 29 0a 20 20        (col 0).  
3c40: 20 20 20 20 20 20 20 28 74 65 78 74 2d 66 6f 6e         (text-fon
3c50: 74 73 69 7a 65 20 36 29 0a 20 20 20 20 20 20 20  tsize 6).       
3c60: 20 20 28 6e 75 6d 62 65 72 2d 66 6f 6e 74 73 69    (number-fontsi
3c70: 7a 65 20 36 29 0a 20 20 20 20 20 20 20 20 20 28  ze 6).         (
3c80: 66 69 72 73 74 64 61 79 20 28 64 61 79 2d 6f 66  firstday (day-of
3c90: 2d 77 65 65 6b 20 79 65 61 72 20 28 2b 20 6d 6f  -week year (+ mo
3ca0: 6e 74 68 20 31 29 20 31 29 29 0a 20 20 20 20 20  nth 1) 1)).     
3cb0: 20 20 20 20 28 64 61 79 73 2d 69 6e 2d 6d 6f 6e      (days-in-mon
3cc0: 74 68 20 28 76 65 63 74 6f 72 20 33 31 20 28 2b  th (vector 31 (+
3cd0: 20 32 38 20 28 6c 65 61 70 2d 79 65 61 72 20 79   28 (leap-year y
3ce0: 65 61 72 29 29 20 33 31 20 33 30 20 33 31 20 33  ear)) 31 30 31 3
3cf0: 30 20 33 31 20 33 31 20 33 30 20 33 31 20 33 30  0 31 31 30 31 30
3d00: 20 33 31 29 29 0a 20 20 20 20 20 20 20 20 20 28   31)).         (
3d10: 69 20 30 29 0a 20 20 20 20 20 20 20 20 20 28 66  i 0).         (f
3d20: 72 61 6d 65 73 20 6e 69 6c 29 0a 20 20 20 20 20  rames nil).     
3d30: 20 20 20 20 28 66 72 61 6d 65 2d 6c 61 79 65 72      (frame-layer
3d40: 20 30 29 0a 20 20 20 20 20 20 20 20 20 28 63 61   0).         (ca
3d50: 6c 2d 64 61 79 73 20 6e 69 6c 29 0a 20 20 20 20  l-days nil).    
3d60: 20 20 20 20 20 28 64 61 74 65 73 2d 6c 61 79 65       (dates-laye
3d70: 72 20 30 29 0a 20 20 20 20 20 20 20 20 20 28 76  r 0).         (v
3d80: 69 73 69 62 6c 65 73 20 27 28 29 29 0a 20 20 20  isibles '()).   
3d90: 20 20 20 20 20 20 28 62 75 66 66 65 72 20 22 22        (buffer ""
3da0: 29 0a 20 20 20 20 20 20 20 20 20 28 6c 61 79 65  ).         (laye
3db0: 72 73 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20  rs nil).        
3dc0: 20 28 6f 72 69 67 2d 62 67 20 28 63 61 72 20 28   (orig-bg (car (
3dd0: 67 69 6d 70 2d 63 6f 6e 74 65 78 74 2d 67 65 74  gimp-context-get
3de0: 2d 62 61 63 6b 67 72 6f 75 6e 64 29 29 29 0a 20  -background))). 
3df0: 20 20 20 20 20 20 20 20 28 6f 72 69 67 2d 73 65          (orig-se
3e00: 6c 20 30 29 0a 20 20 20 20 20 20 20 20 20 28 6d  l 0).         (m
3e10: 6f 6e 74 68 73 20 28 6c 69 73 74 2d 3e 76 65 63  onths (list->vec
3e20: 74 6f 72 20 28 63 61 72 20 28 6c 69 73 74 2d 72  tor (car (list-r
3e30: 65 66 20 73 67 2d 63 61 6c 65 6e 64 61 72 2d 74  ef sg-calendar-t
3e40: 72 61 6e 73 6c 61 74 69 6f 6e 73 20 6c 61 6e 67  ranslations lang
3e50: 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 77  )))).         (w
3e60: 65 65 6b 64 61 79 2d 73 74 72 69 6e 67 73 20 28  eekday-strings (
3e70: 6c 69 73 74 2d 3e 76 65 63 74 6f 72 20 28 63 6f  list->vector (co
3e80: 6e 64 20 20 0a 20 20 20 20 20 20 20 20 20 20 20  nd  .           
3e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
3eb0: 28 63 61 64 64 72 20 28 6c 69 73 74 2d 72 65 66  (caddr (list-ref
3ec0: 20 73 67 2d 63 61 6c 65 6e 64 61 72 2d 74 72 61   sg-calendar-tra
3ed0: 6e 73 6c 61 74 69 6f 6e 73 20 6c 61 6e 67 29 29  nslations lang))
3ee0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
3ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f00: 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 73              (els
3f10: 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  e.              
3f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
3f40: 6d 61 70 20 28 6c 61 6d 62 64 61 20 28 78 29 20  map (lambda (x) 
3f50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f80: 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20       (substring 
3f90: 78 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  x .             
3fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3fd0: 20 20 30 20 0a 20 20 20 20 20 20 20 20 20 20 20    0 .           
3fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4010: 20 20 20 20 28 6d 69 6e 20 28 2b 20 6c 65 74 74      (min (+ lett
4020: 65 72 73 2d 69 6e 2d 64 61 79 20 31 29 0a 20 20  ers-in-day 1).  
4030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4070: 20 20 28 73 74 72 69 6e 67 2d 6c 65 6e 67 74 68    (string-length
4080: 20 78 29 29 29 29 0a 20 20 20 20 20 20 20 20 20   x)))).         
4090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
40a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
40b0: 20 20 20 20 20 20 20 20 20 28 63 61 64 72 20 28           (cadr (
40c0: 6c 69 73 74 2d 72 65 66 20 73 67 2d 63 61 6c 65  list-ref sg-cale
40d0: 6e 64 61 72 2d 74 72 61 6e 73 6c 61 74 69 6f 6e  ndar-translation
40e0: 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  s.              
40f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4120: 20 20 20 20 6c 61 6e 67 29 29 29 29 29 29 29 0a      lang))))))).
4130: 20 20 20 20 20 20 20 20 20 29 0a 20 20 20 20 28           ).    (
4140: 67 69 6d 70 2d 63 6f 6e 74 65 78 74 2d 70 75 73  gimp-context-pus
4150: 68 29 0a 20 20 20 20 28 67 69 6d 70 2d 69 6d 61  h).    (gimp-ima
4160: 67 65 2d 75 6e 64 6f 2d 67 72 6f 75 70 2d 73 74  ge-undo-group-st
4170: 61 72 74 20 69 6d 61 67 65 29 0a 20 20 20 20 28  art image).    (
4180: 73 65 74 21 20 6f 72 69 67 2d 73 65 6c 20 28 63  set! orig-sel (c
4190: 61 72 20 28 67 69 6d 70 2d 73 65 6c 65 63 74 69  ar (gimp-selecti
41a0: 6f 6e 2d 73 61 76 65 20 69 6d 61 67 65 29 29 29  on-save image)))
41b0: 0a 20 20 20 20 28 73 65 74 21 20 62 75 66 66 65  .    (set! buffe
41c0: 72 20 28 63 61 72 20 28 67 69 6d 70 2d 65 64 69  r (car (gimp-edi
41d0: 74 2d 6e 61 6d 65 64 2d 63 6f 70 79 20 64 72 61  t-named-copy dra
41e0: 77 61 62 6c 65 20 22 62 75 66 66 65 72 22 29 29  wable "buffer"))
41f0: 29 0a 20 20 20 20 28 73 65 74 21 20 62 67 2d 6c  ).    (set! bg-l
4200: 61 79 65 72 20 28 63 61 72 20 28 67 69 6d 70 2d  ayer (car (gimp-
4210: 65 64 69 74 2d 6e 61 6d 65 64 2d 70 61 73 74 65  edit-named-paste
4220: 20 64 72 61 77 61 62 6c 65 20 62 75 66 66 65 72   drawable buffer
4230: 20 46 41 4c 53 45 29 29 29 0a 20 20 20 20 28 67   FALSE))).    (g
4240: 69 6d 70 2d 66 6c 6f 61 74 69 6e 67 2d 73 65 6c  imp-floating-sel
4250: 2d 74 6f 2d 6c 61 79 65 72 20 62 67 2d 6c 61 79  -to-layer bg-lay
4260: 65 72 29 0a 20 20 20 20 28 67 69 6d 70 2d 62 75  er).    (gimp-bu
4270: 66 66 65 72 2d 64 65 6c 65 74 65 20 62 75 66 66  ffer-delete buff
4280: 65 72 29 0a 20 20 20 20 28 6c 65 74 20 6c 6f 6f  er).    (let loo
4290: 70 20 28 28 70 6f 73 20 28 2d 20 28 63 61 72 20  p ((pos (- (car 
42a0: 28 67 69 6d 70 2d 69 6d 61 67 65 2d 67 65 74 2d  (gimp-image-get-
42b0: 6c 61 79 65 72 2d 70 6f 73 69 74 69 6f 6e 20 69  layer-position i
42c0: 6d 61 67 65 20 64 72 61 77 61 62 6c 65 29 29 20  mage drawable)) 
42d0: 31 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 28  1))).      (if (
42e0: 7a 65 72 6f 3f 20 70 6f 73 29 0a 20 20 20 20 20  zero? pos).     
42f0: 20 20 20 23 74 0a 20 20 20 20 20 20 20 20 28 62     #t.        (b
4300: 65 67 69 6e 20 0a 20 20 20 20 20 20 20 20 20 20  egin .          
4310: 28 67 69 6d 70 2d 69 6d 61 67 65 2d 6c 6f 77 65  (gimp-image-lowe
4320: 72 2d 6c 61 79 65 72 20 69 6d 61 67 65 20 62 67  r-layer image bg
4330: 2d 6c 61 79 65 72 29 0a 20 20 20 20 20 20 20 20  -layer).        
4340: 20 20 28 6c 6f 6f 70 20 28 2d 20 70 6f 73 20 31    (loop (- pos 1
4350: 29 29 20 29 29 29 0a 0a 20 20 20 20 28 73 65 74  )) )))..    (set
4360: 21 20 78 31 20 28 2b 20 62 6f 72 64 65 72 20 28  ! x1 (+ border (
4370: 63 61 72 20 28 67 69 6d 70 2d 64 72 61 77 61 62  car (gimp-drawab
4380: 6c 65 2d 6f 66 66 73 65 74 73 20 62 67 2d 6c 61  le-offsets bg-la
4390: 79 65 72 29 29 29 29 0a 20 20 20 20 28 73 65 74  yer)))).    (set
43a0: 21 20 78 32 20 28 2d 20 28 2b 20 78 31 20 28 63  ! x2 (- (+ x1 (c
43b0: 61 72 20 28 67 69 6d 70 2d 64 72 61 77 61 62 6c  ar (gimp-drawabl
43c0: 65 2d 77 69 64 74 68 20 62 67 2d 6c 61 79 65 72  e-width bg-layer
43d0: 29 29 29 20 28 2a 20 32 20 62 6f 72 64 65 72 29  ))) (* 2 border)
43e0: 29 29 0a 20 20 20 20 28 73 65 74 21 20 79 31 20  )).    (set! y1 
43f0: 28 2b 20 62 6f 72 64 65 72 20 28 63 61 64 72 20  (+ border (cadr 
4400: 28 67 69 6d 70 2d 64 72 61 77 61 62 6c 65 2d 6f  (gimp-drawable-o
4410: 66 66 73 65 74 73 20 62 67 2d 6c 61 79 65 72 29  ffsets bg-layer)
4420: 29 29 29 0a 20 20 20 20 28 73 65 74 21 20 79 32  ))).    (set! y2
4430: 20 28 2d 20 28 2b 20 79 31 20 28 63 61 72 20 28   (- (+ y1 (car (
4440: 67 69 6d 70 2d 64 72 61 77 61 62 6c 65 2d 68 65  gimp-drawable-he
4450: 69 67 68 74 20 62 67 2d 6c 61 79 65 72 29 29 29  ight bg-layer)))
4460: 20 28 2a 20 32 20 62 6f 72 64 65 72 29 29 29 0a   (* 2 border))).
4470: 20 20 20 20 28 73 65 74 21 20 58 27 73 20 28 6d      (set! X's (m
4480: 61 70 20 72 6f 75 6e 64 20 28 61 6c 67 65 62 72  ap round (algebr
4490: 61 69 63 2d 70 72 6f 67 20 78 31 20 78 32 20 38  aic-prog x1 x2 8
44a0: 29 29 29 0a 20 20 20 20 28 73 65 74 21 20 59 27  ))).    (set! Y'
44b0: 73 20 28 6d 61 70 20 72 6f 75 6e 64 20 28 61 6c  s (map round (al
44c0: 67 65 62 72 61 69 63 2d 70 72 6f 67 20 79 31 20  gebraic-prog y1 
44d0: 79 32 20 37 29 29 29 20 3b 3b 20 31 20 72 6f 77  y2 7))) ;; 1 row
44e0: 20 66 6f 72 20 68 65 61 64 65 72 20 2b 20 66 69   for header + fi
44f0: 76 65 20 72 6f 77 73 20 66 6f 72 20 77 65 65 6b  ve rows for week
4500: 73 20 0a 20 20 20 20 28 73 65 74 21 20 78 27 73  s .    (set! x's
4510: 20 58 27 73 29 0a 20 20 20 20 28 73 65 74 21 20   X's).    (set! 
4520: 79 27 73 20 59 27 73 29 0a 20 20 20 20 28 73 65  y's Y's).    (se
4530: 74 21 20 76 69 73 69 62 6c 65 73 20 28 66 75 2d  t! visibles (fu-
4540: 67 65 74 2d 76 69 73 69 62 6c 65 2d 6c 61 79 65  get-visible-laye
4550: 72 73 20 69 6d 61 67 65 29 29 0a 20 20 20 20 28  rs image)).    (
4560: 75 6e 6c 65 73 73 20 28 3d 20 73 75 6e 64 61 79  unless (= sunday
4570: 3f 20 54 52 55 45 29 0a 20 20 20 20 20 20 20 28  ? TRUE).       (
4580: 73 65 74 21 20 66 69 72 73 74 64 61 79 20 28 6d  set! firstday (m
4590: 6f 64 75 6c 6f 20 28 2d 20 66 69 72 73 74 64 61  odulo (- firstda
45a0: 79 20 31 29 20 37 29 29 0a 20 20 20 20 20 20 29  y 1) 7)).      )
45b0: 0a 20 20 20 20 28 77 68 65 6e 20 28 6f 72 20 28  .    (when (or (
45c0: 3d 20 6c 61 79 6f 75 74 20 31 29 20 28 61 6e 64  = layout 1) (and
45d0: 20 28 3d 20 6c 61 79 6f 75 74 20 30 29 20 28 3e   (= layout 0) (>
45e0: 20 28 2b 20 66 69 72 73 74 64 61 79 20 28 76 65   (+ firstday (ve
45f0: 63 74 6f 72 2d 72 65 66 20 64 61 79 73 2d 69 6e  ctor-ref days-in
4600: 2d 6d 6f 6e 74 68 20 6d 6f 6e 74 68 29 29 20 33  -month month)) 3
4610: 35 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 21  5))).      (set!
4620: 20 59 27 73 20 28 6d 61 70 20 72 6f 75 6e 64 20   Y's (map round 
4630: 28 61 6c 67 65 62 72 61 69 63 2d 70 72 6f 67 20  (algebraic-prog 
4640: 79 31 20 79 32 20 38 29 29 29 20 3b 3b 20 31 20  y1 y2 8))) ;; 1 
4650: 72 6f 77 20 66 6f 72 20 68 65 61 64 65 72 20 2b  row for header +
4660: 20 73 69 78 20 72 6f 77 73 20 66 6f 72 20 77 65   six rows for we
4670: 65 6b 73 20 0a 20 20 20 20 20 20 28 73 65 74 21  eks .      (set!
4680: 20 79 27 73 20 59 27 73 29 0a 20 20 20 20 20 20   y's Y's).      
4690: 28 73 65 74 21 20 74 6f 74 61 6c 2d 72 6f 77 73  (set! total-rows
46a0: 20 37 29 0a 20 20 20 20 20 20 29 0a 20 20 20 20   7).      ).    
46b0: 3b 3b 20 41 64 64 20 68 65 61 64 65 72 20 72 6f  ;; Add header ro
46c0: 77 20 77 69 74 68 20 64 61 79 20 6c 61 62 65 6c  w with day label
46d0: 73 0a 20 20 20 20 3b 3b 20 44 65 74 65 72 6d 69  s.    ;; Determi
46e0: 6e 65 20 66 6f 6e 74 73 69 7a 65 20 66 6f 72 20  ne fontsize for 
46f0: 64 61 79 73 0a 20 20 20 20 28 73 65 74 21 20 74  days.    (set! t
4700: 65 78 74 2d 66 6f 6e 74 73 69 7a 65 20 28 61 70  ext-fontsize (ap
4710: 70 6c 79 20 6d 69 6e 20 28 6d 61 70 20 28 6c 61  ply min (map (la
4720: 6d 62 64 61 20 28 74 65 78 74 29 0a 20 20 20 20  mbda (text).    
4730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4740: 20 20 20 20 20 20 20 20 20 20 20 28 73 67 2d 63             (sg-c
4750: 61 6c 65 6e 64 61 72 2d 63 61 6c 63 2d 66 6f 6e  alendar-calc-fon
4760: 74 73 69 7a 65 20 74 65 78 74 20 0a 20 20 20 20  tsize text .    
4770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4790: 20 20 20 20 20 20 20 20 20 20 74 65 78 74 2d 66            text-f
47a0: 6f 6e 74 20 0a 20 20 20 20 20 20 20 20 20 20 20  ont .           
47b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47d0: 20 20 20 38 30 20 0a 20 20 20 20 20 20 20 20 20     80 .         
47e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4800: 20 20 20 20 20 28 2d 20 28 63 61 64 72 20 58 27       (- (cadr X'
4810: 73 29 20 28 63 61 72 20 58 27 73 29 20 28 2a 20  s) (car X's) (* 
4820: 32 20 62 6f 72 64 65 72 29 29 20 0a 20 20 20 20  2 border)) .    
4830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4850: 20 20 20 20 20 20 20 20 20 20 28 2d 20 28 63 61            (- (ca
4860: 64 72 20 59 27 73 29 20 28 63 61 72 20 59 27 73  dr Y's) (car Y's
4870: 29 20 28 2a 20 32 20 62 6f 72 64 65 72 29 29 20  ) (* 2 border)) 
4880: 29 20 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) ).            
4890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
48a0: 20 28 76 65 63 74 6f 72 2d 3e 6c 69 73 74 20 77   (vector->list w
48b0: 65 65 6b 64 61 79 2d 73 74 72 69 6e 67 73 29 20  eekday-strings) 
48c0: 29 20 29 20 29 0a 20 20 20 20 28 67 69 6d 70 2d  ) ) ).    (gimp-
48d0: 70 72 6f 67 72 65 73 73 2d 75 70 64 61 74 65 20  progress-update 
48e0: 28 2f 20 31 20 28 2a 20 74 6f 74 61 6c 2d 72 6f  (/ 1 (* total-ro
48f0: 77 73 20 37 29 29 29 0a 20 20 20 20 28 73 65 74  ws 7))).    (set
4900: 21 20 78 27 73 20 58 27 73 29 0a 20 20 20 20 28  ! x's X's).    (
4910: 77 68 69 6c 65 20 28 3c 20 69 20 37 29 0a 20 20  while (< i 7).  
4920: 20 20 20 20 28 73 65 74 21 20 66 72 61 6d 65 73      (set! frames
4930: 20 28 63 6f 6e 73 20 28 63 72 65 61 74 65 2d 63   (cons (create-c
4940: 65 6c 6c 2d 66 72 61 6d 65 20 28 63 61 72 20 78  ell-frame (car x
4950: 27 73 29 20 3b 20 63 65 6c 6c 20 75 70 70 65 72  's) ; cell upper
4960: 2d 6c 65 66 74 20 78 0a 20 20 20 20 20 20 20 20  -left x.        
4970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4990: 20 20 20 20 20 28 63 61 72 20 79 27 73 29 20 3b       (car y's) ;
49a0: 20 63 65 6c 6c 20 75 70 70 65 72 2d 6c 65 66 74   cell upper-left
49b0: 20 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   y.             
49c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
49d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
49e0: 28 72 6f 75 6e 64 20 28 2d 20 28 63 61 64 72 20  (round (- (cadr 
49f0: 78 27 73 29 20 28 63 61 72 20 78 27 73 29 29 29  x's) (car x's)))
4a00: 20 3b 20 77 69 64 74 68 0a 20 20 20 20 20 20 20   ; width.       
4a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4a30: 20 20 20 20 20 20 28 72 6f 75 6e 64 20 28 2d 20        (round (- 
4a40: 28 63 61 64 72 20 79 27 73 29 20 28 63 61 72 20  (cadr y's) (car 
4a50: 79 27 73 29 29 29 29 20 3b 20 68 65 69 67 68 74  y's)))) ; height
4a60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 72                fr
4a90: 61 6d 65 73 29 29 0a 20 20 20 20 20 20 28 73 65  ames)).      (se
4aa0: 74 21 20 63 61 6c 2d 64 61 79 73 20 28 63 6f 6e  t! cal-days (con
4ab0: 73 20 28 63 72 65 61 74 65 2d 63 65 6c 6c 2d 74  s (create-cell-t
4ac0: 65 78 74 20 28 76 65 63 74 6f 72 2d 72 65 66 20  ext (vector-ref 
4ad0: 77 65 65 6b 64 61 79 2d 73 74 72 69 6e 67 73 20  weekday-strings 
4ae0: 28 6d 6f 64 75 6c 6f 20 28 2d 20 69 20 73 75 6e  (modulo (- i sun
4af0: 64 61 79 3f 20 29 20 37 29 29 0a 20 20 20 20 20  day? ) 7)).     
4b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b20: 20 20 20 20 20 20 20 20 74 65 78 74 2d 66 6f 6e          text-fon
4b30: 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  t.              
4b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
4b60: 65 78 74 2d 66 6f 6e 74 73 69 7a 65 20 0a 20 20  ext-fontsize .  
4b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b90: 20 20 20 20 20 20 20 20 20 20 20 37 20 3b 3b 20             7 ;; 
4ba0: 63 65 6e 74 65 72 20 74 65 78 74 20 69 6e 20 63  center text in c
4bb0: 65 6c 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20  ell.            
4bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4be0: 20 28 63 61 72 20 66 72 61 6d 65 73 29 29 20 0a   (car frames)) .
4bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6c               cal
4c20: 2d 64 61 79 73 20 29 29 0a 20 20 20 20 20 20 28  -days )).      (
4c30: 73 65 74 21 20 69 20 28 2b 20 69 20 31 29 29 0a  set! i (+ i 1)).
4c40: 20 20 20 20 20 20 28 67 69 6d 70 2d 70 72 6f 67        (gimp-prog
4c50: 72 65 73 73 2d 75 70 64 61 74 65 20 28 2f 20 28  ress-update (/ (
4c60: 2b 20 69 20 31 29 20 28 2a 20 74 6f 74 61 6c 2d  + i 1) (* total-
4c70: 72 6f 77 73 20 37 29 29 29 0a 20 20 20 20 20 20  rows 7))).      
4c80: 28 73 65 74 21 20 78 27 73 20 28 63 64 72 20 78  (set! x's (cdr x
4c90: 27 73 29 29 0a 20 20 20 20 20 20 29 0a 20 20 20  's)).      ).   
4ca0: 20 28 73 65 74 21 20 72 6f 77 20 28 2b 20 72 6f   (set! row (+ ro
4cb0: 77 20 31 29 29 0a 20 20 20 20 28 73 65 74 21 20  w 1)).    (set! 
4cc0: 79 27 73 20 28 63 64 72 20 79 27 73 29 29 0a 20  y's (cdr y's)). 
4cd0: 20 20 20 28 73 65 74 21 20 78 27 73 20 58 27 73     (set! x's X's
4ce0: 29 0a 20 20 20 20 28 73 65 74 21 20 69 20 30 29  ).    (set! i 0)
4cf0: 0a 0a 20 20 20 20 3b 3b 20 44 65 74 65 72 6d 69  ..    ;; Determi
4d00: 6e 65 20 66 6f 6e 74 73 69 7a 65 20 66 6f 72 20  ne fontsize for 
4d10: 6e 75 6d 62 65 72 73 0a 20 20 20 20 28 69 66 20  numbers.    (if 
4d20: 28 3c 20 66 6f 6e 74 73 69 7a 65 25 20 38 30 29  (< fontsize% 80)
4d30: 0a 20 20 20 20 20 20 28 73 65 74 21 20 6e 75 6d  .      (set! num
4d40: 62 65 72 2d 66 6f 6e 74 73 69 7a 65 20 28 73 67  ber-fontsize (sg
4d50: 2d 63 61 6c 65 6e 64 61 72 2d 63 61 6c 63 2d 66  -calendar-calc-f
4d60: 6f 6e 74 73 69 7a 65 20 22 33 30 22 20 6e 75 6d  ontsize "30" num
4d70: 62 65 72 2d 66 6f 6e 74 20 66 6f 6e 74 73 69 7a  ber-font fontsiz
4d80: 65 25 20 28 2d 20 28 63 61 64 72 20 58 27 73 29  e% (- (cadr X's)
4d90: 20 28 63 61 72 20 58 27 73 29 20 28 2a 20 34 20   (car X's) (* 4 
4da0: 62 6f 72 64 65 72 29 29 20 20 28 2d 20 28 63 61  border))  (- (ca
4db0: 64 72 20 59 27 73 29 20 28 63 61 72 20 59 27 73  dr Y's) (car Y's
4dc0: 29 20 28 2a 20 34 20 62 6f 72 64 65 72 29 29 29  ) (* 4 border)))
4dd0: 29 0a 20 20 20 20 20 20 28 73 65 74 21 20 6e 75  ).      (set! nu
4de0: 6d 62 65 72 2d 66 6f 6e 74 73 69 7a 65 20 28 73  mber-fontsize (s
4df0: 67 2d 63 61 6c 65 6e 64 61 72 2d 63 61 6c 63 2d  g-calendar-calc-
4e00: 66 6f 6e 74 73 69 7a 65 20 22 33 30 22 20 6e 75  fontsize "30" nu
4e10: 6d 62 65 72 2d 66 6f 6e 74 20 66 6f 6e 74 73 69  mber-font fontsi
4e20: 7a 65 25 20 28 2d 20 28 63 61 64 72 20 58 27 73  ze% (- (cadr X's
4e30: 29 20 28 63 61 72 20 58 27 73 29 20 28 2a 20 32  ) (car X's) (* 2
4e40: 20 62 6f 72 64 65 72 29 29 20 20 28 2d 20 28 63   border))  (- (c
4e50: 61 64 72 20 59 27 73 29 20 28 63 61 72 20 59 27  adr Y's) (car Y'
4e60: 73 29 20 28 2a 20 32 20 62 6f 72 64 65 72 29 29  s) (* 2 border))
4e70: 29 29 0a 20 20 20 20 20 20 29 0a 20 20 20 20 3b  )).      ).    ;
4e80: 3b 20 63 72 65 61 74 65 20 67 72 69 64 20 6f 66  ; create grid of
4e90: 20 22 63 65 6c 6c 73 22 0a 20 20 20 20 3b 3b 20   "cells".    ;; 
4ea0: 67 72 69 64 20 63 6f 6e 74 61 69 6e 73 20 63 65  grid contains ce
4eb0: 6c 6c 73 20 66 6f 72 20 74 68 65 20 64 61 79 73  lls for the days
4ec0: 0a 20 20 20 20 3b 3b 20 45 61 63 68 20 63 65 6c  .    ;; Each cel
4ed0: 6c 20 68 61 73 20 61 20 74 72 61 6e 73 70 61 72  l has a transpar
4ee0: 65 6e 74 20 6c 61 79 65 72 20 77 69 74 68 20 6f  ent layer with o
4ef0: 70 74 69 6f 6e 61 6c 20 62 6f 72 64 65 72 20 61  ptional border a
4f00: 6e 64 0a 20 20 20 20 3b 3b 20 76 61 6c 69 64 20  nd.    ;; valid 
4f10: 64 61 79 73 20 68 61 76 65 20 61 20 74 65 78 74  days have a text
4f20: 20 6c 61 79 65 72 20 68 6f 6c 64 69 6e 67 20 74   layer holding t
4f30: 68 65 20 64 61 79 20 6e 75 6d 62 65 72 2e 20 0a  he day number. .
4f40: 20 20 20 20 3b 3b 20 74 68 65 20 64 61 79 20 6f      ;; the day o
4f50: 66 20 74 68 65 20 6d 6f 6e 74 68 20 69 73 20 22  f the month is "
4f60: 30 22 20 69 66 20 63 65 6c 6c 20 69 73 20 6e 6f  0" if cell is no
4f70: 74 20 69 6e 20 6d 6f 6e 74 68 0a 20 20 20 20 3b  t in month.    ;
4f80: 3b 20 0a 20 20 20 20 28 69 66 20 28 3d 20 6c 61  ; .    (if (= la
4f90: 79 6f 75 74 20 32 29 20 0a 20 20 20 20 20 20 28  yout 2) .      (
4fa0: 77 68 69 6c 65 20 28 3e 20 28 2d 20 28 2b 20 66  while (> (- (+ f
4fb0: 69 72 73 74 64 61 79 20 28 76 65 63 74 6f 72 2d  irstday (vector-
4fc0: 72 65 66 20 64 61 79 73 2d 69 6e 2d 6d 6f 6e 74  ref days-in-mont
4fd0: 68 20 6d 6f 6e 74 68 29 29 20 69 29 20 33 35 29  h month)) i) 35)
4fe0: 0a 20 20 20 20 20 20 20 20 28 73 65 74 21 20 66  .        (set! f
4ff0: 72 61 6d 65 73 20 28 63 6f 6e 73 20 28 63 72 65  rames (cons (cre
5000: 61 74 65 2d 63 65 6c 6c 2d 66 72 61 6d 65 20 28  ate-cell-frame (
5010: 63 61 72 20 78 27 73 29 20 3b 20 63 65 6c 6c 20  car x's) ; cell 
5020: 75 70 70 65 72 2d 6c 65 66 74 20 78 0a 20 20 20  upper-left x.   
5030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5050: 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72              (car
5060: 20 79 27 73 29 20 3b 20 63 65 6c 6c 20 75 70 70   y's) ; cell upp
5070: 65 72 2d 6c 65 66 74 20 79 0a 20 20 20 20 20 20  er-left y.      
5080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
50a0: 20 20 20 20 20 20 20 20 20 28 72 6f 75 6e 64 20           (round 
50b0: 28 2d 20 28 63 61 64 72 20 78 27 73 29 20 28 63  (- (cadr x's) (c
50c0: 61 72 20 78 27 73 29 29 29 20 3b 20 77 69 64 74  ar x's))) ; widt
50d0: 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  h.              
50e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
50f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5100: 20 28 72 6f 75 6e 64 20 28 2d 20 28 63 61 64 72   (round (- (cadr
5110: 20 79 27 73 29 20 28 63 61 72 20 79 27 73 29 29   y's) (car y's))
5120: 29 29 20 3b 20 68 65 69 67 68 74 0a 20 20 20 20  )) ; height.    
5130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5150: 20 20 20 20 20 20 20 20 20 20 20 66 72 61 6d 65             frame
5160: 73 29 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74  s)).        (let
5170: 2a 20 28 0a 20 20 20 20 20 20 20 20 20 20 20 20  * (.            
5180: 28 64 61 74 65 20 28 2b 20 28 2d 20 33 36 20 66  (date (+ (- 36 f
5190: 69 72 73 74 64 61 79 29 20 69 29 29 0a 20 20 20  irstday) i)).   
51a0: 20 20 20 20 20 20 20 20 20 28 64 61 74 65 2d 73           (date-s
51b0: 74 72 20 28 6e 75 6d 62 65 72 2d 3e 73 74 72 69  tr (number->stri
51c0: 6e 67 20 64 61 74 65 29 29 0a 20 20 20 20 20 20  ng date)).      
51d0: 20 20 20 20 20 20 29 0a 20 20 20 20 20 20 20 20        ).        
51e0: 20 20 28 73 65 74 21 20 63 61 6c 2d 64 61 79 73    (set! cal-days
51f0: 20 28 63 6f 6e 73 20 28 63 72 65 61 74 65 2d 63   (cons (create-c
5200: 65 6c 6c 2d 74 65 78 74 20 64 61 74 65 2d 73 74  ell-text date-st
5210: 72 20 6e 75 6d 62 65 72 2d 66 6f 6e 74 20 6e 75  r number-font nu
5220: 6d 62 65 72 2d 66 6f 6e 74 73 69 7a 65 20 67 72  mber-fontsize gr
5230: 61 76 69 74 79 20 28 63 61 72 20 66 72 61 6d 65  avity (car frame
5240: 73 29 29 20 63 61 6c 2d 64 61 79 73 29 29 0a 20  s)) cal-days)). 
5250: 20 20 20 20 20 20 20 20 20 29 0a 20 20 20 20 20           ).     
5260: 20 20 20 28 73 65 74 21 20 69 20 28 2b 20 69 20     (set! i (+ i 
5270: 31 29 29 0a 20 20 20 20 20 20 20 20 28 67 69 6d  1)).        (gim
5280: 70 2d 70 72 6f 67 72 65 73 73 2d 75 70 64 61 74  p-progress-updat
5290: 65 20 28 2f 20 28 2b 20 69 20 38 29 20 28 2a 20  e (/ (+ i 8) (* 
52a0: 74 6f 74 61 6c 2d 72 6f 77 73 20 37 29 29 29 0a  total-rows 7))).
52b0: 20 20 20 20 20 20 20 20 28 73 65 74 21 20 78 27          (set! x'
52c0: 73 20 28 63 64 72 20 78 27 73 29 29 0a 20 20 20  s (cdr x's)).   
52d0: 20 20 20 20 20 28 73 65 74 21 20 63 6f 6c 20 28       (set! col (
52e0: 2b 20 63 6f 6c 20 31 29 29 0a 20 20 20 20 20 20  + col 1)).      
52f0: 20 20 29 0a 20 20 20 20 20 20 29 0a 20 20 20 20    ).      ).    
5300: 28 6c 65 74 2a 20 28 0a 20 20 20 20 20 20 20 20  (let* (.        
5310: 28 62 69 6e 64 6c 65 2d 78 20 28 63 61 72 20 78  (bindle-x (car x
5320: 27 73 29 29 0a 20 20 20 20 20 20 20 20 29 0a 20  's)).        ). 
5330: 20 20 20 20 20 28 77 68 69 6c 65 20 28 3c 20 69       (while (< i
5340: 20 66 69 72 73 74 64 61 79 29 0a 20 20 20 20 20   firstday).     
5350: 20 20 20 28 73 65 74 21 20 69 20 28 2b 20 69 20     (set! i (+ i 
5360: 31 29 29 0a 20 20 20 20 20 20 20 20 28 67 69 6d  1)).        (gim
5370: 70 2d 70 72 6f 67 72 65 73 73 2d 75 70 64 61 74  p-progress-updat
5380: 65 20 28 2f 20 28 2b 20 69 20 38 29 20 28 2a 20  e (/ (+ i 8) (* 
5390: 74 6f 74 61 6c 2d 72 6f 77 73 20 37 29 29 29 0a  total-rows 7))).
53a0: 20 20 20 20 20 20 20 20 28 73 65 74 21 20 78 27          (set! x'
53b0: 73 20 28 63 64 72 20 78 27 73 29 29 0a 20 20 20  s (cdr x's)).   
53c0: 20 20 20 20 20 29 0a 20 20 20 20 20 20 28 75 6e       ).      (un
53d0: 6c 65 73 73 20 28 3d 20 69 20 63 6f 6c 29 0a 20  less (= i col). 
53e0: 20 20 20 20 20 20 20 28 73 65 74 21 20 66 72 61         (set! fra
53f0: 6d 65 73 20 28 63 6f 6e 73 20 28 63 72 65 61 74  mes (cons (creat
5400: 65 2d 63 65 6c 6c 2d 66 72 61 6d 65 20 62 69 6e  e-cell-frame bin
5410: 64 6c 65 2d 78 20 3b 20 63 65 6c 6c 20 75 70 70  dle-x ; cell upp
5420: 65 72 2d 6c 65 66 74 20 78 0a 20 20 20 20 20 20  er-left x.      
5430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5450: 20 20 20 20 20 20 20 20 20 28 63 61 72 20 79 27           (car y'
5460: 73 29 20 3b 20 63 65 6c 6c 20 75 70 70 65 72 2d  s) ; cell upper-
5470: 6c 65 66 74 20 79 0a 20 20 20 20 20 20 20 20 20  left y.         
5480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
54a0: 20 20 20 20 20 20 28 72 6f 75 6e 64 20 28 2d 20        (round (- 
54b0: 28 63 61 72 20 78 27 73 29 20 62 69 6e 64 6c 65  (car x's) bindle
54c0: 2d 78 29 29 20 3b 20 77 69 64 74 68 0a 20 20 20  -x)) ; width.   
54d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
54e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
54f0: 20 20 20 20 20 20 20 20 20 20 20 20 28 72 6f 75              (rou
5500: 6e 64 20 28 2d 20 28 63 61 64 72 20 79 27 73 29  nd (- (cadr y's)
5510: 20 28 63 61 72 20 79 27 73 29 29 29 29 20 3b 20   (car y's)))) ; 
5520: 68 65 69 67 68 74 0a 20 20 20 20 20 20 20 20 20  height.         
5530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5550: 20 20 20 20 20 20 66 72 61 6d 65 73 29 29 0a 20        frames)). 
5560: 20 20 20 20 20 20 20 28 73 65 74 21 20 63 6f 6c         (set! col
5570: 20 69 29 0a 20 20 20 20 20 20 20 20 29 0a 20 20   i).        ).  
5580: 20 20 20 20 29 0a 20 20 20 20 28 77 68 69 6c 65      ).    (while
5590: 20 28 3c 20 72 6f 77 20 74 6f 74 61 6c 2d 72 6f   (< row total-ro
55a0: 77 73 29 0a 20 20 20 20 20 20 28 77 68 69 6c 65  ws).      (while
55b0: 20 28 61 6e 64 20 28 3c 20 63 6f 6c 20 37 29 20   (and (< col 7) 
55c0: 28 3c 20 69 20 28 2b 20 28 76 65 63 74 6f 72 2d  (< i (+ (vector-
55d0: 72 65 66 20 64 61 79 73 2d 69 6e 2d 6d 6f 6e 74  ref days-in-mont
55e0: 68 20 6d 6f 6e 74 68 29 20 66 69 72 73 74 64 61  h month) firstda
55f0: 79 29 29 29 0a 20 20 20 20 20 20 20 20 28 73 65  y))).        (se
5600: 74 21 20 66 72 61 6d 65 73 20 28 63 6f 6e 73 20  t! frames (cons 
5610: 28 63 72 65 61 74 65 2d 63 65 6c 6c 2d 66 72 61  (create-cell-fra
5620: 6d 65 20 28 63 61 72 20 78 27 73 29 20 3b 20 63  me (car x's) ; c
5630: 65 6c 6c 20 75 70 70 65 72 2d 6c 65 66 74 20 78  ell upper-left x
5640: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5670: 28 63 61 72 20 79 27 73 29 20 3b 20 63 65 6c 6c  (car y's) ; cell
5680: 20 75 70 70 65 72 2d 6c 65 66 74 20 79 0a 20 20   upper-left y.  
5690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
56a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
56b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 6f               (ro
56c0: 75 6e 64 20 28 2d 20 28 63 61 64 72 20 78 27 73  und (- (cadr x's
56d0: 29 20 28 63 61 72 20 78 27 73 29 29 29 20 3b 20  ) (car x's))) ; 
56e0: 77 69 64 74 68 0a 20 20 20 20 20 20 20 20 20 20  width.          
56f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5710: 20 20 20 20 20 28 72 6f 75 6e 64 20 28 2d 20 28       (round (- (
5720: 63 61 64 72 20 79 27 73 29 20 28 63 61 72 20 79  cadr y's) (car y
5730: 27 73 29 29 29 29 20 3b 20 68 65 69 67 68 74 0a  's)))) ; height.
5740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
5770: 72 61 6d 65 73 29 29 0a 20 20 20 20 20 20 20 20  rames)).        
5780: 28 6c 65 74 2a 20 28 0a 20 20 20 20 20 20 20 20  (let* (.        
5790: 20 20 20 20 28 64 61 74 65 20 28 2b 20 28 2d 20      (date (+ (- 
57a0: 69 20 66 69 72 73 74 64 61 79 29 20 31 29 29 0a  i firstday) 1)).
57b0: 20 20 20 20 20 20 20 20 20 20 20 20 28 64 61 74              (dat
57c0: 65 2d 73 74 72 20 28 69 66 20 28 61 6e 64 20 28  e-str (if (and (
57d0: 3d 20 6a 75 73 74 69 66 79 3f 20 54 52 55 45 29  = justify? TRUE)
57e0: 20 28 3c 20 64 61 74 65 20 31 30 29 29 0a 20 20   (< date 10)).  
57f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5800: 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d          (string-
5810: 61 70 70 65 6e 64 20 22 20 22 20 28 6e 75 6d 62  append " " (numb
5820: 65 72 2d 3e 73 74 72 69 6e 67 20 64 61 74 65 29  er->string date)
5830: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
5840: 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 75 6d              (num
5850: 62 65 72 2d 3e 73 74 72 69 6e 67 20 64 61 74 65  ber->string date
5860: 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))).            
5870: 28 64 6f 75 62 6c 65 2d 64 61 79 20 30 29 0a 20  (double-day 0). 
5880: 20 20 20 20 20 20 20 20 20 20 20 28 63 61 6c 2d             (cal-
5890: 64 61 79 20 30 29 0a 20 20 20 20 20 20 20 20 20  day 0).         
58a0: 20 20 20 29 0a 20 20 20 20 20 20 20 20 20 20 28     ).          (
58b0: 73 65 74 21 20 63 61 6c 2d 64 61 79 20 28 63 72  set! cal-day (cr
58c0: 65 61 74 65 2d 63 65 6c 6c 2d 74 65 78 74 20 64  eate-cell-text d
58d0: 61 74 65 2d 73 74 72 20 6e 75 6d 62 65 72 2d 66  ate-str number-f
58e0: 6f 6e 74 20 6e 75 6d 62 65 72 2d 66 6f 6e 74 73  ont number-fonts
58f0: 69 7a 65 20 67 72 61 76 69 74 79 20 28 63 61 72  ize gravity (car
5900: 20 66 72 61 6d 65 73 29 29 29 0a 20 20 20 20 20   frames))).     
5910: 20 20 20 20 20 28 69 66 20 28 3d 20 6c 61 79 6f       (if (= layo
5920: 75 74 20 33 29 20 3b 3b 20 69 66 20 6e 65 65 64  ut 3) ;; if need
5930: 65 64 2c 20 73 71 75 65 65 7a 65 20 74 77 6f 20  ed, squeeze two 
5940: 64 61 74 65 73 20 69 6e 74 6f 20 74 65 78 74 20  dates into text 
5950: 63 65 6c 6c 20 28 65 2e 67 2e 2c 20 32 33 2f 33  cell (e.g., 23/3
5960: 30 2c 20 32 34 2f 33 31 29 0a 20 20 20 20 20 20  0, 24/31).      
5970: 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64        (when (and
5980: 20 28 3e 20 28 2b 20 66 69 72 73 74 64 61 79 20   (> (+ firstday 
5990: 28 76 65 63 74 6f 72 2d 72 65 66 20 64 61 79 73  (vector-ref days
59a0: 2d 69 6e 2d 6d 6f 6e 74 68 20 6d 6f 6e 74 68 29  -in-month month)
59b0: 29 20 33 35 29 20 0a 20 20 20 20 20 20 20 20 20  ) 35) .         
59c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3d                (=
59d0: 20 72 6f 77 20 35 29 0a 20 20 20 20 20 20 20 20   row 5).        
59e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
59f0: 3c 3d 20 28 2b 20 64 61 74 65 20 37 29 20 28 76  <= (+ date 7) (v
5a00: 65 63 74 6f 72 2d 72 65 66 20 64 61 79 73 2d 69  ector-ref days-i
5a10: 6e 2d 6d 6f 6e 74 68 20 6d 6f 6e 74 68 29 29 29  n-month month)))
5a20: 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5a30: 28 67 69 6d 70 2d 65 64 69 74 2d 63 6c 65 61 72  (gimp-edit-clear
5a40: 20 63 61 6c 2d 64 61 79 29 0a 20 20 20 20 20 20   cal-day).      
5a50: 20 20 20 20 20 20 20 20 28 73 65 74 21 20 64 6f          (set! do
5a60: 75 62 6c 65 2d 64 61 79 20 28 63 72 65 61 74 65  uble-day (create
5a70: 2d 63 65 6c 6c 2d 74 65 78 74 20 64 61 74 65 2d  -cell-text date-
5a80: 73 74 72 20 6e 75 6d 62 65 72 2d 66 6f 6e 74 20  str number-font 
5a90: 28 2a 20 6e 75 6d 62 65 72 2d 66 6f 6e 74 73 69  (* number-fontsi
5aa0: 7a 65 20 30 2e 35 29 20 30 20 63 61 6c 2d 64 61  ze 0.5) 0 cal-da
5ab0: 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  y)).            
5ac0: 20 20 28 73 65 74 21 20 63 61 6c 2d 64 61 79 20    (set! cal-day 
5ad0: 28 63 61 72 20 28 67 69 6d 70 2d 69 6d 61 67 65  (car (gimp-image
5ae0: 2d 6d 65 72 67 65 2d 64 6f 77 6e 20 69 6d 61 67  -merge-down imag
5af0: 65 20 64 6f 75 62 6c 65 2d 64 61 79 20 45 58 50  e double-day EXP
5b00: 41 4e 44 2d 41 53 2d 4e 45 43 45 53 53 41 52 59  AND-AS-NECESSARY
5b10: 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))).            
5b20: 20 20 28 73 65 74 21 20 64 6f 75 62 6c 65 2d 64    (set! double-d
5b30: 61 79 20 28 63 72 65 61 74 65 2d 63 65 6c 6c 2d  ay (create-cell-
5b40: 74 65 78 74 20 28 6e 75 6d 62 65 72 2d 3e 73 74  text (number->st
5b50: 72 69 6e 67 20 28 2b 20 64 61 74 65 20 37 29 29  ring (+ date 7))
5b60: 20 6e 75 6d 62 65 72 2d 66 6f 6e 74 20 28 2a 20   number-font (* 
5b70: 6e 75 6d 62 65 72 2d 66 6f 6e 74 73 69 7a 65 20  number-fontsize 
5b80: 30 2e 35 29 20 38 20 63 61 6c 2d 64 61 79 29 29  0.5) 8 cal-day))
5b90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  .              (
5ba0: 73 65 74 21 20 63 61 6c 2d 64 61 79 20 28 63 61  set! cal-day (ca
5bb0: 72 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 6d 65  r (gimp-image-me
5bc0: 72 67 65 2d 64 6f 77 6e 20 69 6d 61 67 65 20 64  rge-down image d
5bd0: 6f 75 62 6c 65 2d 64 61 79 20 45 58 50 41 4e 44  ouble-day EXPAND
5be0: 2d 41 53 2d 4e 45 43 45 53 53 41 52 59 29 29 29  -AS-NECESSARY)))
5bf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29  .              )
5c00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0a 20  .            ). 
5c10: 20 20 20 20 20 20 20 20 20 28 73 65 74 21 20 63           (set! c
5c20: 61 6c 2d 64 61 79 73 20 28 63 6f 6e 73 20 63 61  al-days (cons ca
5c30: 6c 2d 64 61 79 20 63 61 6c 2d 64 61 79 73 29 29  l-day cal-days))
5c40: 0a 20 20 20 20 20 20 20 20 20 20 29 0a 20 20 20  .          ).   
5c50: 20 20 20 20 20 28 73 65 74 21 20 69 20 28 2b 20       (set! i (+ 
5c60: 69 20 31 29 29 0a 20 20 20 20 20 20 20 20 28 67  i 1)).        (g
5c70: 69 6d 70 2d 70 72 6f 67 72 65 73 73 2d 75 70 64  imp-progress-upd
5c80: 61 74 65 20 28 2f 20 28 2b 20 69 20 38 29 20 28  ate (/ (+ i 8) (
5c90: 2a 20 74 6f 74 61 6c 2d 72 6f 77 73 20 37 29 29  * total-rows 7))
5ca0: 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 21 20  ).        (set! 
5cb0: 78 27 73 20 28 63 64 72 20 78 27 73 29 29 0a 20  x's (cdr x's)). 
5cc0: 20 20 20 20 20 20 20 28 73 65 74 21 20 63 6f 6c         (set! col
5cd0: 20 28 2b 20 63 6f 6c 20 31 29 29 0a 20 20 20 20   (+ col 1)).    
5ce0: 20 20 20 20 29 0a 20 20 20 20 20 20 28 75 6e 6c      ).      (unl
5cf0: 65 73 73 20 28 6f 72 20 28 3c 20 69 20 28 2b 20  ess (or (< i (+ 
5d00: 28 76 65 63 74 6f 72 2d 72 65 66 20 64 61 79 73  (vector-ref days
5d10: 2d 69 6e 2d 6d 6f 6e 74 68 20 6d 6f 6e 74 68 29  -in-month month)
5d20: 20 66 69 72 73 74 64 61 79 29 29 20 28 3d 20 63   firstday)) (= c
5d30: 6f 6c 20 37 29 29 0a 20 20 20 20 20 20 20 20 28  ol 7)).        (
5d40: 6c 65 74 2a 20 28 0a 20 20 20 20 20 20 20 20 20  let* (.         
5d50: 20 20 20 28 62 69 6e 64 6c 65 2d 78 20 28 63 61     (bindle-x (ca
5d60: 72 20 78 27 73 29 29 0a 20 20 20 20 20 20 20 20  r x's)).        
5d70: 20 20 20 20 29 0a 20 20 20 20 20 20 20 20 20 20      ).          
5d80: 28 77 68 69 6c 65 20 28 3c 20 63 6f 6c 20 37 29  (while (< col 7)
5d90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65  .            (se
5da0: 74 21 20 69 20 28 2b 20 69 20 31 29 29 0a 20 20  t! i (+ i 1)).  
5db0: 20 20 20 20 20 20 20 20 20 20 28 73 65 74 21 20            (set! 
5dc0: 78 27 73 20 28 63 64 72 20 78 27 73 29 29 0a 20  x's (cdr x's)). 
5dd0: 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 21             (set!
5de0: 20 63 6f 6c 20 28 2b 20 63 6f 6c 20 31 29 29 0a   col (+ col 1)).
5df0: 20 20 20 20 20 20 20 20 20 20 20 20 29 0a 20 20              ).  
5e00: 20 20 20 20 20 20 20 20 28 73 65 74 21 20 66 72          (set! fr
5e10: 61 6d 65 73 20 28 63 6f 6e 73 20 28 63 72 65 61  ames (cons (crea
5e20: 74 65 2d 63 65 6c 6c 2d 66 72 61 6d 65 20 62 69  te-cell-frame bi
5e30: 6e 64 6c 65 2d 78 20 3b 20 63 65 6c 6c 20 75 70  ndle-x ; cell up
5e40: 70 65 72 2d 6c 65 66 74 20 78 0a 20 20 20 20 20  per-left x.     
5e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e70: 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72              (car
5e80: 20 79 27 73 29 20 3b 20 63 65 6c 6c 20 75 70 70   y's) ; cell upp
5e90: 65 72 2d 6c 65 66 74 20 79 0a 20 20 20 20 20 20  er-left y.      
5ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ec0: 20 20 20 20 20 20 20 20 20 20 20 28 72 6f 75 6e             (roun
5ed0: 64 20 28 2d 20 28 63 61 72 20 78 27 73 29 20 62  d (- (car x's) b
5ee0: 69 6e 64 6c 65 2d 78 29 29 20 3b 20 77 69 64 74  indle-x)) ; widt
5ef0: 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  h.              
5f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f20: 20 20 20 28 72 6f 75 6e 64 20 28 2d 20 28 63 61     (round (- (ca
5f30: 64 72 20 79 27 73 29 20 28 63 61 72 20 79 27 73  dr y's) (car y's
5f40: 29 29 29 29 20 3b 20 68 65 69 67 68 74 0a 20 20  )))) ; height.  
5f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
5f80: 72 61 6d 65 73 29 29 0a 20 20 20 20 20 20 20 20  rames)).        
5f90: 20 20 28 73 65 74 21 20 69 20 28 2b 20 69 20 31    (set! i (+ i 1
5fa0: 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65  )).          (se
5fb0: 74 21 20 78 27 73 20 28 63 64 72 20 78 27 73 29  t! x's (cdr x's)
5fc0: 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74  ).          (set
5fd0: 21 20 63 6f 6c 20 28 2b 20 63 6f 6c 20 31 29 29  ! col (+ col 1))
5fe0: 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28  .          (if (
5ff0: 3d 20 63 6f 6c 20 37 29 0a 20 20 20 20 20 20 20  = col 7).       
6000: 20 20 20 20 20 28 73 65 74 21 20 63 6f 6c 20 30       (set! col 0
6010: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0a  ).            ).
6020: 20 20 20 20 20 20 20 20 20 20 29 0a 20 20 20 20            ).    
6030: 20 20 20 20 29 0a 20 20 20 20 20 20 28 73 65 74      ).      (set
6040: 21 20 72 6f 77 20 28 2b 20 72 6f 77 20 31 29 29  ! row (+ row 1))
6050: 0a 20 20 20 20 20 20 28 73 65 74 21 20 63 6f 6c  .      (set! col
6060: 20 30 29 0a 20 20 20 20 20 20 28 73 65 74 21 20   0).      (set! 
6070: 78 27 73 20 58 27 73 29 0a 20 20 20 20 20 20 28  x's X's).      (
6080: 73 65 74 21 20 79 27 73 20 28 63 64 72 20 79 27  set! y's (cdr y'
6090: 73 29 29 0a 20 20 20 20 20 20 29 0a 20 20 20 20  s)).      ).    
60a0: 28 67 69 6d 70 2d 69 6d 61 67 65 2d 73 65 74 2d  (gimp-image-set-
60b0: 61 63 74 69 76 65 2d 6c 61 79 65 72 20 69 6d 61  active-layer ima
60c0: 67 65 20 62 67 2d 6c 61 79 65 72 29 0a 20 20 20  ge bg-layer).   
60d0: 20 28 73 65 74 21 20 66 72 61 6d 65 2d 6c 61 79   (set! frame-lay
60e0: 65 72 20 28 63 61 72 20 28 67 69 6d 70 2d 6c 61  er (car (gimp-la
60f0: 79 65 72 2d 6e 65 77 2d 66 72 6f 6d 2d 64 72 61  yer-new-from-dra
6100: 77 61 62 6c 65 20 62 67 2d 6c 61 79 65 72 20 69  wable bg-layer i
6110: 6d 61 67 65 29 29 29 0a 20 20 20 20 28 67 69 6d  mage))).    (gim
6120: 70 2d 69 6d 61 67 65 2d 61 64 64 2d 6c 61 79 65  p-image-add-laye
6130: 72 20 69 6d 61 67 65 20 66 72 61 6d 65 2d 6c 61  r image frame-la
6140: 79 65 72 20 2d 31 29 0a 20 20 20 20 28 67 69 6d  yer -1).    (gim
6150: 70 2d 6c 61 79 65 72 2d 61 64 64 2d 61 6c 70 68  p-layer-add-alph
6160: 61 20 66 72 61 6d 65 2d 6c 61 79 65 72 29 0a 20  a frame-layer). 
6170: 20 20 20 28 67 69 6d 70 2d 73 65 6c 65 63 74 69     (gimp-selecti
6180: 6f 6e 2d 6e 6f 6e 65 20 69 6d 61 67 65 29 0a 20  on-none image). 
6190: 20 20 20 28 67 69 6d 70 2d 65 64 69 74 2d 63 6c     (gimp-edit-cl
61a0: 65 61 72 20 66 72 61 6d 65 2d 6c 61 79 65 72 29  ear frame-layer)
61b0: 0a 20 20 20 20 28 67 69 6d 70 2d 63 6f 6e 74 65  .    (gimp-conte
61c0: 78 74 2d 73 65 74 2d 62 61 63 6b 67 72 6f 75 6e  xt-set-backgroun
61d0: 64 20 62 6f 72 64 65 72 2d 63 6f 6c 6f 72 29 0a  d border-color).
61e0: 20 20 20 20 28 67 69 6d 70 2d 72 65 63 74 2d 73      (gimp-rect-s
61f0: 65 6c 65 63 74 20 69 6d 61 67 65 20 78 31 20 79  elect image x1 y
6200: 31 20 28 72 6f 75 6e 64 20 28 2d 20 78 32 20 78  1 (round (- x2 x
6210: 31 29 29 20 28 72 6f 75 6e 64 20 28 2d 20 79 32  1)) (round (- y2
6220: 20 79 31 29 29 20 43 48 41 4e 4e 45 4c 2d 4f 50   y1)) CHANNEL-OP
6230: 2d 52 45 50 4c 41 43 45 20 46 41 4c 53 45 20 30  -REPLACE FALSE 0
6240: 29 0a 20 20 20 20 28 67 69 6d 70 2d 73 65 6c 65  ).    (gimp-sele
6250: 63 74 69 6f 6e 2d 69 6e 76 65 72 74 20 69 6d 61  ction-invert ima
6260: 67 65 29 0a 20 20 20 20 28 75 6e 6c 65 73 73 20  ge).    (unless 
6270: 28 3d 20 62 6f 72 64 65 72 20 30 29 0a 20 20 20  (= border 0).   
6280: 20 20 20 28 67 69 6d 70 2d 65 64 69 74 2d 66 69     (gimp-edit-fi
6290: 6c 6c 20 20 66 72 61 6d 65 2d 6c 61 79 65 72 20  ll  frame-layer 
62a0: 42 41 43 4b 47 52 4f 55 4e 44 2d 46 49 4c 4c 29  BACKGROUND-FILL)
62b0: 0a 20 20 20 20 20 20 29 0a 20 20 20 20 28 6d 61  .      ).    (ma
62c0: 70 20 28 6c 61 6d 62 64 61 20 28 78 29 20 28 67  p (lambda (x) (g
62d0: 69 6d 70 2d 64 72 61 77 61 62 6c 65 2d 73 65 74  imp-drawable-set
62e0: 2d 76 69 73 69 62 6c 65 20 78 20 46 41 4c 53 45  -visible x FALSE
62f0: 29 29 20 76 69 73 69 62 6c 65 73 29 0a 20 20 20  )) visibles).   
6300: 20 28 6d 61 70 20 28 6c 61 6d 62 64 61 20 28 78   (map (lambda (x
6310: 29 20 28 67 69 6d 70 2d 64 72 61 77 61 62 6c 65  ) (gimp-drawable
6320: 2d 73 65 74 2d 76 69 73 69 62 6c 65 20 78 20 46  -set-visible x F
6330: 41 4c 53 45 29 29 20 63 61 6c 2d 64 61 79 73 29  ALSE)) cal-days)
6340: 0a 20 20 20 20 28 73 65 74 21 20 66 72 61 6d 65  .    (set! frame
6350: 2d 6c 61 79 65 72 20 28 63 61 72 20 28 67 69 6d  -layer (car (gim
6360: 70 2d 69 6d 61 67 65 2d 6d 65 72 67 65 2d 76 69  p-image-merge-vi
6370: 73 69 62 6c 65 2d 6c 61 79 65 72 73 20 69 6d 61  sible-layers ima
6380: 67 65 20 45 58 50 41 4e 44 2d 41 53 2d 4e 45 43  ge EXPAND-AS-NEC
6390: 45 53 53 41 52 59 29 29 29 0a 20 20 20 20 28 67  ESSARY))).    (g
63a0: 69 6d 70 2d 64 72 61 77 61 62 6c 65 2d 73 65 74  imp-drawable-set
63b0: 2d 76 69 73 69 62 6c 65 20 66 72 61 6d 65 2d 6c  -visible frame-l
63c0: 61 79 65 72 20 46 41 4c 53 45 29 0a 20 20 20 20  ayer FALSE).    
63d0: 28 6d 61 70 20 28 6c 61 6d 62 64 61 20 28 78 29  (map (lambda (x)
63e0: 20 28 67 69 6d 70 2d 64 72 61 77 61 62 6c 65 2d   (gimp-drawable-
63f0: 73 65 74 2d 76 69 73 69 62 6c 65 20 78 20 54 52  set-visible x TR
6400: 55 45 29 29 20 63 61 6c 2d 64 61 79 73 29 0a 20  UE)) cal-days). 
6410: 20 20 20 28 73 65 74 21 20 64 61 74 65 73 2d 6c     (set! dates-l
6420: 61 79 65 72 20 28 63 61 72 20 28 67 69 6d 70 2d  ayer (car (gimp-
6430: 69 6d 61 67 65 2d 6d 65 72 67 65 2d 76 69 73 69  image-merge-visi
6440: 62 6c 65 2d 6c 61 79 65 72 73 20 69 6d 61 67 65  ble-layers image
6450: 20 45 58 50 41 4e 44 2d 41 53 2d 4e 45 43 45 53   EXPAND-AS-NECES
6460: 53 41 52 59 29 29 29 0a 20 20 20 20 28 67 69 6d  SARY))).    (gim
6470: 70 2d 6c 61 79 65 72 2d 72 65 73 69 7a 65 20 64  p-layer-resize d
6480: 61 74 65 73 2d 6c 61 79 65 72 0a 20 20 20 20 20  ates-layer.     
6490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
64a0: 20 20 28 63 61 72 20 28 67 69 6d 70 2d 64 72 61    (car (gimp-dra
64b0: 77 61 62 6c 65 2d 77 69 64 74 68 20 66 72 61 6d  wable-width fram
64c0: 65 2d 6c 61 79 65 72 29 29 0a 20 20 20 20 20 20  e-layer)).      
64d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
64e0: 20 28 63 61 72 20 28 67 69 6d 70 2d 64 72 61 77   (car (gimp-draw
64f0: 61 62 6c 65 2d 68 65 69 67 68 74 20 66 72 61 6d  able-height fram
6500: 65 2d 6c 61 79 65 72 29 29 20 20 0a 20 20 20 20  e-layer))  .    
6510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6520: 20 20 20 28 2d 20 28 63 61 72 20 28 67 69 6d 70     (- (car (gimp
6530: 2d 64 72 61 77 61 62 6c 65 2d 6f 66 66 73 65 74  -drawable-offset
6540: 73 20 64 61 74 65 73 2d 6c 61 79 65 72 29 29 20  s dates-layer)) 
6550: 28 63 61 72 20 28 67 69 6d 70 2d 64 72 61 77 61  (car (gimp-drawa
6560: 62 6c 65 2d 6f 66 66 73 65 74 73 20 66 72 61 6d  ble-offsets fram
6570: 65 2d 6c 61 79 65 72 29 29 29 0a 20 20 20 20 20  e-layer))).     
6580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6590: 20 20 28 2d 20 28 63 61 64 72 20 28 67 69 6d 70    (- (cadr (gimp
65a0: 2d 64 72 61 77 61 62 6c 65 2d 6f 66 66 73 65 74  -drawable-offset
65b0: 73 20 64 61 74 65 73 2d 6c 61 79 65 72 29 29 20  s dates-layer)) 
65c0: 28 63 61 64 72 20 28 67 69 6d 70 2d 64 72 61 77  (cadr (gimp-draw
65d0: 61 62 6c 65 2d 6f 66 66 73 65 74 73 20 66 72 61  able-offsets fra
65e0: 6d 65 2d 6c 61 79 65 72 29 29 29 29 0a 20 20 20  me-layer)))).   
65f0: 20 28 6d 61 70 20 28 6c 61 6d 62 64 61 20 28 78   (map (lambda (x
6600: 29 20 28 67 69 6d 70 2d 64 72 61 77 61 62 6c 65  ) (gimp-drawable
6610: 2d 73 65 74 2d 76 69 73 69 62 6c 65 20 78 20 54  -set-visible x T
6620: 52 55 45 29 29 20 76 69 73 69 62 6c 65 73 29 0a  RUE)) visibles).
6630: 20 20 20 20 28 67 69 6d 70 2d 64 72 61 77 61 62      (gimp-drawab
6640: 6c 65 2d 73 65 74 2d 76 69 73 69 62 6c 65 20 66  le-set-visible f
6650: 72 61 6d 65 2d 6c 61 79 65 72 20 54 52 55 45 29  rame-layer TRUE)
6660: 0a 20 20 20 20 28 67 69 6d 70 2d 64 72 61 77 61  .    (gimp-drawa
6670: 62 6c 65 2d 73 65 74 2d 6e 61 6d 65 20 64 61 74  ble-set-name dat
6680: 65 73 2d 6c 61 79 65 72 20 28 73 74 72 69 6e 67  es-layer (string
6690: 2d 61 70 70 65 6e 64 20 28 76 65 63 74 6f 72 2d  -append (vector-
66a0: 72 65 66 20 6d 6f 6e 74 68 73 20 6d 6f 6e 74 68  ref months month
66b0: 29 20 22 2c 20 22 20 28 6e 75 6d 62 65 72 2d 3e  ) ", " (number->
66c0: 73 74 72 69 6e 67 20 79 65 61 72 29 29 29 0a 20  string year))). 
66d0: 20 20 20 28 67 69 6d 70 2d 64 72 61 77 61 62 6c     (gimp-drawabl
66e0: 65 2d 73 65 74 2d 6e 61 6d 65 20 66 72 61 6d 65  e-set-name frame
66f0: 2d 6c 61 79 65 72 20 28 76 65 63 74 6f 72 2d 72  -layer (vector-r
6700: 65 66 20 6d 6f 6e 74 68 73 20 6d 6f 6e 74 68 29  ef months month)
6710: 29 0a 20 20 20 20 28 67 69 6d 70 2d 63 6f 6e 74  ).    (gimp-cont
6720: 65 78 74 2d 73 65 74 2d 62 61 63 6b 67 72 6f 75  ext-set-backgrou
6730: 6e 64 20 6f 72 69 67 2d 62 67 29 0a 20 20 20 20  nd orig-bg).    
6740: 28 67 69 6d 70 2d 70 72 6f 67 72 65 73 73 2d 75  (gimp-progress-u
6750: 70 64 61 74 65 20 31 29 0a 20 20 20 20 28 67 69  pdate 1).    (gi
6760: 6d 70 2d 64 69 73 70 6c 61 79 73 2d 66 6c 75 73  mp-displays-flus
6770: 68 29 0a 20 20 20 20 28 67 69 6d 70 2d 63 6f 6e  h).    (gimp-con
6780: 74 65 78 74 2d 70 6f 70 29 0a 20 20 20 20 28 67  text-pop).    (g
6790: 69 6d 70 2d 73 65 6c 65 63 74 69 6f 6e 2d 6c 6f  imp-selection-lo
67a0: 61 64 20 6f 72 69 67 2d 73 65 6c 29 0a 20 20 20  ad orig-sel).   
67b0: 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 72 65 6d   (gimp-image-rem
67c0: 6f 76 65 2d 63 68 61 6e 6e 65 6c 20 69 6d 61 67  ove-channel imag
67d0: 65 20 6f 72 69 67 2d 73 65 6c 29 0a 20 20 20 20  e orig-sel).    
67e0: 28 67 69 6d 70 2d 69 6d 61 67 65 2d 72 65 6d 6f  (gimp-image-remo
67f0: 76 65 2d 6c 61 79 65 72 20 69 6d 61 67 65 20 62  ve-layer image b
6800: 67 2d 6c 61 79 65 72 29 0a 20 20 20 20 28 67 69  g-layer).    (gi
6810: 6d 70 2d 69 6d 61 67 65 2d 73 65 74 2d 61 63 74  mp-image-set-act
6820: 69 76 65 2d 6c 61 79 65 72 20 69 6d 61 67 65 20  ive-layer image 
6830: 64 72 61 77 61 62 6c 65 29 0a 20 20 20 20 28 67  drawable).    (g
6840: 69 6d 70 2d 69 6d 61 67 65 2d 75 6e 64 6f 2d 67  imp-image-undo-g
6850: 72 6f 75 70 2d 65 6e 64 20 69 6d 61 67 65 29 0a  roup-end image).
6860: 20 20 20 20 28 6c 69 73 74 20 64 61 74 65 73 2d      (list dates-
6870: 6c 61 79 65 72 20 66 72 61 6d 65 2d 6c 61 79 65  layer frame-laye
6880: 72 29 0a 20 20 20 20 29 0a 20 20 29 0a 0a 28 64  r).    ).  )..(d
6890: 65 66 69 6e 65 20 28 73 63 72 69 70 74 2d 66 75  efine (script-fu
68a0: 2d 73 67 2d 63 61 6c 65 6e 64 61 72 2d 79 65 61  -sg-calendar-yea
68b0: 72 20 6f 72 69 67 2d 69 6d 61 67 65 20 6f 72 69  r orig-image ori
68c0: 67 2d 64 72 61 77 61 62 6c 65 20 0a 20 20 20 20  g-drawable .    
68d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
68e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
68f0: 6c 61 6e 67 20 0a 20 20 20 20 20 20 20 20 20 20  lang .          
6900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6910: 20 20 20 20 20 20 20 20 20 20 79 65 61 72 0a 20            year. 
6920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6940: 20 20 20 73 74 61 72 74 2d 6d 6f 6e 74 68 0a 20     start-month. 
6950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6970: 20 20 20 65 6e 64 2d 6d 6f 6e 74 68 0a 20 20 20     end-month.   
6980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
69a0: 20 6e 75 6d 2d 63 6f 6c 73 20 0a 20 20 20 20 20   num-cols .     
69b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
69c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
69d0: 61 64 64 69 6e 67 0a 20 20 20 20 20 20 20 20 20  adding.         
69e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
69f0: 20 20 20 20 20 20 20 20 20 20 20 73 75 6e 64 61             sunda
6a00: 79 3f 20 6c 65 74 74 65 72 73 2d 69 6e 2d 64 61  y? letters-in-da
6a10: 79 20 6c 61 79 6f 75 74 20 74 65 78 74 2d 66 6f  y layout text-fo
6a20: 6e 74 20 6e 75 6d 62 65 72 2d 66 6f 6e 74 20 66  nt number-font f
6a30: 6f 6e 74 73 69 7a 65 25 20 6a 75 73 74 69 66 79  ontsize% justify
6a40: 3f 20 62 6f 72 64 65 72 20 62 6f 72 64 65 72 2d  ? border border-
6a50: 63 6f 6c 6f 72 20 67 72 61 76 69 74 79 29 0a 20  color gravity). 
6a60: 20 28 64 65 66 69 6e 65 20 28 61 6c 67 65 62 72   (define (algebr
6a70: 61 69 63 2d 70 72 6f 67 20 73 74 61 72 74 20 65  aic-prog start e
6a80: 6e 64 20 65 6c 65 6d 65 6e 74 73 29 0a 20 20 20  nd elements).   
6a90: 20 28 6c 65 74 20 28 28 65 6c 65 6d 65 6e 74 73   (let ((elements
6aa0: 20 28 69 6e 65 78 61 63 74 2d 3e 65 78 61 63 74   (inexact->exact
6ab0: 20 65 6c 65 6d 65 6e 74 73 29 29 0a 20 20 20 20   elements)).    
6ac0: 20 20 20 20 20 20 28 69 6e 63 72 20 28 69 66 20        (incr (if 
6ad0: 28 7a 65 72 6f 3f 20 73 74 61 72 74 29 0a 20 20  (zero? start).  
6ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6af0: 28 2f 20 65 6e 64 20 28 2d 20 65 6c 65 6d 65 6e  (/ end (- elemen
6b00: 74 73 20 31 29 29 0a 20 20 20 20 20 20 20 20 20  ts 1)).         
6b10: 20 20 20 20 20 20 20 20 20 28 2f 20 28 2d 20 28           (/ (- (
6b20: 2f 20 65 6e 64 20 73 74 61 72 74 29 20 31 29 20  / end start) 1) 
6b30: 28 2d 20 65 6c 65 6d 65 6e 74 73 20 31 29 29 20  (- elements 1)) 
6b40: 29 20 29 20 29 0a 20 20 20 20 20 20 28 6c 65 74  ) ) ).      (let
6b50: 20 0a 20 20 20 20 20 20 20 20 6c 6f 6f 70 20 28   .        loop (
6b60: 28 63 6e 74 20 28 2d 20 65 6c 65 6d 65 6e 74 73  (cnt (- elements
6b70: 20 31 29 29 0a 20 20 20 20 20 20 20 20 20 20 20   1)).           
6b80: 20 20 20 28 6c 69 73 20 28 69 66 20 28 7a 65 72     (lis (if (zer
6b90: 6f 3f 20 73 74 61 72 74 29 0a 20 20 20 20 20 20  o? start).      
6ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27                 '
6bb0: 28 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  (0).            
6bc0: 20 20 20 20 20 20 20 20 20 27 28 31 29 20 29 20           '(1) ) 
6bd0: 29 20 29 0a 20 20 20 20 20 20 20 20 28 69 66 20  ) ).        (if 
6be0: 28 7a 65 72 6f 3f 20 63 6e 74 29 0a 20 20 20 20  (zero? cnt).    
6bf0: 20 20 20 20 20 20 28 69 66 20 28 7a 65 72 6f 3f        (if (zero?
6c00: 20 73 74 61 72 74 29 0a 20 20 20 20 20 20 20 20   start).        
6c10: 20 20 20 20 28 72 65 76 65 72 73 65 20 6c 69 73      (reverse lis
6c20: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6d  ).            (m
6c30: 61 70 20 2a 20 28 72 65 76 65 72 73 65 20 6c 69  ap * (reverse li
6c40: 73 29 20 28 6d 61 6b 65 2d 6c 69 73 74 20 65 6c  s) (make-list el
6c50: 65 6d 65 6e 74 73 20 73 74 61 72 74 29 29 20 29  ements start)) )
6c60: 0a 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 70  .          (loop
6c70: 20 28 2d 20 63 6e 74 20 31 29 20 28 63 6f 6e 73   (- cnt 1) (cons
6c80: 20 28 2b 20 28 63 61 72 20 6c 69 73 29 20 69 6e   (+ (car lis) in
6c90: 63 72 29 20 6c 69 73 29 29 20 29 20 29 20 29 20  cr) lis)) ) ) ) 
6ca0: 29 0a 20 20 3b 20 61 64 6a 75 73 74 20 69 6e 70  ).  ; adjust inp
6cb0: 75 74 20 70 61 72 61 6d 65 74 65 72 20 73 6f 20  ut parameter so 
6cc0: 6a 61 6e 75 61 72 79 20 69 73 20 6e 6f 77 20 66  january is now f
6cd0: 69 72 73 74 20 6d 6f 6e 74 68 20 20 20 20 20 20  irst month      
6ce0: 20 20 0a 20 20 3b 20 52 65 6d 65 6d 62 65 72 3a    .  ; Remember:
6cf0: 20 64 65 63 65 6d 62 65 72 20 77 61 73 20 66 69   december was fi
6d00: 72 73 74 20 69 6e 20 74 68 65 20 53 46 2d 4f 50  rst in the SF-OP
6d10: 54 49 4f 4e 20 6c 69 73 74 20 73 6f 20 74 68 61  TION list so tha
6d20: 74 20 0a 20 20 3b 20 20 20 20 20 20 20 20 20 20  t .  ;          
6d30: 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 65 74   the default set
6d40: 74 69 6e 67 20 77 6f 75 6c 64 20 62 65 20 4a 61  ting would be Ja
6d50: 6e 20 74 6f 20 44 65 63 20 0a 20 20 28 73 65 74  n to Dec .  (set
6d60: 21 20 65 6e 64 2d 6d 6f 6e 74 68 20 28 6d 6f 64  ! end-month (mod
6d70: 75 6c 6f 20 28 70 72 65 64 20 65 6e 64 2d 6d 6f  ulo (pred end-mo
6d80: 6e 74 68 29 20 31 32 29 29 20 0a 20 20 20 20 20  nth) 12)) .     
6d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6db0: 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 28 6c             .  (l
6dc0: 65 74 2a 20 28 28 69 6d 61 67 65 20 30 29 0a 20  et* ((image 0). 
6dd0: 20 20 20 20 20 20 20 20 28 6f 72 69 67 2d 78 20          (orig-x 
6de0: 28 63 61 72 20 28 67 69 6d 70 2d 64 72 61 77 61  (car (gimp-drawa
6df0: 62 6c 65 2d 6f 66 66 73 65 74 73 20 6f 72 69 67  ble-offsets orig
6e00: 2d 64 72 61 77 61 62 6c 65 29 29 29 0a 20 20 20  -drawable))).   
6e10: 20 20 20 20 20 20 28 6f 72 69 67 2d 79 20 28 63        (orig-y (c
6e20: 61 64 72 20 28 67 69 6d 70 2d 64 72 61 77 61 62  adr (gimp-drawab
6e30: 6c 65 2d 6f 66 66 73 65 74 73 20 6f 72 69 67 2d  le-offsets orig-
6e40: 64 72 61 77 61 62 6c 65 29 29 29 0a 20 20 20 20  drawable))).    
6e50: 20 20 20 20 20 28 6f 72 69 67 2d 73 65 6c 20 30       (orig-sel 0
6e60: 29 0a 20 20 20 20 20 20 20 20 20 28 62 6f 75 6e  ).         (boun
6e70: 64 73 20 28 67 69 6d 70 2d 64 72 61 77 61 62 6c  ds (gimp-drawabl
6e80: 65 2d 6d 61 73 6b 2d 69 6e 74 65 72 73 65 63 74  e-mask-intersect
6e90: 20 6f 72 69 67 2d 64 72 61 77 61 62 6c 65 29 29   orig-drawable))
6ea0: 0a 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65  .         (buffe
6eb0: 72 20 22 22 29 0a 20 20 20 20 20 20 20 20 20 28  r "").         (
6ec0: 6c 61 79 65 72 20 30 29 0a 20 20 20 20 20 20 20  layer 0).       
6ed0: 20 20 28 64 69 73 70 6c 61 79 20 30 29 20 29 0a    (display 0) ).
6ee0: 20 20 20 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d      (gimp-image-
6ef0: 75 6e 64 6f 2d 67 72 6f 75 70 2d 73 74 61 72 74  undo-group-start
6f00: 20 6f 72 69 67 2d 69 6d 61 67 65 29 0a 20 20 20   orig-image).   
6f10: 20 28 73 65 74 21 20 6f 72 69 67 2d 73 65 6c 20   (set! orig-sel 
6f20: 28 63 61 72 20 28 67 69 6d 70 2d 73 65 6c 65 63  (car (gimp-selec
6f30: 74 69 6f 6e 2d 73 61 76 65 20 6f 72 69 67 2d 69  tion-save orig-i
6f40: 6d 61 67 65 29 29 29 0a 20 20 20 20 28 75 6e 6c  mage))).    (unl
6f50: 65 73 73 20 28 3d 20 28 63 61 72 20 28 67 69 6d  ess (= (car (gim
6f60: 70 2d 73 65 6c 65 63 74 69 6f 6e 2d 69 73 2d 65  p-selection-is-e
6f70: 6d 70 74 79 20 6f 72 69 67 2d 69 6d 61 67 65 29  mpty orig-image)
6f80: 29 20 54 52 55 45 29 0a 20 20 20 20 20 20 28 73  ) TRUE).      (s
6f90: 65 74 21 20 62 6f 75 6e 64 73 20 28 63 64 72 20  et! bounds (cdr 
6fa0: 62 6f 75 6e 64 73 29 29 0a 20 20 20 20 20 20 28  bounds)).      (
6fb0: 73 65 74 21 20 6f 72 69 67 2d 78 20 28 2b 20 6f  set! orig-x (+ o
6fc0: 72 69 67 2d 78 20 28 63 61 72 20 62 6f 75 6e 64  rig-x (car bound
6fd0: 73 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 21  s))).      (set!
6fe0: 20 6f 72 69 67 2d 79 20 28 2b 20 6f 72 69 67 2d   orig-y (+ orig-
6ff0: 79 20 28 63 61 64 72 20 62 6f 75 6e 64 73 29 29  y (cadr bounds))
7000: 29 0a 20 20 20 20 20 20 28 67 69 6d 70 2d 72 65  ).      (gimp-re
7010: 63 74 2d 73 65 6c 65 63 74 20 6f 72 69 67 2d 69  ct-select orig-i
7020: 6d 61 67 65 20 6f 72 69 67 2d 78 20 6f 72 69 67  mage orig-x orig
7030: 2d 79 20 28 63 61 64 64 72 20 62 6f 75 6e 64 73  -y (caddr bounds
7040: 29 20 28 63 61 64 64 64 72 20 62 6f 75 6e 64 73  ) (cadddr bounds
7050: 29 20 43 48 41 4e 4e 45 4c 2d 4f 50 2d 52 45 50  ) CHANNEL-OP-REP
7060: 4c 41 43 45 20 46 41 4c 53 45 20 30 29 20 29 0a  LACE FALSE 0) ).
7070: 20 20 20 20 28 73 65 74 21 20 62 75 66 66 65 72      (set! buffer
7080: 20 28 63 61 72 20 28 67 69 6d 70 2d 65 64 69 74   (car (gimp-edit
7090: 2d 6e 61 6d 65 64 2d 63 6f 70 79 20 6f 72 69 67  -named-copy orig
70a0: 2d 64 72 61 77 61 62 6c 65 20 22 62 75 66 66 65  -drawable "buffe
70b0: 72 22 29 29 29 0a 20 20 20 20 28 73 65 74 21 20  r"))).    (set! 
70c0: 69 6d 61 67 65 20 28 63 61 72 20 28 67 69 6d 70  image (car (gimp
70d0: 2d 65 64 69 74 2d 6e 61 6d 65 64 2d 70 61 73 74  -edit-named-past
70e0: 65 2d 61 73 2d 6e 65 77 20 62 75 66 66 65 72 29  e-as-new buffer)
70f0: 29 29 0a 20 20 20 20 28 67 69 6d 70 2d 69 6d 61  )).    (gimp-ima
7100: 67 65 2d 75 6e 64 6f 2d 64 69 73 61 62 6c 65 20  ge-undo-disable 
7110: 69 6d 61 67 65 29 0a 20 20 20 20 28 73 65 74 21  image).    (set!
7120: 20 64 69 73 70 6c 61 79 20 28 63 61 72 20 28 67   display (car (g
7130: 69 6d 70 2d 64 69 73 70 6c 61 79 2d 6e 65 77 20  imp-display-new 
7140: 69 6d 61 67 65 29 29 29 0a 20 20 20 20 28 73 65  image))).    (se
7150: 74 21 20 6c 61 79 65 72 20 28 63 61 72 20 28 67  t! layer (car (g
7160: 69 6d 70 2d 69 6d 61 67 65 2d 67 65 74 2d 61 63  imp-image-get-ac
7170: 74 69 76 65 2d 6c 61 79 65 72 20 69 6d 61 67 65  tive-layer image
7180: 29 29 29 0a 20 20 20 20 28 67 69 6d 70 2d 62 75  ))).    (gimp-bu
7190: 66 66 65 72 2d 64 65 6c 65 74 65 20 62 75 66 66  ffer-delete buff
71a0: 65 72 29 0a 20 20 20 20 28 6c 65 74 2a 20 28 28  er).    (let* ((
71b0: 6e 75 6d 2d 6d 6f 6e 74 68 73 20 28 73 75 63 63  num-months (succ
71c0: 20 28 6d 6f 64 75 6c 6f 20 28 2d 20 65 6e 64 2d   (modulo (- end-
71d0: 6d 6f 6e 74 68 20 73 74 61 72 74 2d 6d 6f 6e 74  month start-mont
71e0: 68 29 20 31 32 29 29 29 0a 20 20 20 20 20 20 20  h) 12))).       
71f0: 20 20 20 20 28 6e 75 6d 2d 63 6f 6c 73 20 28 6d      (num-cols (m
7200: 69 6e 20 28 74 72 75 6e 63 61 74 65 20 6e 75 6d  in (truncate num
7210: 2d 63 6f 6c 73 29 20 6e 75 6d 2d 6d 6f 6e 74 68  -cols) num-month
7220: 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28  s)).           (
7230: 77 69 64 74 68 20 28 63 61 72 20 28 67 69 6d 70  width (car (gimp
7240: 2d 64 72 61 77 61 62 6c 65 2d 77 69 64 74 68 20  -drawable-width 
7250: 6c 61 79 65 72 29 29 29 0a 20 20 20 20 20 20 20  layer))).       
7260: 20 20 20 20 28 68 65 69 67 68 74 20 28 63 61 72      (height (car
7270: 20 28 67 69 6d 70 2d 64 72 61 77 61 62 6c 65 2d   (gimp-drawable-
7280: 68 65 69 67 68 74 20 6c 61 79 65 72 29 29 29 0a  height layer))).
7290: 20 20 20 20 20 20 20 20 20 20 20 28 78 20 30 29             (x 0)
72a0: 0a 20 20 20 20 20 20 20 20 20 20 20 28 79 20 30  .           (y 0
72b0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 77 20  ).           (w 
72c0: 28 66 6c 6f 6f 72 20 28 2f 20 77 69 64 74 68 20  (floor (/ width 
72d0: 6e 75 6d 2d 63 6f 6c 73 29 29 29 0a 20 20 20 20  num-cols))).    
72e0: 20 20 20 20 20 20 20 28 6e 75 6d 2d 72 6f 77 73         (num-rows
72f0: 20 28 63 65 69 6c 69 6e 67 20 28 2f 20 6e 75 6d   (ceiling (/ num
7300: 2d 6d 6f 6e 74 68 73 20 6e 75 6d 2d 63 6f 6c 73  -months num-cols
7310: 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28  ))).           (
7320: 68 20 28 66 6c 6f 6f 72 20 28 2f 20 68 65 69 67  h (floor (/ heig
7330: 68 74 20 6e 75 6d 2d 72 6f 77 73 29 29 29 0a 20  ht num-rows))). 
7340: 20 20 20 20 20 20 20 20 20 20 28 77 2d 73 65 6c            (w-sel
7350: 20 28 2f 20 28 2d 20 77 69 64 74 68 20 28 2a 20   (/ (- width (* 
7360: 77 69 64 74 68 20 70 61 64 64 69 6e 67 20 30 2e  width padding 0.
7370: 30 31 29 29 20 6e 75 6d 2d 63 6f 6c 73 29 29 0a  01)) num-cols)).
7380: 20 20 20 20 20 20 20 20 20 20 20 28 68 2d 73 65             (h-se
7390: 6c 20 77 2d 73 65 6c 29 20 3b 20 61 73 73 75 6d  l w-sel) ; assum
73a0: 65 20 73 71 75 61 72 65 20 6d 6f 6e 74 68 20 69  e square month i
73b0: 6e 69 74 69 61 6c 6c 79 0a 20 20 20 20 20 20 20  nitially.       
73c0: 20 20 20 20 28 78 2d 6f 66 66 73 65 74 73 20 27      (x-offsets '
73d0: 28 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28  ()).           (
73e0: 79 2d 6f 66 66 73 65 74 73 20 27 28 29 29 0a 20  y-offsets '()). 
73f0: 20 20 20 20 20 20 20 20 20 20 28 74 65 6d 70 2d            (temp-
7400: 6c 61 79 65 72 20 30 29 0a 20 20 20 20 20 20 20  layer 0).       
7410: 20 20 20 20 28 6d 6f 6e 74 68 2d 69 6e 64 65 78      (month-index
7420: 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 28   0).           (
7430: 6d 6f 6e 74 68 2d 66 6f 6e 74 73 69 7a 65 20 36  month-fontsize 6
7440: 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 78  ).           (ex
7450: 74 65 6e 74 73 20 27 28 29 29 20 29 0a 20 20 20  tents '()) ).   
7460: 20 20 20 28 77 68 65 6e 20 28 3c 20 68 20 28 2b     (when (< h (+
7470: 20 68 2d 73 65 6c 20 28 2a 20 68 2d 73 65 6c 20   h-sel (* h-sel 
7480: 70 61 64 64 69 6e 67 20 30 2e 30 31 29 29 29 20  padding 0.01))) 
7490: 3b 20 73 68 72 69 6e 6b 20 6d 6f 6e 74 68 20 68  ; shrink month h
74a0: 65 69 67 68 74 20 74 6f 20 6d 61 6b 65 20 72 6f  eight to make ro
74b0: 6f 6d 20 66 6f 72 20 62 61 6e 6e 65 72 0a 20 20  om for banner.  
74c0: 20 20 20 20 20 20 28 73 65 74 21 20 68 2d 73 65        (set! h-se
74d0: 6c 20 28 2d 20 68 20 28 2a 20 68 20 70 61 64 64  l (- h (* h padd
74e0: 69 6e 67 20 30 2e 30 30 39 29 29 29 20 3b 20 69  ing 0.009))) ; i
74f0: 6e 63 72 65 61 73 65 20 76 65 72 74 69 63 61 6c  ncrease vertical
7500: 20 70 61 64 64 69 6e 67 20 61 20 62 69 74 0a 20   padding a bit. 
7510: 20 20 20 20 20 20 20 28 73 65 74 21 20 77 2d 73         (set! w-s
7520: 65 6c 20 68 2d 73 65 6c 29 20 3b 20 72 65 2d 63  el h-sel) ; re-c
7530: 61 6c 63 75 6c 61 74 65 20 68 6f 72 69 7a 6f 6e  alculate horizon
7540: 74 61 6c 20 6c 61 79 6f 75 74 0a 20 20 20 20 20  tal layout.     
7550: 20 20 20 29 0a 20 20 20 20 20 20 28 73 65 74 21     ).      (set!
7560: 20 6d 6f 6e 74 68 2d 66 6f 6e 74 73 69 7a 65 20   month-fontsize 
7570: 28 61 70 70 6c 79 20 6d 69 6e 20 28 6d 61 70 20  (apply min (map 
7580: 28 6c 61 6d 62 64 61 20 28 74 65 78 74 29 20 0a  (lambda (text) .
7590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
75a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
75b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
75c0: 73 67 2d 63 61 6c 65 6e 64 61 72 2d 63 61 6c 63  sg-calendar-calc
75d0: 2d 66 6f 6e 74 73 69 7a 65 20 74 65 78 74 20 74  -fontsize text t
75e0: 65 78 74 2d 66 6f 6e 74 20 31 30 30 20 77 2d 73  ext-font 100 w-s
75f0: 65 6c 20 28 2d 20 68 20 68 2d 73 65 6c 29 29 20  el (- h h-sel)) 
7600: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
7610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7620: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61               (ca
7630: 72 20 28 6c 69 73 74 2d 72 65 66 20 73 67 2d 63  r (list-ref sg-c
7640: 61 6c 65 6e 64 61 72 2d 74 72 61 6e 73 6c 61 74  alendar-translat
7650: 69 6f 6e 73 20 6c 61 6e 67 29 29 20 29 29 29 0a  ions lang)) ))).
7660: 20 20 20 20 20 20 28 73 65 74 21 20 79 20 28 2b        (set! y (+
7670: 20 28 63 61 64 72 20 28 67 69 6d 70 2d 74 65 78   (cadr (gimp-tex
7680: 74 2d 67 65 74 2d 65 78 74 65 6e 74 73 2d 66 6f  t-get-extents-fo
7690: 6e 74 6e 61 6d 65 20 28 63 61 61 72 20 28 6c 69  ntname (caar (li
76a0: 73 74 2d 72 65 66 20 73 67 2d 63 61 6c 65 6e 64  st-ref sg-calend
76b0: 61 72 2d 74 72 61 6e 73 6c 61 74 69 6f 6e 73 20  ar-translations 
76c0: 6c 61 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20  lang)).         
76d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
76e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
76f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
7700: 6e 74 68 2d 66 6f 6e 74 73 69 7a 65 20 0a 20 20  nth-fontsize .  
7710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7740: 20 20 20 20 20 50 49 58 45 4c 53 20 0a 20 20 20       PIXELS .   
7750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7780: 20 20 20 20 74 65 78 74 2d 66 6f 6e 74 20 29 29      text-font ))
7790: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
77a0: 20 20 32 29 20 29 0a 20 20 20 20 20 20 28 73 65    2) ).      (se
77b0: 74 21 20 79 2d 6f 66 66 73 65 74 73 20 28 69 66  t! y-offsets (if
77c0: 20 28 3e 20 6e 75 6d 2d 72 6f 77 73 20 31 29 0a   (> num-rows 1).
77d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
77e0: 20 20 20 20 20 20 20 20 28 6d 61 70 20 74 72 75          (map tru
77f0: 6e 63 61 74 65 20 28 61 6c 67 65 62 72 61 69 63  ncate (algebraic
7800: 2d 70 72 6f 67 20 79 20 28 2d 20 68 65 69 67 68  -prog y (- heigh
7810: 74 20 68 2d 73 65 6c 29 20 6e 75 6d 2d 72 6f 77  t h-sel) num-row
7820: 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  s)).            
7830: 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73              (lis
7840: 74 20 79 29 20 29 29 0a 20 20 20 20 20 20 28 77  t y) )).      (w
7850: 68 69 6c 65 20 28 70 61 69 72 3f 20 79 2d 6f 66  hile (pair? y-of
7860: 66 73 65 74 73 29 0a 20 20 20 20 20 20 20 20 28  fsets).        (
7870: 73 65 74 21 20 78 2d 6f 66 66 73 65 74 73 20 28  set! x-offsets (
7880: 69 66 20 28 3e 20 6e 75 6d 2d 63 6f 6c 73 20 31  if (> num-cols 1
7890: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
78a0: 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70              (map
78b0: 20 74 72 75 6e 63 61 74 65 20 28 61 6c 67 65 62   truncate (algeb
78c0: 72 61 69 63 2d 70 72 6f 67 20 30 20 28 2d 20 77  raic-prog 0 (- w
78d0: 69 64 74 68 20 77 2d 73 65 6c 29 20 6e 75 6d 2d  idth w-sel) num-
78e0: 63 6f 6c 73 29 29 0a 20 20 20 20 20 20 20 20 20  cols)).         
78f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7900: 20 28 6c 69 73 74 20 28 2f 20 28 2d 20 77 69 64   (list (/ (- wid
7910: 74 68 20 77 2d 73 65 6c 29 20 32 29 29 20 29 29  th w-sel) 2)) ))
7920: 0a 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20  .        (while 
7930: 28 61 6e 64 20 28 70 61 69 72 3f 20 78 2d 6f 66  (and (pair? x-of
7940: 66 73 65 74 73 29 20 28 3c 20 6d 6f 6e 74 68 2d  fsets) (< month-
7950: 69 6e 64 65 78 20 6e 75 6d 2d 6d 6f 6e 74 68 73  index num-months
7960: 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65  )).          (se
7970: 74 21 20 78 20 28 63 61 72 20 78 2d 6f 66 66 73  t! x (car x-offs
7980: 65 74 73 29 29 0a 20 20 20 20 20 20 20 20 20 20  ets)).          
7990: 28 73 65 74 21 20 79 20 28 63 61 72 20 79 2d 6f  (set! y (car y-o
79a0: 66 66 73 65 74 73 29 29 0a 20 20 20 20 20 20 20  ffsets)).       
79b0: 20 20 20 28 67 69 6d 70 2d 72 65 63 74 2d 73 65     (gimp-rect-se
79c0: 6c 65 63 74 20 69 6d 61 67 65 20 78 20 79 20 77  lect image x y w
79d0: 2d 73 65 6c 20 68 2d 73 65 6c 20 43 48 41 4e 4e  -sel h-sel CHANN
79e0: 45 4c 2d 4f 50 2d 52 45 50 4c 41 43 45 20 46 41  EL-OP-REPLACE FA
79f0: 4c 53 45 20 30 29 0a 20 20 20 20 20 20 20 20 20  LSE 0).         
7a00: 20 28 73 65 74 21 20 62 75 66 66 65 72 20 28 63   (set! buffer (c
7a10: 61 72 20 28 67 69 6d 70 2d 65 64 69 74 2d 6e 61  ar (gimp-edit-na
7a20: 6d 65 64 2d 63 6f 70 79 20 6c 61 79 65 72 20 22  med-copy layer "
7a30: 62 75 66 66 65 72 22 29 29 29 0a 20 20 20 20 20  buffer"))).     
7a40: 20 20 20 20 20 28 67 69 6d 70 2d 66 6c 6f 61 74       (gimp-float
7a50: 69 6e 67 2d 73 65 6c 2d 74 6f 2d 6c 61 79 65 72  ing-sel-to-layer
7a60: 20 28 63 61 72 20 28 67 69 6d 70 2d 65 64 69 74   (car (gimp-edit
7a70: 2d 6e 61 6d 65 64 2d 70 61 73 74 65 20 6c 61 79  -named-paste lay
7a80: 65 72 20 62 75 66 66 65 72 20 46 41 4c 53 45 29  er buffer FALSE)
7a90: 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65  )).          (se
7aa0: 74 21 20 74 65 6d 70 2d 6c 61 79 65 72 20 28 63  t! temp-layer (c
7ab0: 61 72 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 67  ar (gimp-image-g
7ac0: 65 74 2d 61 63 74 69 76 65 2d 6c 61 79 65 72 20  et-active-layer 
7ad0: 69 6d 61 67 65 29 29 29 0a 20 20 20 20 20 20 20  image))).       
7ae0: 20 20 20 28 67 69 6d 70 2d 62 75 66 66 65 72 2d     (gimp-buffer-
7af0: 64 65 6c 65 74 65 20 62 75 66 66 65 72 29 0a 20  delete buffer). 
7b00: 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28           (let ((
7b10: 6d 6f 6e 74 68 20 28 6d 6f 64 75 6c 6f 20 28 2b  month (modulo (+
7b20: 20 73 74 61 72 74 2d 6d 6f 6e 74 68 20 6d 6f 6e   start-month mon
7b30: 74 68 2d 69 6e 64 65 78 29 20 31 32 29 29 29 0a  th-index) 12))).
7b40: 20 20 20 20 20 20 20 20 20 20 20 20 28 73 63 72              (scr
7b50: 69 70 74 2d 66 75 2d 73 67 2d 63 61 6c 65 6e 64  ipt-fu-sg-calend
7b60: 61 72 20 69 6d 61 67 65 20 74 65 6d 70 2d 6c 61  ar image temp-la
7b70: 79 65 72 20 6c 61 6e 67 20 6d 6f 6e 74 68 20 79  yer lang month y
7b80: 65 61 72 20 73 75 6e 64 61 79 3f 20 0a 20 20 20  ear sunday? .   
7b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7bb0: 6c 65 74 74 65 72 73 2d 69 6e 2d 64 61 79 20 6c  letters-in-day l
7bc0: 61 79 6f 75 74 20 74 65 78 74 2d 66 6f 6e 74 20  ayout text-font 
7bd0: 6e 75 6d 62 65 72 2d 66 6f 6e 74 20 0a 20 20 20  number-font .   
7be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c00: 66 6f 6e 74 73 69 7a 65 25 20 6a 75 73 74 69 66  fontsize% justif
7c10: 79 3f 20 62 6f 72 64 65 72 20 62 6f 72 64 65 72  y? border border
7c20: 2d 63 6f 6c 6f 72 20 67 72 61 76 69 74 79 29 0a  -color gravity).
7c30: 20 20 20 20 20 20 20 20 20 20 20 20 28 67 69 6d              (gim
7c40: 70 2d 69 6d 61 67 65 2d 72 65 6d 6f 76 65 2d 6c  p-image-remove-l
7c50: 61 79 65 72 20 69 6d 61 67 65 20 74 65 6d 70 2d  ayer image temp-
7c60: 6c 61 79 65 72 29 0a 20 20 20 20 20 20 20 20 20  layer).         
7c70: 20 20 20 28 73 65 74 21 20 65 78 74 65 6e 74 73     (set! extents
7c80: 20 28 67 69 6d 70 2d 74 65 78 74 2d 67 65 74 2d   (gimp-text-get-
7c90: 65 78 74 65 6e 74 73 2d 66 6f 6e 74 6e 61 6d 65  extents-fontname
7ca0: 20 28 6c 69 73 74 2d 72 65 66 20 28 63 61 72 20   (list-ref (car 
7cb0: 28 6c 69 73 74 2d 72 65 66 20 73 67 2d 63 61 6c  (list-ref sg-cal
7cc0: 65 6e 64 61 72 2d 74 72 61 6e 73 6c 61 74 69 6f  endar-translatio
7cd0: 6e 73 20 6c 61 6e 67 29 29 20 6d 6f 6e 74 68 29  ns lang)) month)
7ce0: 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
7cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d10: 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 6e 74              mont
7d20: 68 2d 66 6f 6e 74 73 69 7a 65 20 0a 20 20 20 20  h-fontsize .    
7d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d60: 20 20 20 20 20 20 50 49 58 45 4c 53 20 0a 20 20        PIXELS .  
7d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7da0: 20 20 20 20 20 20 20 20 74 65 78 74 2d 66 6f 6e          text-fon
7db0: 74 20 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  t )).           
7dc0: 20 28 73 65 74 21 20 74 65 6d 70 2d 6c 61 79 65   (set! temp-laye
7dd0: 72 20 28 63 61 72 20 28 67 69 6d 70 2d 74 65 78  r (car (gimp-tex
7de0: 74 2d 66 6f 6e 74 6e 61 6d 65 20 69 6d 61 67 65  t-fontname image
7df0: 20 2d 31 20 0a 20 20 20 20 20 20 20 20 20 20 20   -1 .           
7e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e20: 20 20 20 20 20 20 20 20 20 20 20 28 2b 20 78 20             (+ x 
7e30: 28 2f 20 28 2d 20 77 2d 73 65 6c 20 28 63 61 72  (/ (- w-sel (car
7e40: 20 65 78 74 65 6e 74 73 29 29 20 32 29 29 0a 20   extents)) 2)). 
7e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e80: 20 20 20 20 20 28 2d 20 79 20 28 63 61 64 72 20       (- y (cadr 
7e90: 65 78 74 65 6e 74 73 29 20 28 2f 20 28 63 61 64  extents) (/ (cad
7ea0: 64 64 72 20 65 78 74 65 6e 74 73 29 20 2d 32 29  ddr extents) -2)
7eb0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
7ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ee0: 20 20 20 20 20 20 20 20 28 6c 69 73 74 2d 72 65          (list-re
7ef0: 66 20 28 63 61 72 20 28 6c 69 73 74 2d 72 65 66  f (car (list-ref
7f00: 20 73 67 2d 63 61 6c 65 6e 64 61 72 2d 74 72 61   sg-calendar-tra
7f10: 6e 73 6c 61 74 69 6f 6e 73 20 6c 61 6e 67 29 29  nslations lang))
7f20: 20 6d 6f 6e 74 68 29 0a 20 20 20 20 20 20 20 20   month).        
7f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 20                0 
7f60: 54 52 55 45 20 0a 20 20 20 20 20 20 20 20 20 20  TRUE .          
7f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f90: 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 6e 74              mont
7fa0: 68 2d 66 6f 6e 74 73 69 7a 65 20 50 49 58 45 4c  h-fontsize PIXEL
7fb0: 53 20 74 65 78 74 2d 66 6f 6e 74 20 29 29 29 29  S text-font ))))
7fc0: 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 21  .          (set!
7fd0: 20 78 2d 6f 66 66 73 65 74 73 20 28 63 64 72 20   x-offsets (cdr 
7fe0: 78 2d 6f 66 66 73 65 74 73 29 29 0a 20 20 20 20  x-offsets)).    
7ff0: 20 20 20 20 20 20 28 73 65 74 21 20 6d 6f 6e 74        (set! mont
8000: 68 2d 69 6e 64 65 78 20 28 73 75 63 63 20 6d 6f  h-index (succ mo
8010: 6e 74 68 2d 69 6e 64 65 78 29 29 20 29 0a 20 20  nth-index)) ).  
8020: 20 20 20 20 20 20 28 73 65 74 21 20 79 2d 6f 66        (set! y-of
8030: 66 73 65 74 73 20 28 63 64 72 20 79 2d 6f 66 66  fsets (cdr y-off
8040: 73 65 74 73 29 29 20 29 20 29 0a 20 20 20 20 3b  sets)) ) ).    ;
8050: 3b 20 4e 6f 77 2c 20 74 72 61 6e 73 66 65 72 20  ; Now, transfer 
8060: 74 68 65 20 72 65 6e 64 65 72 65 64 20 6c 61 79  the rendered lay
8070: 65 72 73 20 74 6f 20 6f 72 69 67 69 6e 61 6c 20  ers to original 
8080: 69 6d 61 67 65 0a 20 20 20 20 28 67 69 6d 70 2d  image.    (gimp-
8090: 73 65 6c 65 63 74 69 6f 6e 2d 6e 6f 6e 65 20 69  selection-none i
80a0: 6d 61 67 65 29 0a 20 20 20 20 28 6c 65 74 20 6c  mage).    (let l
80b0: 6f 6f 70 20 28 28 6c 61 79 65 72 73 20 28 63 64  oop ((layers (cd
80c0: 72 20 28 72 65 76 65 72 73 65 20 28 76 65 63 74  r (reverse (vect
80d0: 6f 72 2d 3e 6c 69 73 74 20 28 63 61 64 72 20 28  or->list (cadr (
80e0: 67 69 6d 70 2d 69 6d 61 67 65 2d 67 65 74 2d 6c  gimp-image-get-l
80f0: 61 79 65 72 73 20 69 6d 61 67 65 29 29 29 29 29  ayers image)))))
8100: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
8110: 20 28 74 61 72 67 65 74 2d 6c 61 79 65 72 20 6f   (target-layer o
8120: 72 69 67 2d 64 72 61 77 61 62 6c 65 29 20 29 0a  rig-drawable) ).
8130: 20 20 20 20 20 20 28 69 66 20 28 6e 75 6c 6c 3f        (if (null?
8140: 20 6c 61 79 65 72 73 29 0a 20 20 20 20 20 20 20   layers).       
8150: 20 23 74 0a 20 20 20 20 20 20 20 20 28 62 65 67   #t.        (beg
8160: 69 6e 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65  in.          (le
8170: 74 20 28 28 78 20 28 63 61 72 20 28 67 69 6d 70  t ((x (car (gimp
8180: 2d 64 72 61 77 61 62 6c 65 2d 6f 66 66 73 65 74  -drawable-offset
8190: 73 20 28 63 61 72 20 6c 61 79 65 72 73 29 29 29  s (car layers)))
81a0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
81b0: 20 20 28 79 20 28 63 61 64 72 20 28 67 69 6d 70    (y (cadr (gimp
81c0: 2d 64 72 61 77 61 62 6c 65 2d 6f 66 66 73 65 74  -drawable-offset
81d0: 73 20 28 63 61 72 20 6c 61 79 65 72 73 29 29 29  s (car layers)))
81e0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
81f0: 20 20 28 70 6f 73 20 28 63 61 72 20 28 67 69 6d    (pos (car (gim
8200: 70 2d 69 6d 61 67 65 2d 67 65 74 2d 6c 61 79 65  p-image-get-laye
8210: 72 2d 70 6f 73 69 74 69 6f 6e 20 6f 72 69 67 2d  r-position orig-
8220: 69 6d 61 67 65 20 74 61 72 67 65 74 2d 6c 61 79  image target-lay
8230: 65 72 29 29 29 20 29 0a 20 20 20 20 20 20 20 20  er))) ).        
8240: 20 20 20 20 28 73 65 74 21 20 74 61 72 67 65 74      (set! target
8250: 2d 6c 61 79 65 72 20 28 63 61 72 20 28 67 69 6d  -layer (car (gim
8260: 70 2d 6c 61 79 65 72 2d 6e 65 77 2d 66 72 6f 6d  p-layer-new-from
8270: 2d 64 72 61 77 61 62 6c 65 20 28 63 61 72 20 6c  -drawable (car l
8280: 61 79 65 72 73 29 20 6f 72 69 67 2d 69 6d 61 67  ayers) orig-imag
8290: 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  e))).           
82a0: 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 61 64 64   (gimp-image-add
82b0: 2d 6c 61 79 65 72 20 6f 72 69 67 2d 69 6d 61 67  -layer orig-imag
82c0: 65 20 74 61 72 67 65 74 2d 6c 61 79 65 72 20 70  e target-layer p
82d0: 6f 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  os).            
82e0: 28 67 69 6d 70 2d 6c 61 79 65 72 2d 73 65 74 2d  (gimp-layer-set-
82f0: 6f 66 66 73 65 74 73 20 74 61 72 67 65 74 2d 6c  offsets target-l
8300: 61 79 65 72 20 28 2b 20 6f 72 69 67 2d 78 20 78  ayer (+ orig-x x
8310: 29 20 28 2b 20 6f 72 69 67 2d 79 20 79 29 29 20  ) (+ orig-y y)) 
8320: 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f  ).          (loo
8330: 70 20 28 63 64 72 20 6c 61 79 65 72 73 29 20 74  p (cdr layers) t
8340: 61 72 67 65 74 2d 6c 61 79 65 72 29 20 29 20 29  arget-layer) ) )
8350: 20 29 0a 20 20 20 20 20 20 20 20 20 20 0a 20 20   ).          .  
8360: 20 20 28 67 69 6d 70 2d 73 65 6c 65 63 74 69 6f    (gimp-selectio
8370: 6e 2d 6c 6f 61 64 20 6f 72 69 67 2d 73 65 6c 29  n-load orig-sel)
8380: 0a 20 20 20 20 28 67 69 6d 70 2d 69 6d 61 67 65  .    (gimp-image
8390: 2d 72 65 6d 6f 76 65 2d 63 68 61 6e 6e 65 6c 20  -remove-channel 
83a0: 6f 72 69 67 2d 69 6d 61 67 65 20 6f 72 69 67 2d  orig-image orig-
83b0: 73 65 6c 29 0a 20 20 20 20 28 67 69 6d 70 2d 69  sel).    (gimp-i
83c0: 6d 61 67 65 2d 73 65 74 2d 61 63 74 69 76 65 2d  mage-set-active-
83d0: 6c 61 79 65 72 20 6f 72 69 67 2d 69 6d 61 67 65  layer orig-image
83e0: 20 6f 72 69 67 2d 64 72 61 77 61 62 6c 65 29 0a   orig-drawable).
83f0: 20 20 20 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d      (gimp-image-
8400: 75 6e 64 6f 2d 67 72 6f 75 70 2d 65 6e 64 20 6f  undo-group-end o
8410: 72 69 67 2d 69 6d 61 67 65 29 0a 20 20 20 20 28  rig-image).    (
8420: 67 69 6d 70 2d 64 69 73 70 6c 61 79 2d 64 65 6c  gimp-display-del
8430: 65 74 65 20 64 69 73 70 6c 61 79 29 0a 20 20 20  ete display).   
8440: 20 28 67 69 6d 70 2d 64 69 73 70 6c 61 79 73 2d   (gimp-displays-
8450: 66 6c 75 73 68 29 0a 20 20 20 20 29 0a 20 20 29  flush).    ).  )
8460: 0a 0a 28 73 63 72 69 70 74 2d 66 75 2d 72 65 67  ..(script-fu-reg
8470: 69 73 74 65 72 20 22 73 63 72 69 70 74 2d 66 75  ister "script-fu
8480: 2d 73 67 2d 63 61 6c 65 6e 64 61 72 22 0a 20 20  -sg-calendar".  
8490: 22 43 61 6c 65 6e 64 61 72 2e 2e 2e 22 0a 20 20  "Calendar...".  
84a0: 22 47 65 6e 65 72 61 74 65 20 61 20 63 61 6c 65  "Generate a cale
84b0: 6e 64 61 72 20 6f 76 65 72 6c 61 79 20 66 6f 72  ndar overlay for
84c0: 20 63 75 72 72 65 6e 74 20 6c 61 79 65 72 22 0a   current layer".
84d0: 20 20 22 53 61 75 6c 20 47 6f 6f 64 65 22 0a 20    "Saul Goode". 
84e0: 20 22 53 61 75 6c 20 47 6f 6f 64 65 22 0a 20 20   "Saul Goode".  
84f0: 22 31 30 2f 32 36 2f 30 39 2c 20 75 70 64 61 74  "10/26/09, updat
8500: 65 64 20 4a 61 6e 20 32 30 31 32 22 0a 20 20 22  ed Jan 2012".  "
8510: 52 47 42 2a 2c 47 52 41 59 2a 22 0a 20 20 53 46  RGB*,GRAY*".  SF
8520: 2d 49 4d 41 47 45 20 20 20 20 22 49 6d 61 67 65  -IMAGE    "Image
8530: 22 20 20 20 20 30 0a 20 20 53 46 2d 44 52 41 57  "    0.  SF-DRAW
8540: 41 42 4c 45 20 22 44 72 61 77 61 62 6c 65 22 20  ABLE "Drawable" 
8550: 20 30 0a 20 20 53 46 2d 4f 50 54 49 4f 4e 20 22   0.  SF-OPTION "
8560: 4c 61 6e 67 75 61 67 65 22 20 73 67 2d 63 61 6c  Language" sg-cal
8570: 65 6e 64 61 72 2d 6c 61 6e 67 75 61 67 65 73 0a  endar-languages.
8580: 20 20 53 46 2d 4f 50 54 49 4f 4e 20 22 4d 6f 6e    SF-OPTION "Mon
8590: 74 68 22 20 28 63 61 61 72 20 73 67 2d 63 61 6c  th" (caar sg-cal
85a0: 65 6e 64 61 72 2d 74 72 61 6e 73 6c 61 74 69 6f  endar-translatio
85b0: 6e 73 29 0a 20 20 53 46 2d 41 44 4a 55 53 54 4d  ns).  SF-ADJUSTM
85c0: 45 4e 54 20 22 59 65 61 72 22 20 27 28 20 32 30  ENT "Year" '( 20
85d0: 31 33 20 31 37 35 33 20 32 30 35 30 20 31 20 31  13 1753 2050 1 1
85e0: 30 20 30 20 31 20 29 0a 20 20 53 46 2d 54 4f 47  0 0 1 ).  SF-TOG
85f0: 47 4c 45 20 22 53 75 6e 64 61 79 20 66 69 72 73  GLE "Sunday firs
8600: 74 22 20 54 52 55 45 0a 20 20 53 46 2d 4f 50 54  t" TRUE.  SF-OPT
8610: 49 4f 4e 20 22 44 61 79 20 66 6f 72 6d 61 74 22  ION "Day format"
8620: 20 27 28 22 53 20 4d 20 54 20 2e 2e 2e 22 20 22   '("S M T ..." "
8630: 53 75 20 4d 6f 20 54 75 20 2e 2e 2e 22 20 22 53  Su Mo Tu ..." "S
8640: 75 6e 20 4d 6f 6e 20 54 75 65 20 2e 2e 2e 22 29  un Mon Tue ...")
8650: 0a 20 20 53 46 2d 4f 50 54 49 4f 4e 20 22 4c 61  .  SF-OPTION "La
8660: 79 6f 75 74 22 20 27 28 20 22 41 6c 6c 6f 77 20  yout" '( "Allow 
8670: 36 2d 77 65 65 6b 20 73 70 61 6e 22 20 22 46 6f  6-week span" "Fo
8680: 72 63 65 20 36 2d 77 65 65 6b 20 73 70 61 6e 22  rce 6-week span"
8690: 20 22 57 72 61 70 20 57 65 65 6b 20 36 20 74 6f   "Wrap Week 6 to
86a0: 20 57 65 65 6b 20 31 22 20 22 57 72 61 70 20 57   Week 1" "Wrap W
86b0: 65 65 6b 20 36 20 74 6f 20 57 65 65 6b 20 35 22  eek 6 to Week 5"
86c0: 29 0a 20 20 53 46 2d 46 4f 4e 54 20 22 54 65 78  ).  SF-FONT "Tex
86d0: 74 20 66 6f 6e 74 22 20 22 53 61 6e 73 22 20 0a  t font" "Sans" .
86e0: 20 20 53 46 2d 46 4f 4e 54 20 22 4e 75 6d 62 65    SF-FONT "Numbe
86f0: 72 20 66 6f 6e 74 22 20 22 53 61 6e 73 22 20 0a  r font" "Sans" .
8700: 20 20 53 46 2d 41 44 4a 55 53 54 4d 45 4e 54 20    SF-ADJUSTMENT 
8710: 22 46 6f 6e 74 20 53 69 7a 65 20 28 25 20 6f 66  "Font Size (% of
8720: 20 6d 61 78 69 6d 75 6d 29 22 20 27 28 20 31 30   maximum)" '( 10
8730: 30 20 30 20 31 30 30 20 31 20 31 30 20 30 20 31  0 0 100 1 10 0 1
8740: 29 0a 20 20 53 46 2d 54 4f 47 47 4c 45 20 22 52  ).  SF-TOGGLE "R
8750: 69 67 68 74 20 4a 75 73 74 69 66 79 22 20 54 52  ight Justify" TR
8760: 55 45 0a 20 20 53 46 2d 41 44 4a 55 53 54 4d 45  UE.  SF-ADJUSTME
8770: 4e 54 20 22 42 6f 72 64 65 72 20 77 69 64 74 68  NT "Border width
8780: 22 20 27 28 20 31 20 30 20 35 20 31 20 31 20 30  " '( 1 0 5 1 1 0
8790: 20 31 20 29 0a 20 20 53 46 2d 43 4f 4c 4f 52 20   1 ).  SF-COLOR 
87a0: 22 42 6f 72 64 65 72 20 63 6f 6c 6f 72 22 20 27  "Border color" '
87b0: 28 30 20 30 20 30 29 0a 20 20 53 46 2d 4f 50 54  (0 0 0).  SF-OPT
87c0: 49 4f 4e 20 22 44 61 74 65 20 50 6f 73 69 74 69  ION "Date Positi
87d0: 6f 6e 22 20 27 28 20 22 74 6f 70 2d 6c 65 66 74  on" '( "top-left
87e0: 22 20 22 74 6f 70 2d 63 65 6e 74 65 72 22 20 22  " "top-center" "
87f0: 74 6f 70 2d 72 69 67 68 74 22 20 22 6c 65 66 74  top-right" "left
8800: 2d 63 65 6e 74 65 72 22 20 22 63 65 6e 74 65 72  -center" "center
8810: 22 20 22 72 69 67 68 74 2d 63 65 6e 74 65 72 22  " "right-center"
8820: 20 22 62 6f 74 74 6f 6d 2d 6c 65 66 74 22 20 22   "bottom-left" "
8830: 62 6f 74 74 6f 6d 2d 63 65 6e 74 65 72 22 20 22  bottom-center" "
8840: 62 6f 74 74 6f 6d 2d 72 69 67 68 74 22 29 0a 20  bottom-right"). 
8850: 20 29 0a 28 73 63 72 69 70 74 2d 66 75 2d 6d 65   ).(script-fu-me
8860: 6e 75 2d 72 65 67 69 73 74 65 72 20 22 73 63 72  nu-register "scr
8870: 69 70 74 2d 66 75 2d 73 67 2d 63 61 6c 65 6e 64  ipt-fu-sg-calend
8880: 61 72 22 0a 20 20 22 3c 49 6d 61 67 65 3e 2f 46  ar".  "<Image>/F
8890: 69 6c 74 65 72 73 2f 52 65 6e 64 65 72 22 0a 20  ilters/Render". 
88a0: 20 29 0a 0a 0a 28 73 63 72 69 70 74 2d 66 75 2d   )...(script-fu-
88b0: 72 65 67 69 73 74 65 72 20 22 73 63 72 69 70 74  register "script
88c0: 2d 66 75 2d 73 67 2d 63 61 6c 65 6e 64 61 72 2d  -fu-sg-calendar-
88d0: 79 65 61 72 22 0a 20 20 22 43 61 6c 65 6e 64 61  year".  "Calenda
88e0: 72 20 79 65 61 72 2e 2e 2e 22 0a 20 20 22 47 65  r year...".  "Ge
88f0: 6e 65 72 61 74 65 20 61 20 63 61 6c 65 6e 64 61  nerate a calenda
8900: 72 20 66 6f 72 20 63 75 72 72 65 6e 74 20 6c 61  r for current la
8910: 79 65 72 22 0a 20 20 22 53 61 75 6c 20 47 6f 6f  yer".  "Saul Goo
8920: 64 65 22 0a 20 20 22 53 61 75 6c 20 47 6f 6f 64  de".  "Saul Good
8930: 65 22 0a 20 20 22 44 65 63 20 32 30 31 30 2c 20  e".  "Dec 2010, 
8940: 75 70 64 61 74 65 64 20 4a 61 6e 20 32 30 31 32  updated Jan 2012
8950: 22 0a 20 20 22 52 47 42 2a 2c 47 52 41 59 2a 22  ".  "RGB*,GRAY*"
8960: 0a 20 20 53 46 2d 49 4d 41 47 45 20 20 20 20 22  .  SF-IMAGE    "
8970: 49 6d 61 67 65 22 20 20 20 20 30 0a 20 20 53 46  Image"    0.  SF
8980: 2d 44 52 41 57 41 42 4c 45 20 22 44 72 61 77 61  -DRAWABLE "Drawa
8990: 62 6c 65 22 20 20 30 0a 20 20 53 46 2d 4f 50 54  ble"  0.  SF-OPT
89a0: 49 4f 4e 20 22 4c 61 6e 67 75 61 67 65 22 20 73  ION "Language" s
89b0: 67 2d 63 61 6c 65 6e 64 61 72 2d 6c 61 6e 67 75  g-calendar-langu
89c0: 61 67 65 73 0a 20 20 53 46 2d 41 44 4a 55 53 54  ages.  SF-ADJUST
89d0: 4d 45 4e 54 20 22 59 65 61 72 22 20 27 28 20 32  MENT "Year" '( 2
89e0: 30 31 35 20 31 37 35 33 20 32 30 35 30 20 31 20  015 1753 2050 1 
89f0: 31 30 20 30 20 31 20 29 0a 20 20 53 46 2d 4f 50  10 0 1 ).  SF-OP
8a00: 54 49 4f 4e 20 22 53 74 61 72 74 20 4d 6f 6e 74  TION "Start Mont
8a10: 68 22 20 28 63 61 61 72 20 73 67 2d 63 61 6c 65  h" (caar sg-cale
8a20: 6e 64 61 72 2d 74 72 61 6e 73 6c 61 74 69 6f 6e  ndar-translation
8a30: 73 29 0a 20 20 53 46 2d 4f 50 54 49 4f 4e 20 22  s).  SF-OPTION "
8a40: 45 6e 64 20 4d 6f 6e 74 68 22 20 28 63 6f 6e 73  End Month" (cons
8a50: 20 28 63 61 72 20 28 6c 61 73 74 20 28 63 61 61   (car (last (caa
8a60: 72 20 73 67 2d 63 61 6c 65 6e 64 61 72 2d 74 72  r sg-calendar-tr
8a70: 61 6e 73 6c 61 74 69 6f 6e 73 29 29 29 20 0a 20  anslations))) . 
8a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75               (bu
8aa0: 74 6c 61 73 74 20 28 63 61 61 72 20 73 67 2d 63  tlast (caar sg-c
8ab0: 61 6c 65 6e 64 61 72 2d 74 72 61 6e 73 6c 61 74  alendar-translat
8ac0: 69 6f 6e 73 29 29 29 0a 20 20 53 46 2d 41 44 4a  ions))).  SF-ADJ
8ad0: 55 53 54 4d 45 4e 54 20 22 43 6f 6c 75 6d 6e 73  USTMENT "Columns
8ae0: 22 20 27 28 20 34 20 31 20 31 32 20 31 20 31 30  " '( 4 1 12 1 10
8af0: 20 30 20 31 20 29 0a 20 20 53 46 2d 41 44 4a 55   0 1 ).  SF-ADJU
8b00: 53 54 4d 45 4e 54 20 22 50 61 64 64 69 6e 67 22  STMENT "Padding"
8b10: 20 27 28 20 31 30 20 30 20 38 30 20 31 20 31 30   '( 10 0 80 1 10
8b20: 20 30 20 31 20 29 0a 20 0a 20 20 53 46 2d 54 4f   0 1 ). .  SF-TO
8b30: 47 47 4c 45 20 22 53 75 6e 64 61 79 20 66 69 72  GGLE "Sunday fir
8b40: 73 74 22 20 54 52 55 45 0a 20 20 53 46 2d 4f 50  st" TRUE.  SF-OP
8b50: 54 49 4f 4e 20 22 44 61 79 20 66 6f 72 6d 61 74  TION "Day format
8b60: 22 20 27 28 22 53 20 4d 20 54 20 2e 2e 2e 22 20  " '("S M T ..." 
8b70: 22 53 75 20 4d 6f 20 54 75 20 2e 2e 2e 22 20 22  "Su Mo Tu ..." "
8b80: 53 75 6e 20 4d 6f 6e 20 54 75 65 20 2e 2e 2e 22  Sun Mon Tue ..."
8b90: 29 0a 20 20 53 46 2d 4f 50 54 49 4f 4e 20 22 4c  ).  SF-OPTION "L
8ba0: 61 79 6f 75 74 22 20 27 28 20 22 41 6c 6c 6f 77  ayout" '( "Allow
8bb0: 20 36 2d 77 65 65 6b 20 73 70 61 6e 22 20 22 46   6-week span" "F
8bc0: 6f 72 63 65 20 36 2d 77 65 65 6b 20 73 70 61 6e  orce 6-week span
8bd0: 22 20 22 57 72 61 70 20 57 65 65 6b 20 36 20 74  " "Wrap Week 6 t
8be0: 6f 20 57 65 65 6b 20 31 22 20 22 57 72 61 70 20  o Week 1" "Wrap 
8bf0: 57 65 65 6b 20 36 20 74 6f 20 57 65 65 6b 20 35  Week 6 to Week 5
8c00: 22 29 0a 20 20 53 46 2d 46 4f 4e 54 20 22 54 65  ").  SF-FONT "Te
8c10: 78 74 20 66 6f 6e 74 22 20 22 53 61 6e 73 22 20  xt font" "Sans" 
8c20: 0a 20 20 53 46 2d 46 4f 4e 54 20 22 4e 75 6d 62  .  SF-FONT "Numb
8c30: 65 72 20 66 6f 6e 74 22 20 22 53 61 6e 73 22 20  er font" "Sans" 
8c40: 0a 20 20 53 46 2d 41 44 4a 55 53 54 4d 45 4e 54  .  SF-ADJUSTMENT
8c50: 20 22 46 6f 6e 74 20 53 69 7a 65 20 28 25 20 6f   "Font Size (% o
8c60: 66 20 6d 61 78 69 6d 75 6d 29 22 20 27 28 20 31  f maximum)" '( 1
8c70: 30 30 20 30 20 31 30 30 20 31 20 31 30 20 30 20  00 0 100 1 10 0 
8c80: 31 29 0a 20 20 53 46 2d 54 4f 47 47 4c 45 20 22  1).  SF-TOGGLE "
8c90: 52 69 67 68 74 20 4a 75 73 74 69 66 79 22 20 54  Right Justify" T
8ca0: 52 55 45 0a 20 20 53 46 2d 41 44 4a 55 53 54 4d  RUE.  SF-ADJUSTM
8cb0: 45 4e 54 20 22 42 6f 72 64 65 72 20 77 69 64 74  ENT "Border widt
8cc0: 68 22 20 27 28 20 31 20 30 20 35 20 31 20 31 20  h" '( 1 0 5 1 1 
8cd0: 30 20 31 20 29 0a 20 20 53 46 2d 43 4f 4c 4f 52  0 1 ).  SF-COLOR
8ce0: 20 22 42 6f 72 64 65 72 20 63 6f 6c 6f 72 22 20   "Border color" 
8cf0: 27 28 30 20 30 20 30 29 0a 20 20 53 46 2d 4f 50  '(0 0 0).  SF-OP
8d00: 54 49 4f 4e 20 22 44 61 74 65 20 50 6f 73 69 74  TION "Date Posit
8d10: 69 6f 6e 22 20 27 28 20 22 74 6f 70 2d 6c 65 66  ion" '( "top-lef
8d20: 74 22 20 22 74 6f 70 2d 63 65 6e 74 65 72 22 20  t" "top-center" 
8d30: 22 74 6f 70 2d 72 69 67 68 74 22 20 22 6c 65 66  "top-right" "lef
8d40: 74 2d 63 65 6e 74 65 72 22 20 22 63 65 6e 74 65  t-center" "cente
8d50: 72 22 20 22 72 69 67 68 74 2d 63 65 6e 74 65 72  r" "right-center
8d60: 22 20 22 62 6f 74 74 6f 6d 2d 6c 65 66 74 22 20  " "bottom-left" 
8d70: 22 62 6f 74 74 6f 6d 2d 63 65 6e 74 65 72 22 20  "bottom-center" 
8d80: 22 62 6f 74 74 6f 6d 2d 72 69 67 68 74 22 29 0a  "bottom-right").
8d90: 20 20 29 0a 28 73 63 72 69 70 74 2d 66 75 2d 6d    ).(script-fu-m
8da0: 65 6e 75 2d 72 65 67 69 73 74 65 72 20 22 73 63  enu-register "sc
8db0: 72 69 70 74 2d 66 75 2d 73 67 2d 63 61 6c 65 6e  ript-fu-sg-calen
8dc0: 64 61 72 2d 79 65 61 72 22 0a 20 20 22 3c 49 6d  dar-year".  "<Im
8dd0: 61 67 65 3e 2f 46 69 6c 74 65 72 73 2f 52 65 6e  age>/Filters/Ren
8de0: 64 65 72 22 0a 20 20 29 0a 0a                    der".  )..