#!/usr/local/bin/python
# -*- Mode: Python; tab-width: 4 -*-

import tempfile
import sys
import os
import re

img_fn_re = re.compile ('(.*[^0-9])([0-9]+)(\.[A-Za-z]+)')

if len(sys.argv) < 2:
    print 'usage: %s <right/first_image> <width>' % sys.argv[0]
else:
    rot = ''
    size = '-xsize'
    if '-ccw' in sys.argv:
        rot = '| pnmflip -ccw '
        size = '-ysize'
        sys.argv.remove ('-ccw')
    if '-cw' in sys.argv:
        rot = '| pnmflip -cw '
        size = '-ysize'
        sys.argv.remove ('-cw')
    if '-b' in sys.argv:
        backwards = 1
        sys.argv.remove ('-b')
    else:
        backwards = 0
    ifnr = sys.argv[1]
    m = img_fn_re.match (ifnr)
    if not m:
        raise ValueError, "%s does not look like an image file name" % (ifnr,)
    else:
        base, num, ext = m.groups()
        if ext.lower() == '.nef':
            img_open = 'dcraw -w -c'
        elif ext.lower() in ('.jpg', '.jpeg'):
            img_open = 'djpeg'
        # compute name of left image, assuming it's the next one.
        if backwards:
            left = int(num)-1
        else:
            left = int(num)+1
        ndigits = len (num)
        ifnl_form = '%%s%%0%dd%%s' % (ndigits)
        ifnl = ifnl_form % (base, left, ext)
        width = int(sys.argv[2])
        ofnl = tempfile.mktemp()
        ofnr = tempfile.mktemp()
        os.system ('%s %s | pnmscale %s %d %s > %s' % (img_open, ifnl, size, width/2, rot, ofnl))
        os.system ('%s %s | pnmscale %s %d %s > %s' % (img_open, ifnr, size, width/2, rot, ofnr))
        # this is cross-eyed; reverse inputs for wide-eyed.
        os.system ('pnmcat -lr %s %s | cjpeg > stereo_%s.jpg' % (ofnr, ofnl, num))
        os.unlink (ofnl)
        os.unlink (ofnr)
        # MacOS
        os.system ('open stereo_%s.jpg' % num)
