#! /usr/bin/env python

# Unit test for capturing weather input (with transparency)
# License place-holder.

__ident__ = "$Id$"

import sys

import Image
#import ImageChops
#import ImageFile
#import ImageColor
from ImagePalette import ImagePalette

import unittest

from test.test_support import run_unittest, verbose
verbose = 1


def PIL_VERSION():
    return "PIL version %s" % Image.VERSION

R, G, B, A = range(0, 4)

imgWidth  = '400'
imgHeight = '300'

imgSource = '/usr/local/users/erob/latest.gif'

opener = lambda x: open(x, 'r')
verbose = 1

class Palette(ImagePalette):
      def __init__(self, mode='RGB', p=None):
          ImagePalette.__init__(self, mode, p)

      def modify(self, list, value):
          # modify the palette index entry in list
          try:
               tmp = [elem for elem in list]
               idx = tmp
          except Exception, e:
               raise 'problem..', e
          else:
               print 'whoa, that seems to have worked!'
               for id in idx:
                   print "Changing value of entry %d to %d" % (id, value)
                   self.palette[id] = value
          return self.palette


class TestCase(unittest.TestCase):

      def runTest(self):
          # get the bg image
          canvas = Image.open(opener(imgSource))
          canvas.load()

          p1 = canvas.getpalette()
          p2 = Palette(p=p1)
          p3 = p2.modify([23], 255)
          
          #self.assertEqual(p3[0], 255, "Expected 255")
          #self.assertEqual(p3[0:2], [255, 255])

          # it should do this also
          canvas.putpalette(p3)
          canvas.convert("RGBA")

          bands = canvas.split()

          # Filters
          out = bands[A].point(lambda i: i < 255 and 255)    # white 2 alpha
          #mask2 = bands[B].point(lambda i: i == 255 and 255) # blue water out
          #mask3 = bands[R].point(lambda i: i == 115 and 255) # red roads mask
          #mask4 = bands[A].point(lambda i: i == 0 and 255)  # black 2 alpha

          # process alpha pixels, where foo"!
          #bands[A].paste(out, None, mask2)
          #bands[R].paste(out, None, mask3)
          #bands[A].paste(out, None, mask4)

          # create a new image and save it in PNG format
          new = Image.merge(canvas.mode, bands)
          new.show()
          new.save('test.png')

def test_main():
    print PIL_VERSION()

    if verbose and Image.DEBUG != True:
       print "Setting Image.DEBUG to 1"
       Image.DEBUG = 1

    tests = [ TestCase ]
    run_unittest(*tests)

if __name__ == '__main__':
   test_main()
