-> FILE: ESrc:Own/AspectFont.e REV: 93 --- Remove "Magic" comment from guide file /* History 92 1st release. 93 Removed Enforcer hit. */ OPT OSVERSION=37 MODULE 'dos/dos','dos/dosasl','dos/rdargs','exec/memory','dos/dosextens' MODULE 'utility' MODULE 'intuition/intuition','intuition/screens','graphics/gfx', 'graphics/displayinfo' ENUM ER_NOERR,ER_UTIL,ER_ARGS,ER_OPEN,ER_READ,ER_WRITE,ER_MEM,ER_BREAK ENUM BUFLEN=32768 PROC main() HANDLE DEF array:PTR TO LONG,rfh=NIL,wfh=NIL,rbuf=NIL DEF rdargs=NIL,flen,done=FALSE,q=TRUE,ioerr,one2one=TRUE DEF tt:PTR TO process array:=[0,0,0] tt:='$VER: AspectFont 37.2 (22.3.97)\n'; tt:='$COPYRIGHT: Copyright © 1997 Harry Sintonen' tt:=FindTask(NIL) IF (utilitybase:=OpenLibrary('utility.library',37))=NIL THEN Raise(ER_UTIL) IF (rdargs:=ReadArgs('FROM/A,TO/A,QUIET/S',array,NIL))=NIL THEN Raise(ER_ARGS) q:=Not(array[2]) IF q THEN PrintF('AspectFont 37.2 -- Fix AmigaGuide document font by screen aspect\nCopyright © 1997 Harry Sintonen.\n\n') flen:=FileLength(array[]) IF (rfh:=Open(array[],OLDFILE))=NIL THEN Raise(ER_OPEN) IF (wfh:=Open(array[1],NEWFILE))=NIL THEN Raise(ER_OPEN) IF q THEN PrintF('Processing file \a\s\a, \d bytes...\n',array[],flen) IF (rbuf:=AllocVec(BUFLEN,MEMF_ANY OR MEMF_CLEAR))=NIL THEN Raise(ER_MEM) one2one:=getaspect(IF tt.windowptr>0 THEN tt.windowptr::window.wscreen ELSE NIL,NIL) REPEAT IF CtrlC() THEN Raise(ER_BREAK) IF Fgets(rfh,rbuf,BUFLEN) IF one2one IF (Strnicmp(rbuf,'@COMMENT ASPECTFONT ',STRLEN)=0) IF q THEN PrintF(' o Enabled \s',rbuf+20) IF FputC(wfh,"@")<>"@" THEN Raise(ER_WRITE) IF Fputs(wfh,rbuf+20-5) THEN Raise(ER_WRITE) ELSE IF Fputs(wfh,rbuf) THEN Raise(ER_WRITE) ENDIF ELSE IF Fputs(wfh,rbuf) THEN Raise(ER_WRITE) ENDIF ELSE IF IoErr() Raise(ER_READ) ELSE done:=TRUE ENDIF ENDIF UNTIL done IF q THEN PrintF('Done!\n') EXCEPT DO ioerr:=IoErr() IF rbuf THEN FreeVec(rbuf) IF rfh THEN Close(rfh) IF wfh THEN Close(wfh) IF exception AND array[1] THEN DeleteFile(array[1]) IF rdargs THEN FreeArgs(rdargs) IF utilitybase THEN CloseLibrary(utilitybase) IF exception IF exception=ER_BREAK; ioerr:=ERROR_BREAK; ENDIF IF (exception="NEW") OR (exception="MEM") THEN exception:=ER_MEM IF ioerr AND q THEN PrintFault(ioerr,'AspectFont') IF q AND ioerr<>ERROR_BREAK THEN PrintF('Error: Could not \s!\n', ListItem(['','open utillity.library V37','get arguments','open file','read file','write file', 'allocate enough memory',''],exception)) RETURN 10 ENDIF ENDPROC PROC getaspect(inscr,name:PTR TO CHAR) DEF ret=FALSE,scr:PTR TO screen,dinfo:displayinfo,scale IF inscr scr:=inscr ELSE IF (scr:=LockPubScreen(name))=NIL THEN RETURN ret ENDIF IF GetDisplayInfoData(NIL,dinfo,SIZEOF displayinfo,DTAG_DISP,GetVPModeID(scr.viewport)) scale:=Div(Mul(dinfo.resolution.x,10),dinfo.resolution.y) -> PrintF('Ratioh: \d Ratiov: \d Scale=\d\n',dinfo.resolution.x,dinfo.resolution.y,scale) IF (scale>=3) AND (scale<=6) THEN ret:=TRUE ENDIF IF Not(inscr) UnlockPubScreen(name,NIL) ENDIF ENDPROC ret