mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	comments, docstrings or error messages. I fixed two minor things in
test_winreg.py ("didn't" -> "Didn't" and "Didnt" -> "Didn't").
There is a minor style issue involved: Guido seems to have preferred English
grammar (behaviour, honour) in a couple places. This patch changes that to
American, which is the more prominent style in the source. I prefer English
myself, so if English is preferred, I'd be happy to supply a patch myself ;)
		
	
			
		
			
				
	
	
		
			148 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
#! /usr/bin/env python
 | 
						|
 | 
						|
# Copy a video file, interactively, frame-by-frame.
 | 
						|
 | 
						|
import sys
 | 
						|
import getopt
 | 
						|
from gl import *
 | 
						|
from DEVICE import *
 | 
						|
import VFile
 | 
						|
import VGrabber
 | 
						|
import string
 | 
						|
import imageop
 | 
						|
 | 
						|
def report(time, iframe):
 | 
						|
	print 'Frame', iframe, ': t =', time
 | 
						|
 | 
						|
def usage():
 | 
						|
	sys.stderr.write('usage: Vcopy [-t type] [-m threshold] [-a] infile outfile\n')
 | 
						|
	sys.stderr.write('-t Convert to other type\n')
 | 
						|
	sys.stderr.write('-a Automatic\n')
 | 
						|
	sys.stderr.write('-m Convert grey to mono with threshold\n')
 | 
						|
	sys.stderr.write('-d Convert grey to mono with dithering\n')
 | 
						|
	sys.exit(2)
 | 
						|
 | 
						|
def help():
 | 
						|
	print 'Command summary:'
 | 
						|
	print 'n   get next image from input'
 | 
						|
	print 'w   write current image to output'
 | 
						|
 | 
						|
class GrabbingVoutFile(VFile.VoutFile, VGrabber.VGrabber):
 | 
						|
	pass
 | 
						|
 | 
						|
def main():
 | 
						|
	foreground()
 | 
						|
	try:
 | 
						|
		opts, args = getopt.getopt(sys.argv[1:], 't:am:d')
 | 
						|
	except getopt.error, msg:
 | 
						|
		print msg
 | 
						|
		usage()
 | 
						|
	if len(args) <> 2:
 | 
						|
		usage()
 | 
						|
	[ifile, ofile] = args
 | 
						|
	print 'open film ', ifile
 | 
						|
	ifilm = VFile.VinFile(ifile)
 | 
						|
	print 'open output ', ofile
 | 
						|
	ofilm = GrabbingVoutFile(ofile)
 | 
						|
	
 | 
						|
	ofilm.setinfo(ifilm.getinfo())
 | 
						|
 | 
						|
	use_grabber = 0
 | 
						|
	continuous = 0
 | 
						|
	tomono = 0
 | 
						|
	tomonodither = 0
 | 
						|
	for o, a in opts:
 | 
						|
		if o == '-t':
 | 
						|
			ofilm.format = a
 | 
						|
			use_grabber = 1
 | 
						|
		if o == '-a':
 | 
						|
			continuous = 1
 | 
						|
		if o == '-m':
 | 
						|
			if ifilm.format <> 'grey':
 | 
						|
				print '-m only supported for greyscale'
 | 
						|
				sys.exit(1)
 | 
						|
			tomono = 1
 | 
						|
			treshold = string.atoi(a)
 | 
						|
			ofilm.format = 'mono'
 | 
						|
		if o == '-d':
 | 
						|
			if ifilm.format <> 'grey':
 | 
						|
				print '-m only supported for greyscale'
 | 
						|
				sys.exit(1)
 | 
						|
			tomonodither = 1
 | 
						|
			ofilm.format = 'mono'
 | 
						|
			
 | 
						|
	ofilm.writeheader()
 | 
						|
	#
 | 
						|
	prefsize(ifilm.width, ifilm.height)
 | 
						|
	w = winopen(ifile)
 | 
						|
	qdevice(KEYBD)
 | 
						|
	qdevice(ESCKEY)
 | 
						|
	qdevice(WINQUIT)
 | 
						|
	qdevice(WINSHUT)
 | 
						|
	print 'qdevice calls done'
 | 
						|
	#
 | 
						|
	help()
 | 
						|
	#
 | 
						|
	time, data, cdata = ifilm.getnextframe()
 | 
						|
	ifilm.showframe(data, cdata)
 | 
						|
	iframe = 1
 | 
						|
	report(time, iframe)
 | 
						|
	#
 | 
						|
	while 1:
 | 
						|
		if continuous:
 | 
						|
			dev = KEYBD
 | 
						|
		else:
 | 
						|
			dev, val = qread()
 | 
						|
		if dev in (ESCKEY, WINQUIT, WINSHUT):
 | 
						|
			break
 | 
						|
		if dev == REDRAW:
 | 
						|
			reshapeviewport()
 | 
						|
		elif dev == KEYBD:
 | 
						|
			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:
 | 
						|
					try:
 | 
						|
						data, cdata = ofilm.grabframe()
 | 
						|
					except VFile.Error, msg:
 | 
						|
						print msg
 | 
						|
						break
 | 
						|
				if tomono:
 | 
						|
					data = imageop.grey2mono(data, \
 | 
						|
						  ifilm.width, ifilm.height, \
 | 
						|
						  treshold)
 | 
						|
				if tomonodither:
 | 
						|
					data = imageop.dither2mono(data, \
 | 
						|
						  ifilm.width, ifilm.height)
 | 
						|
				ofilm.writeframe(time, data, cdata)
 | 
						|
				print 'Frame', iframe, 'written.'
 | 
						|
			if c == 'n' or continuous:
 | 
						|
				try:
 | 
						|
					time,data,cdata = ifilm.getnextframe()
 | 
						|
					ifilm.showframe(data, cdata)
 | 
						|
					iframe = iframe+1
 | 
						|
					report(time, iframe)
 | 
						|
				except EOFError:
 | 
						|
					print 'EOF'
 | 
						|
					if continuous:
 | 
						|
						break
 | 
						|
					ringbell()
 | 
						|
		elif dev == INPUTCHANGE:
 | 
						|
			pass
 | 
						|
		else:
 | 
						|
			print '(dev, val) =', (dev, val)
 | 
						|
	ofilm.close()
 | 
						|
 | 
						|
main()
 |