<*-GENCPREF*> <*-ONECODESEG*> <*ALIGNMENT="4"*> <*CC="Watcom"*> <*+ M2EXTENSIONS *> IMPLEMENTATION MODULE jpgdec; FROM SYSTEM IMPORT ADR, ADDRESS, CAST, INT16; IMPORT dllRTS; IMPORT IO; TYPE IPROC=PROCEDURE ["C"] ():INTEGER; PIX=RECORD r,g,b:CHAR END; ROW=ARRAY[0..1000] OF PIX; pROWS=POINTER TO ROW; VAR hmod:dllRTS.HMOD; preadjpg:IPROC; fnglob:POINTER TO ADDRESS; pmaxx, pmaxy, pmaxxbyte:POINTER TO INT16; dib:POINTER TO ADDRESS; PROCEDURE readjpg(fn:ARRAY OF CHAR; row_pointers:ARRAY OF ADDRESS; VAR maxx, maxy, maxxbyte:INTEGER):INTEGER; TYPE IPROC=PROCEDURE ["C"] ():INTEGER; PIX=RECORD r,g,b:CHAR END; ROW=ARRAY[0..1000] OF PIX; pROWS=POINTER TO ROW; VAR i:INTEGER; BEGIN IF preadjpg<>NIL THEN pmaxx^:=maxx; pmaxy^:=maxy; pmaxxbyte^:=maxxbyte; dib^:=ADR(row_pointers); fnglob^:=ADR(fn); i:=preadjpg(); maxx:=pmaxx^; maxy:=pmaxy^; RETURN i; ELSE RETURN -5 END; END readjpg; BEGIN hmod:=dllRTS.LoadModule("jpegm.dll"); fnglob:=dllRTS.GetVarAdr(hmod, "_fnglob"); pmaxx:=dllRTS.GetVarAdr(hmod, "_maxx"); pmaxy:=dllRTS.GetVarAdr(hmod, "_maxy"); pmaxxbyte:=dllRTS.GetVarAdr(hmod, "_maxxbyte"); dib:=dllRTS.GetVarAdr(hmod, "_dibglob"); preadjpg:=CAST(IPROC, dllRTS.GetProcAdr(hmod, "readjpg_")); IF preadjpg<>NIL THEN IF fnglob=NIL THEN IO.WrStr("fnglob = nil"); IO.WrLn; HALT END; IF (pmaxx=NIL) OR (pmaxy=NIL) OR (pmaxxbyte=NIL) OR (dib=NIL) THEN IO.WrStr("vars = nil"); IO.WrLn; HALT END; END; END jpgdec.