symbian-qemu-0.9.1-12/python-2.6.1/Lib/plat-irix6/jpeg.py
changeset 1 2fb8b9db1c86
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/symbian-qemu-0.9.1-12/python-2.6.1/Lib/plat-irix6/jpeg.py	Fri Jul 31 15:01:17 2009 +0100
@@ -0,0 +1,114 @@
+# Implement 'jpeg' interface using SGI's compression library
+
+# XXX Options 'smooth' and 'optimize' are ignored.
+
+# XXX It appears that compressing grayscale images doesn't work right;
+# XXX the resulting file causes weirdness.
+from warnings import warnpy3k
+warnpy3k("the jpeg module has been removed in Python 3.0", stacklevel=2)
+del warnpy3k
+
+class error(Exception):
+    pass
+
+options = {'quality': 75, 'optimize': 0, 'smooth': 0, 'forcegray': 0}
+
+comp = None
+decomp = None
+
+def compress(imgdata, width, height, bytesperpixel):
+    global comp
+    import cl
+    if comp is None: comp = cl.OpenCompressor(cl.JPEG)
+    if bytesperpixel == 1:
+        format = cl.GRAYSCALE
+    elif bytesperpixel == 4:
+        format = cl.RGBX
+    if options['forcegray']:
+        iformat = cl.GRAYSCALE
+    else:
+        iformat = cl.YUV
+    # XXX How to support 'optimize'?
+    params = [cl.IMAGE_WIDTH, width, cl.IMAGE_HEIGHT, height,
+              cl.ORIGINAL_FORMAT, format,
+              cl.ORIENTATION, cl.BOTTOM_UP,
+              cl.QUALITY_FACTOR, options['quality'],
+              cl.INTERNAL_FORMAT, iformat,
+             ]
+    comp.SetParams(params)
+    jpegdata = comp.Compress(1, imgdata)
+    return jpegdata
+
+def decompress(jpegdata):
+    global decomp
+    import cl
+    if decomp is None: decomp = cl.OpenDecompressor(cl.JPEG)
+    headersize = decomp.ReadHeader(jpegdata)
+    params = [cl.IMAGE_WIDTH, 0, cl.IMAGE_HEIGHT, 0, cl.INTERNAL_FORMAT, 0]
+    decomp.GetParams(params)
+    width, height, format = params[1], params[3], params[5]
+    if format == cl.GRAYSCALE or options['forcegray']:
+        format = cl.GRAYSCALE
+        bytesperpixel = 1
+    else:
+        format = cl.RGBX
+        bytesperpixel = 4
+    # XXX How to support 'smooth'?
+    params = [cl.ORIGINAL_FORMAT, format,
+              cl.ORIENTATION, cl.BOTTOM_UP,
+              cl.FRAME_BUFFER_SIZE, width*height*bytesperpixel]
+    decomp.SetParams(params)
+    imgdata = decomp.Decompress(1, jpegdata)
+    return imgdata, width, height, bytesperpixel
+
+def setoption(name, value):
+    if type(value) is not type(0):
+        raise TypeError, 'jpeg.setoption: numeric options only'
+    if name == 'forcegrey':
+        name = 'forcegray'
+    if not options.has_key(name):
+        raise KeyError, 'jpeg.setoption: unknown option name'
+    options[name] = int(value)
+
+def test():
+    import sys
+    if sys.argv[1:2] == ['-g']:
+        del sys.argv[1]
+        setoption('forcegray', 1)
+    if not sys.argv[1:]:
+        sys.argv.append('/usr/local/images/data/jpg/asterix.jpg')
+    for file in sys.argv[1:]:
+        show(file)
+
+def show(file):
+    import gl, GL, DEVICE
+    jpegdata = open(file, 'r').read()
+    imgdata, width, height, bytesperpixel = decompress(jpegdata)
+    gl.foreground()
+    gl.prefsize(width, height)
+    win = gl.winopen(file)
+    if bytesperpixel == 1:
+        gl.cmode()
+        gl.pixmode(GL.PM_SIZE, 8)
+        gl.gconfig()
+        for i in range(256):
+            gl.mapcolor(i, i, i, i)
+    else:
+        gl.RGBmode()
+        gl.pixmode(GL.PM_SIZE, 32)
+        gl.gconfig()
+    gl.qdevice(DEVICE.REDRAW)
+    gl.qdevice(DEVICE.ESCKEY)
+    gl.qdevice(DEVICE.WINQUIT)
+    gl.qdevice(DEVICE.WINSHUT)
+    gl.lrectwrite(0, 0, width-1, height-1, imgdata)
+    while 1:
+        dev, val = gl.qread()
+        if dev in (DEVICE.ESCKEY, DEVICE.WINSHUT, DEVICE.WINQUIT):
+            break
+        if dev == DEVICE.REDRAW:
+            gl.lrectwrite(0, 0, width-1, height-1, imgdata)
+    gl.winclose(win)
+    # Now test the compression and write the result to a fixed filename
+    newjpegdata = compress(imgdata, width, height, bytesperpixel)
+    open('/tmp/j.jpg', 'w').write(newjpegdata)