]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
More functionality by Jack (untested by me)
authorGuido van Rossum <guido@python.org>
Wed, 18 Mar 1992 13:04:25 +0000 (13:04 +0000)
committerGuido van Rossum <guido@python.org>
Wed, 18 Mar 1992 13:04:25 +0000 (13:04 +0000)
Demo/sgi/video/vcopy.py

index 3afe119ea09db87d7b6f50ad065650c2bc58acca..1842094a44661536ce1525ee8bd68b9f79282770 100755 (executable)
@@ -4,27 +4,7 @@ import sys
 import getopt
 from gl import *
 from DEVICE import *
-
-def loadframe(f, w, h, pf):
-       line = f.readline()
-       if not line or line == '\n':
-               raise EOFError
-       x = eval(line[:-1])
-       if type(x) == type(0):
-               if pf: size = w*h*4
-               else: size = w*h*pf
-       else:
-               time, size = x
-       data = f.read(size)
-       if len(data) <> size:
-               raise EOFError
-       if pf:
-               windata = unpackrect(w/pf, h/pf, 1, data)
-               rectzoom(pf, pf)
-               lrectwrite(0, 0, w/pf-1, h/pf-1, windata)
-       else:
-               lrectwrite(0, 0, w-1, h-1, data)
-       return time, data
+import VFile
 
 def report(time, iframe):
        print 'Frame', iframe, ': t =', time
@@ -39,70 +19,87 @@ def help():
        print 'w   write current image to output'
 
 def main():
-       opts, args = getopt.getopt(sys.argv[1:], '')
+       foreground()
+       opts, args = getopt.getopt(sys.argv[1:], 't:a')
        if len(args) <> 2:
                usage()
        [ifile, ofile] = args
-       ifp = open(ifile, 'r')
-       ofp = open(ofile, 'w')
-       #
-       line = ifp.readline()
-       if line[:4] == 'CMIF':
-               line = ifp.readline()
-       x = eval(line[:-1])
-       if len(x) == 3:
-               w, h, pf = x
-       else:
-               w, h = x
-               pf = 2
-       if pf:
-               w = (w/pf)*pf
-               h = (h/pf)*pf
-       #
-       ofp.write('CMIF video 1.0\n')
-       ofp.write(`w, h, pf` + '\n')
+       print 'open film ', ifile
+       ifilm = VFile.VinFile().init(ifile)
+       print 'open output ', ofile
+       ofilm = VFile.VoutFile().init(ofile)
+       
+       ofilm.setinfo(ifilm.getinfo())
+
+       use_grabber = 0
+       continuous = 0
+       for o, a in opts:
+               if o == '-t':
+                       ofilm.format = a
+                       use_grabber = 1
+               if o == '-a':
+                       continuous = 1
+       ofilm.writeheader()
        #
-       foreground()
-       prefsize(w, h)
-       wid = winopen(ifile + ' -> ' + ofile)
-       RGBmode()
-       gconfig()
+       prefsize(ifilm.width, ifilm.height)
+       w = winopen(ifile)
        qdevice(KEYBD)
        qdevice(ESCKEY)
        qdevice(WINQUIT)
        qdevice(WINSHUT)
+       print 'qdevice calls done'
        #
        help()
        #
-       time, data = loadframe(ifp, w, h, pf)
+       time, data, cdata = ifilm.getnextframe()
+       ifilm.showframe(data, cdata)
        iframe = 1
        report(time, iframe)
        #
        while 1:
-               dev, val = qread()
+               if continuous:
+                       dev = KEYBD
+               else:
+                       dev, val = qread()
                if dev in (ESCKEY, WINQUIT, WINSHUT):
                        break
                if dev == REDRAW:
                        reshapeviewport()
                elif dev == KEYBD:
-                       c = chr(val)
-                       if c == 'n':
+                       if continuous:
+                               c = '0'
+                       else:
+                               c = chr(val)
+                       #XXX Debug
+                       if c == 'R':
+                               c3i(255,0,0)
+                               clear()
+                       if c == 'G':
+                               c3i(0,255,0)
+                               clear()
+                       if c == 'B':
+                               c3i(0,0,255)
+                               clear()
+                       if c == 'w' or continuous:
+                               if use_grabber:
+                                       data, cdata = ofilm.grabframe()
+                               ofilm.writeframe(time, data, cdata)
+                               print 'Frame', iframe, 'written.'
+                       if c == 'n' or continuous:
                                try:
-                                       time, data = loadframe(ifp, w, h, pf)
+                                       time,data,cdata = ifilm.getnextframe()
+                                       ifilm.showframe(data, cdata)
                                        iframe = iframe+1
                                        report(time, iframe)
                                except EOFError:
                                        print 'EOF'
+                                       if continuous:
+                                               break
                                        ringbell()
-                       elif c == 'w':
-                               ofp.write(`time, len(data)` + '\n')
-                               ofp.write(data)
-                               print 'Frame', iframe, 'written.'
-                       else:
-                               print 'Character', `c`, 'ignored'
                elif dev == INPUTCHANGE:
                        pass
                else:
                        print '(dev, val) =', (dev, val)
+       ofilm.close()
 
 main()