#! /usr/bin/env tclsh
# -*- tcl -*- 
# 
# a simple scrip to build the icons given a master file
# invokation: make_icons seed prog
#
# we build these sizes for *nix
set sizes {16  32 48 128 256}

# will put these sizes in the .ico file
set MSsizes {16 32 48 256}

# set seed [lindex $argv 0]
lassign $argv seed prog

if {$prog == {}} {
  puts "Oops!  need a 'program name' (parameter 2)"
  exit 1
}
if {![file exists ../icons]} {
  file mkdir ../icons
}
cd ../icons

if {![file exists $seed]} {
  puts "Oops!  need a seed file that exists, not \{$seed\}"
  exit 1
}

while {[file exists iconbackup_[incr foo]]} {}
set dir [file normalize iconbackup_$foo]

puts "Saving old files in $dir"
file mkdir $dir

foreach f [glob -nocomplain filerunner-*.png] {
  file rename $f ${dir}/$f
}

foreach sz $sizes {
  puts "Building $prog-${sz}x${sz}.png"
  exec convert $seed -resize ${sz}x${sz} $prog-${sz}x${sz}.png
}

# For windows wrap wants:
# 16x16  16 colors
# 32x32  16 colors
# 32x32   2 colors  I don't see the need of this, but the wrap doc wants it.
# 32x32 256 colors

# we add:
# 48X48   16
# 256x256 16
#
# and all icons and in one file

set windowsops [list {16 16} {32 16} {32 2} {32 256} {48 16} {256 16}]

# foreach winop $windowsops {
#   lassign $winop sz col
#   puts "building filerunner-${sz}x${sz}.ico"
#   exec convert $seed -resize \
#       ${sz}x${sz} -colors $col filerunner-${sz}x${sz}-${col}.ico
#   lappend icoFiles filerunner-${sz}x${sz}-${col}.ico
# }
# now put in one file : filerunner-icons.ico
set cmd "convert $seed -bordercolor white -border 0 "
foreach size $windowsops {
  lassign $size sz color
  append cmd "( -clone 0 -resize ${sz}x$sz -colors $color ) "
}
append cmd "-delete 0 -alpha off $prog-icons.ico"

puts "Trying $cmd"

set r [catch "exec {*}$cmd" out]

puts "$out"

# puts "combining ico files into filerunner-icons.ico"
# set r [catch "exec ../Makefiles/makeiconfile.tcl \
#            {*}$icoFiles filerunner-icons.ico" out]
# if {$out != {}} {puts "$out"}
# foreach file $icoFiles {
#   puts "removing $file"
# #  file delete $file
# }
exit
