home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / GFX / Converter / BK-ADPR3.DMS / in.adf / Loaders.lzx / Loaders2 / _JSTREAM next >
Encoding:
Text File  |  1996-03-20  |  4.7 KB  |  243 lines

  1. /*
  2. ** _JSTREAM
  3. **
  4. ** $VER: _JSTREAM 1.0.3 (27.5.94)
  5. **
  6. ** This ARexx program will use the DMI ExtractJPEG utility
  7. ** to load a specific frame from a JStream (Reel) file.
  8. **
  9. ** This program requires ADPro v2.5.0 (or higher) and the DMI
  10. ** ExtractJPEG utility.
  11. **
  12. ** Copyright © 1994 ASDG, Incorporated
  13. ** All Rights Reserved
  14. */
  15.  
  16.  
  17. ADDRESS "ADPro"
  18. OPTIONS RESULTS
  19.  
  20. NL = '0A'X
  21. SQ = '27'X
  22. DQ = '22'X
  23. TRUE  = 1
  24. FALSE = 0
  25.  
  26.  
  27. /*
  28. ** Save the current environment.
  29. */
  30.  
  31. SAVE_DEFAULTS TempDefaults
  32.  
  33.  
  34. /*
  35. ** Specify the location of the ExtractJPEG program.
  36. */
  37.  
  38. ExtractJPEGFName = GETCLIP( "ExtractJPEGFName" )
  39. IF (ExtractJPEGFName = "") THEN DO
  40.     continue = FALSE
  41.     DO UNTIL (continue = TRUE)
  42.         CALL "FREDSCRIPTS:FREDFunctions/GetAFile" '"Enter Location of ExtractJPEG"' '"Work:DBC/Utils"' '"ExtractJPEG"' TRUE
  43.         ExtractJPEGFName = RESULT
  44.         IF (ExtractJPEGFName = DQ||DQ) THEN
  45.             CALL ErrorOut 10
  46.  
  47.         IF (EXISTS( ExtractJPEGFName )) THEN
  48.             continue = TRUE
  49.         ELSE DO
  50.             ADPRO_TO_FRONT
  51.  
  52.             OKAYN '"_JSTREAM"' '"ExtractJPEG doesn''t exist in specified directory"' '"Retry|Cancel"'
  53.             IF (RC = 0) THEN
  54.                 CALL ErrorOut 10
  55.         END
  56.     END
  57.  
  58.     SETCLIP( "ExtractJPEGFName", ExtractJPEGFName )
  59. END
  60.  
  61.  
  62. /*
  63. ** Select the JStream file.
  64. */
  65.  
  66. JStreamFName = GETCLIP( "JStreamFName" )
  67. IF (JStreamFName ~= "") THEN DO
  68.     ADPRO_TO_FRONT
  69.  
  70.     text = "Current JStream file:" || NL || JStreamFName
  71.  
  72.     OKAYN '"_JSTREAM"' '"'text'"' '"Use|Specify New File...|Cancel"'
  73.     IF (RC = 0) THEN
  74.         CALL ErrorOut 10
  75.     ELSE IF (RC = 2) THEN DO
  76.         CALL "FREDSCRIPTS:FREDFunctions/GetAFile" '"Select JStream file"' '""' TRUE
  77.         JStreamFName = RESULT
  78.         IF (JStreamFName = DQ||DQ) THEN DO  
  79.             ADPRO_TO_FRONT
  80.             OKAY1 "No filename specified."
  81.             CALL ErrorOut 10
  82.         END
  83.     END
  84. END
  85. ELSE DO
  86.     CALL "FREDSCRIPTS:FREDFunctions/GetAFile" '"Select JStream file"' '""' TRUE
  87.     JStreamFName = RESULT
  88.     IF (JStreamFName = DQ||DQ) THEN DO  
  89.         ADPRO_TO_FRONT
  90.         OKAY1 "No filename specified."
  91.         CALL ErrorOut 10
  92.     END
  93. END
  94.  
  95. SETCLIP( "JStreamFName", JStreamFName )
  96.  
  97.  
  98. /*
  99. ** Specify which frame number to load.
  100. */
  101.  
  102. FrameNum = GETCLIP( "JStreamFrameNum" )
  103. NumFrames = GETCLIP( "JStreamNumFrames" )
  104. IF ((FrameNum = "") | (NumFrames = "")) THEN DO
  105.     CALL CountFrames JStreamFName
  106.     NumFrames = RESULT
  107.  
  108.     SETCLIP( "JStreamNumFrames", NumFrames )
  109. END
  110. IF (FrameNum = NumFrames) THEN
  111.     FrameNum = (-1)
  112.  
  113. CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"Select frame to load"' (FrameNum+1) 0 NumFrames TRUE
  114. FrameNum = RESULT
  115. IF (FrameNum = (0-1)) THEN DO
  116.     ADPRO_TO_FRONT
  117.     OKAY1 "No frame number specified."
  118.     CALL ErrorOut 10
  119. END
  120.  
  121. SETCLIP( "JStreamFrameNum", FrameNum )
  122.  
  123.  
  124. /*
  125. ** Extract selected frame number, creating two fields.
  126. */
  127.  
  128. ADDRESS COMMAND ExtractJPEGFName JStreamFName FrameNum
  129. IF (RC ~= 0) THEN DO
  130.     ADPRO_TO_FRONT
  131.     OKAY1 "Could not load frame." || NL || NL ||,
  132.         "JStream File = " || JStreamFName || NL ||,
  133.         "Frame Number = " || FrameNum
  134.     CALL ErrorOut 10
  135. END
  136.  
  137.  
  138. /*
  139. ** Reproduce the original image.
  140. */
  141.  
  142. FileExtPos = LASTPOS( '.', JStreamFName )
  143. IF (FileExtPos ~= 0) THEN
  144.     FieldJFIFPrefix = LEFT( JStreamFName, FileExtPos-1 )
  145. ELSE
  146.     FieldJFIFPrefix = JStreamFName
  147.  
  148. FieldJFIF0 = FieldJFIFPrefix || '.jf0'
  149. FieldJFIF1 = FieldJFIFPrefix || '.jf1'
  150.  
  151. LOADER "UNIVERSAL" FieldJFIF0
  152. IF (RC ~= 0) THEN DO
  153.     ADPRO_TO_FRONT
  154.     OKAY1 "Error loading field 0 for test."
  155.     CALL ErrorOut 10
  156. END
  157.  
  158. SAVER "TEMP" "XXX" "RAW"
  159. ReloadFromDisk = RC
  160.     
  161. XSIZE
  162. ImageWidth = ADPRO_RESULT
  163.  
  164. YSIZE
  165. ImageHeight = ADPRO_RESULT
  166.  
  167. LOADER "BACKDROP" "XXX" "WIDTH" ImageWidth "HEIGHT" (ImageHeight*2) "COLOR"
  168. IF (RC ~= 0) THEN DO
  169.     ADPRO_TO_FRONT
  170.     OKAY1 "Error creating background image."
  171.     CALL ErrorOut 10
  172. END
  173.  
  174. IF (ReloadFromDisk = 0) THEN
  175.     LOADER "TEMP" "XXX" COMPOFFSET 0 0
  176. ELSE
  177.     LOADER "UNIVERSAL" FieldJFIF1 COMPOFFSET 0 0
  178. IF (RC ~= 0) THEN DO
  179.     ADPRO_TO_FRONT
  180.     OKAY1 "Error loading field 1."
  181.     CALL ErrorOut 10
  182. END
  183.  
  184. LOADER "UNIVERSAL" FieldJFIF0 COMPOFFSET 0 ImageHeight
  185. IF (RC ~= 0) THEN DO
  186.     ADPRO_TO_FRONT
  187.     OKAY1 "Error loading field 0."
  188.     CALL ErrorOut 10
  189. END
  190.  
  191. OPERATOR "INTERLACE"
  192. IF (RC ~= 0) THEN DO
  193.     ADPRO_TO_FRONT
  194.     OKAY1 "Error interlacing image."
  195.     CALL ErrorOut 10
  196. END
  197.  
  198. CALL ErrorOut 0
  199.  
  200.  
  201.  
  202.  
  203. ErrorOut:
  204.     PARSE ARG ExitCode
  205.  
  206.     IF (EXISTS( TempDefaults )) THEN DO
  207.         LOAD_DEFAULTS TempDefaults
  208.         IF (RC ~= 0) THEN DO
  209.             ADPRO_TO_FRONT
  210.             OKAY1 "Error restoring settings."
  211.         END
  212.  
  213.         ADDRESS COMMAND "Delete >NIL:" TempDefaults
  214.     END
  215.  
  216.     IF (EXISTS( FieldJFIF0 )) THEN
  217.         ADDRESS COMMAND "Delete >NIL:" FieldJFIF0
  218.  
  219.     IF (EXISTS( FieldJFIF1 )) THEN
  220.         ADDRESS COMMAND "Delete >NIL:" FieldJFIF1
  221.  
  222.     EXIT ExitCode
  223.  
  224.  
  225.  
  226.  
  227. CountFrames:
  228.     PARSE ARG Filename
  229.  
  230.     IF (OPEN( ifh, Filename, 'read' )) THEN DO
  231.         str = READCH( ifh, 255 )
  232.         CLOSE( ifh )
  233.  
  234.         nmfrpos = INDEX( str, "NMFR" )
  235.         RETURN C2D( ''SUBSTR( str, nmfrpos+8, 1 )''x )*256*256*256 +,
  236.             C2D( ''SUBSTR( str, nmfrpos+9, 1 )''x )*256*256 +,
  237.             C2D( ''SUBSTR( str, nmfrpos+10, 1 )''x )*256 +,
  238.             C2D( ''SUBSTR( str, nmfrpos+11, 1 )''x )
  239.  
  240.     END
  241.     ELSE
  242.         RETURN (-1)
  243.