#!/usr/bin/tclsh

# trowel written in TCL

# open the cement.txt file

if [catch {open cement.txt r} cement_fd] {
  puts stderr "trowel.tcl: could not open cement.txt"
}

# parsing the cement.txt file, one line at a time

set counter 0
set cemented 0
puts "trowel.tcl: parsing cement.txt"
while {1} {
  gets $cement_fd line
  if {$line == ""} {
    break
  }

  # remove comments from line

  set temp [string first # $line]
  if {$temp != -1} {
    set line [string range $line 0 [expr $temp - 1]]
    if {$temp == ""} {
      incr pos 1
      continue
    }
  }

  # convert the string contained in 'line' to a list

  set line [split $line]

  set ii 1  ;# item number, ie, filename, R, G, B, filter, etc.
  set jj 0  ;# list index

  # loop to parse the line from the cement.txt file

  set field1 ""
  set field2 ""
  set field3 ""
  set field4 ""
  set field5 ""
  set field6 ""
  set field7 ""
  while {1} {
    set temp [lindex $line $jj]

    if {$temp == ""} {
      break
    } elseif {$ii == 1} {
      set field1 $temp
      incr ii 1
    } elseif {$ii == 2} {
      set field2 $temp
      incr ii 1
    } elseif {$ii == 3} {
      set field3 $temp
      incr ii 1
    } elseif {$ii == 4} {
      set field4 $temp
      incr ii 1
    } elseif {$ii == 5} {
      if {$temp == "g"} {
        set field5 $temp
        
	incr jj 1
	set temp [lindex $line $jj]
        if {$temp == ""} {
	  break
        } elseif {$temp == "b"} {
          set field6 $temp
	  incr jj 1
	  set field7 [lindex $line $jj]
	}
	break
      } elseif {$temp == "b"} {
        set field5 $temp
	incr jj 1
	set field6 [lindex $line $jj]

	incr jj 1
	set temp [lindex $line $jj]
	if {$temp == ""} {
	  break
	} elseif {$temp == "g"} {
	  set field7 $temp
	}
	break
      }
      break
    }
    incr jj 1
  }
  
  if {$cemented == 0} {
    set cemented 1
    puts "trowel.tcl: cementinit $field1 $field2 $field3 $field4 -o trowel_out.plm $field5 $field6 $field7"
    if {$field5 == ""} {
      exec ./cementinit $field1 $field2 $field3 $field4 -o trowel_out.plm
    } elseif {$field6 == ""} {
      exec ./cementinit $field1 $field2 $field3 $field4 -o trowel_out.plm $field5
    } elseif {$field7 == ""} {
      exec ./cementinit $field1 $field2 $field3 $field4 -o trowel_out.plm $field5 $field6
    } else {
      exec ./cementinit $field1 $field2 $field3 $field4 -o trowel_out.plm $field5 $field6 $field7
    }
  } else {
    puts "trowel.tcl: cementi trowel_out.plm $field1 $field2 $field3 $field4 $field5 $field6 $field7"
    if {$field5 == ""} {
      exec ./cementi trowel_out.plm $field1 $field2 $field3 $field4
    } elseif {$field6 == ""} {
      exec ./cementi trowel_out.plm $field1 $field2 $field3 $field4 $field5
    } elseif {$field7 == ""} {
      exec ./cementi trowel_out.plm $field1 $field2 $field3 $field4 $field5 $field6
    } else {
      exec ./cementi trowel_out.plm $field1 $field2 $field3 $field4 $field5 $field6 $field7
    }
  }
}

# convert plm output to ppm

puts "trowel.tcl: calling plm2pnm"
exec ./plm2pnm trowel_out.plm -o trowel_out.ppm
