Charles.Forsyth20060303a828770d19 years agoHistory
115 lines · 2.3 KB · Objective-C
RawDownload
Img: module {	PATH : con "/dis/charon/img.dis"; 	Mimerror, Mimnone, Mimpartial, Mimdone: con iota + 1; 	# Getmim returns image and possible mask;	# the int returned is either Mimnone, Mimpartial or Mimdone, depending on	# how much of returned mim is filled in.	# if the image is animated, successive calls to getmim return subsequent frames.	# Errors are indicated by returning Mimerror, with the err field non empty.	# Should call free() when don't intend to call getmim any more	ImageSource: adt	{		width:	int;		height:	int;		origw:	int;		origh:	int;		mtype:	int;		i:		int;		curframe:	int;		bs:		ref CharonUtils->ByteSource;		gstate:	ref Gifstate;		jstate:	ref Jpegstate;		err:		string; 		new: fn(bs: ref CharonUtils->ByteSource, w, h: int) : ref ImageSource;		getmim: fn(is: self ref ImageSource) : (int, ref CharonUtils->MaskedImage);		free: fn(is: self ref ImageSource);	}; 	# Following are private to implementation	Jpegstate: adt	{		# variables in i/o routines		sr:	int;	# shift register, right aligned		cnt:	int;	# # bits in right part of sr			Nf:		int;		comp:	array of Framecomp;		mode:	byte;		X,Y:		int;		qt:		array of array of int;	# quantization tables		dcht:		array of ref Huffman;		acht:		array of ref Huffman;		Ns:		int;		scomp:	array of Scancomp;		Ss:		int;		Se:		int;		Ah:		int;		Al:		int;		ri:		int;		nseg:	int;		nblock:	array of int;			# progressive scan		dccoeff:	array of array of int;		accoeff:	array of array of array of int;	# only need 8 bits plus quantization		nacross:	int;		ndown:	int;		Hmax:	int;		Vmax:	int;	}; 	Huffman: adt	{		bits:	array of int;		size:	array of int;		code:	array of int;		val:	array of int;		mincode:	array of int;		maxcode:	array of int;		valptr:	array of int;		# fast lookup		value:	array of int;		shift:	array of int;	};		Framecomp: adt	# Frame component specifier from SOF marker	{		C:	int;		H:	int;		V:	int;		Tq:	int;	}; 	Scancomp: adt	# Frame component specifier from SOF marker	{		C:	int;		tdc:	int;		tac:	int;	}; 	Gifstate: adt	{		fields: int;		bgrnd: int;		aspect: int;		flags: int;		delay: int;		trindex: byte;		tbl: array of GifEntry;		globalcmap: array of byte;		cmap: array of byte;	}; 	GifEntry: adt	{		prefix: int;		exten: int;	}; 	init: fn(cu: CharonUtils);	supported: fn(mtype: int) : int;	closest_rgbpix: fn(r, g, b: int) : int;};