home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser 1998 October / STC_CD_10_1998.iso / ONLINE / DFUE / STARFAX / FDDKIT_FTQ / FAX_LOAD.LST next >
File List  |  1998-09-26  |  2KB  |  71 lines

  1. ' How to load a fax file
  2. '
  3. ' Note: Global arrays must be implemented
  4. ' Don't forget to load the Inline file "faxdecode.inl"
  5. ' This is just an example source, you can use any other language allowing
  6. ' to call assembler with parameters on stack.
  7. '
  8. ' Reserve some RAM for the Image
  9. '
  10. '
  11. ram%=MAX(MIN(MALLOC(-1)-40960,216*4800),216*2400)
  12. maxline&=ram% DIV 216
  13. '
  14. ' Store the Infos somewhere
  15. '
  16. bild_w&(win&)=1728          !IMG width
  17. bild_h&(win&)=maxline&      !Hight
  18. bild_i&(win&)=1728\16       !Integers
  19. bild_x&(win&)=128           !X offset
  20. bild_y&(win&)=0             !Y "
  21. bild_name$(win&)=f$         !A file name
  22. bild_zoom&(win&)=1          !Zoom factor (1)
  23. bild%(win&)=MALLOC(ram%)    !IMG RAM
  24. '
  25. ' Load INLINE here, (PRESS HELP AT NEXT LINE!)
  26. INLINE faxdecode%,2000
  27. '
  28. IF bild%(win&)>0 !OK???
  29.   '
  30.   IF INT{faxpage%}=21581                 !256 bytes Header Present? <TM-FAX>
  31.     fax_autor$(win&)=CHAR{faxpage%+170}  !Get autor
  32.     fax_res&=BYTE{faxpage%+29}           !resolution (0=98 or 1=198 dpi)
  33.     SUB len%,256
  34.     BMOVE faxpage%+256,faxpage%,len%
  35.   ELSE
  36.     fax_autor$(win&)="unknown"
  37.     fax_res&=1
  38.   ENDIF
  39.   '
  40.   ~GRAF_MOUSE(2,0)
  41.   '
  42.   FOR a%=0 TO len%-1 STEP 4096
  43.     $C+
  44.     back&=C:faxdecode%(L:faxpage%+a%,L:bild%(win&),L:MIN(4096,len%-a%),SGN(a%))
  45.     bild_y&(win&)=MAX(back&-wh&,0)
  46.     '
  47.     IF view&>0
  48.       redraw(win&)  !YOU MAY REDRAW HERE
  49.     ENDIF
  50.     '
  51.     ~GRAF_MKSTATE(mx&,my&,mz&,i&)
  52.     EXIT IF (i& AND 4)>0
  53.   NEXT a%
  54.   '
  55.   bild_zeilen&=back&       !Number of lines
  56.   '
  57.   bild_h&(win&)=bild_zeilen&
  58.   '
  59.   IF fax_res&=0          !Zoom 98>198 dpi
  60.     zoom
  61.   ENDIF
  62.   '
  63.   IF bild_h&(win&)<(maxline&-4)   !Give back some memory
  64.     ~GEMDOS(74,0,L:bild%(win&),L:((bild_h&(win&)+4)*2*bild_i&(win&)))
  65.   ENDIF
  66.   '
  67.   ~GRAF_MOUSE(0,0)
  68. ELSE
  69.   ~FORM_ERROR(4)
  70. ENDIF
  71.