home *** CD-ROM | disk | FTP | other *** search
- /*
- ** _JSTREAM
- **
- ** $VER: _JSTREAM 1.0.3 (27.5.94)
- **
- ** This ARexx program will use the DMI ExtractJPEG utility
- ** to load a specific frame from a JStream (Reel) file.
- **
- ** This program requires ADPro v2.5.0 (or higher) and the DMI
- ** ExtractJPEG utility.
- **
- ** Copyright © 1994 ASDG, Incorporated
- ** All Rights Reserved
- */
-
-
- ADDRESS "ADPro"
- OPTIONS RESULTS
-
- NL = '0A'X
- SQ = '27'X
- DQ = '22'X
- TRUE = 1
- FALSE = 0
-
-
- /*
- ** Save the current environment.
- */
-
- SAVE_DEFAULTS TempDefaults
-
-
- /*
- ** Specify the location of the ExtractJPEG program.
- */
-
- ExtractJPEGFName = GETCLIP( "ExtractJPEGFName" )
- IF (ExtractJPEGFName = "") THEN DO
- continue = FALSE
- DO UNTIL (continue = TRUE)
- CALL "FREDSCRIPTS:FREDFunctions/GetAFile" '"Enter Location of ExtractJPEG"' '"Work:DBC/Utils"' '"ExtractJPEG"' TRUE
- ExtractJPEGFName = RESULT
- IF (ExtractJPEGFName = DQ||DQ) THEN
- CALL ErrorOut 10
-
- IF (EXISTS( ExtractJPEGFName )) THEN
- continue = TRUE
- ELSE DO
- ADPRO_TO_FRONT
-
- OKAYN '"_JSTREAM"' '"ExtractJPEG doesn''t exist in specified directory"' '"Retry|Cancel"'
- IF (RC = 0) THEN
- CALL ErrorOut 10
- END
- END
-
- SETCLIP( "ExtractJPEGFName", ExtractJPEGFName )
- END
-
-
- /*
- ** Select the JStream file.
- */
-
- JStreamFName = GETCLIP( "JStreamFName" )
- IF (JStreamFName ~= "") THEN DO
- ADPRO_TO_FRONT
-
- text = "Current JStream file:" || NL || JStreamFName
-
- OKAYN '"_JSTREAM"' '"'text'"' '"Use|Specify New File...|Cancel"'
- IF (RC = 0) THEN
- CALL ErrorOut 10
- ELSE IF (RC = 2) THEN DO
- CALL "FREDSCRIPTS:FREDFunctions/GetAFile" '"Select JStream file"' '""' TRUE
- JStreamFName = RESULT
- IF (JStreamFName = DQ||DQ) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "No filename specified."
- CALL ErrorOut 10
- END
- END
- END
- ELSE DO
- CALL "FREDSCRIPTS:FREDFunctions/GetAFile" '"Select JStream file"' '""' TRUE
- JStreamFName = RESULT
- IF (JStreamFName = DQ||DQ) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "No filename specified."
- CALL ErrorOut 10
- END
- END
-
- SETCLIP( "JStreamFName", JStreamFName )
-
-
- /*
- ** Specify which frame number to load.
- */
-
- FrameNum = GETCLIP( "JStreamFrameNum" )
- NumFrames = GETCLIP( "JStreamNumFrames" )
- IF ((FrameNum = "") | (NumFrames = "")) THEN DO
- CALL CountFrames JStreamFName
- NumFrames = RESULT
-
- SETCLIP( "JStreamNumFrames", NumFrames )
- END
- IF (FrameNum = NumFrames) THEN
- FrameNum = (-1)
-
- CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"Select frame to load"' (FrameNum+1) 0 NumFrames TRUE
- FrameNum = RESULT
- IF (FrameNum = (0-1)) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "No frame number specified."
- CALL ErrorOut 10
- END
-
- SETCLIP( "JStreamFrameNum", FrameNum )
-
-
- /*
- ** Extract selected frame number, creating two fields.
- */
-
- ADDRESS COMMAND ExtractJPEGFName JStreamFName FrameNum
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Could not load frame." || NL || NL ||,
- "JStream File = " || JStreamFName || NL ||,
- "Frame Number = " || FrameNum
- CALL ErrorOut 10
- END
-
-
- /*
- ** Reproduce the original image.
- */
-
- FileExtPos = LASTPOS( '.', JStreamFName )
- IF (FileExtPos ~= 0) THEN
- FieldJFIFPrefix = LEFT( JStreamFName, FileExtPos-1 )
- ELSE
- FieldJFIFPrefix = JStreamFName
-
- FieldJFIF0 = FieldJFIFPrefix || '.jf0'
- FieldJFIF1 = FieldJFIFPrefix || '.jf1'
-
- LOADER "UNIVERSAL" FieldJFIF0
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Error loading field 0 for test."
- CALL ErrorOut 10
- END
-
- SAVER "TEMP" "XXX" "RAW"
- ReloadFromDisk = RC
-
- XSIZE
- ImageWidth = ADPRO_RESULT
-
- YSIZE
- ImageHeight = ADPRO_RESULT
-
- LOADER "BACKDROP" "XXX" "WIDTH" ImageWidth "HEIGHT" (ImageHeight*2) "COLOR"
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Error creating background image."
- CALL ErrorOut 10
- END
-
- IF (ReloadFromDisk = 0) THEN
- LOADER "TEMP" "XXX" COMPOFFSET 0 0
- ELSE
- LOADER "UNIVERSAL" FieldJFIF1 COMPOFFSET 0 0
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Error loading field 1."
- CALL ErrorOut 10
- END
-
- LOADER "UNIVERSAL" FieldJFIF0 COMPOFFSET 0 ImageHeight
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Error loading field 0."
- CALL ErrorOut 10
- END
-
- OPERATOR "INTERLACE"
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Error interlacing image."
- CALL ErrorOut 10
- END
-
- CALL ErrorOut 0
-
-
-
-
- ErrorOut:
- PARSE ARG ExitCode
-
- IF (EXISTS( TempDefaults )) THEN DO
- LOAD_DEFAULTS TempDefaults
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Error restoring settings."
- END
-
- ADDRESS COMMAND "Delete >NIL:" TempDefaults
- END
-
- IF (EXISTS( FieldJFIF0 )) THEN
- ADDRESS COMMAND "Delete >NIL:" FieldJFIF0
-
- IF (EXISTS( FieldJFIF1 )) THEN
- ADDRESS COMMAND "Delete >NIL:" FieldJFIF1
-
- EXIT ExitCode
-
-
-
-
- CountFrames:
- PARSE ARG Filename
-
- IF (OPEN( ifh, Filename, 'read' )) THEN DO
- str = READCH( ifh, 255 )
- CLOSE( ifh )
-
- nmfrpos = INDEX( str, "NMFR" )
- RETURN C2D( ''SUBSTR( str, nmfrpos+8, 1 )''x )*256*256*256 +,
- C2D( ''SUBSTR( str, nmfrpos+9, 1 )''x )*256*256 +,
- C2D( ''SUBSTR( str, nmfrpos+10, 1 )''x )*256 +,
- C2D( ''SUBSTR( str, nmfrpos+11, 1 )''x )
-
- END
- ELSE
- RETURN (-1)
-