home *** CD-ROM | disk | FTP | other *** search
- /*
- PARtoANIM.adpro
-
- $VER: PARtoANIM.adpro Oct 94
-
- This AREXX program will take an existing FLIC file and rerender it as an
- anim according to the user's specifications. Adapted by Don Cox from ASDG's example script.
- */
-
- call open("STDERR","ram:trace","W")
- trace r
-
- ADDRESS "ADPro"
- OPTIONS RESULTS
-
- NL = '0A'X
- SQ = '27'X
- DQ = '22'X
- TRUE = 1
- FALSE = 0
- TempDefaults = "T:TempADProDefaults"
-
- SAVE_DEFAULTS TempDefaults
-
- PSTATUS
- oldPSTATUS = ADPRO_RESULT
- PSTATUS "UNLOCKED"
-
- CALL "FREDSCRIPTS:FREDFunctions/GetAFile" '"Enter PAR To Convert"' '"ADPRO:"' '""""' TRUE
- IF (RESULT = (DQ || DQ)) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Error, no source ANIM specified."
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
- SrcANIMFName = RESULT
-
-
- OKAYN '"Frames"' '"Select Anim Format"' '"Frames|Field 1|Both Fields|Abort"'
- if rc=0 then exit
- if rc =1 then AnimFormat = "Frame"
- if rc = 2 then AnimFormat = "Field1"
- if rc = 3 then AnimFormat = "Fields"
-
-
- /* Select the horizontal resolution. */
- HorizSize.1 = "Low Res"
- HorizSize.2 = "High Res"
- HorizSize.3 = "Super High Res"
- MinHorizSize = 1
- MaxHorizSize = 3
- DefHorizSize = 1
-
- String = '"' || HorizSize.DefHorizSize || '"'
- DO LoopCounter = MinHorizSize TO MaxHorizSize
- String = String '"' || HorizSize.LoopCounter || '"'
- END
-
- ADPRO_TO_FRONT
-
- continue = 0
- DO UNTIL (continue = 1)
- LISTVIEW '"Horiz. Resolutions:"' (MaxHorizSize-MinHorizSize+1) ITEMS String
- LISTVIEW_RC = RC
- PARSE VAR ADPRO_RESULT '"'HorizSizeStr'"' scratch
-
- HorizRes = MinHorizSize
- DO WHILE (HorizRes <= MaxHorizSize) & (COMPARE( HorizSizeStr, HorizSize.HorizRes ) ~= 0)
- HorizRes = HorizRes + 1
- END
-
- IF (LISTVIEW_RC ~= 0) & (LISTVIEW_RC ~= 1) THEN DO
- OKAY2 "This value is required." || NL || NL ||,
- "Select OK to Retry" || NL ||,
- "or CANCEL to Abort."
-
- IF (RC = 0) THEN
- CALL ErrorOut 10
- END
- ELSE
- continue = 1
- END
-
- HorizOscan = 0
- OKAY2 "Horizontal Overscan?" || NL || NL ||,
- "Select OK to enable it" || NL ||,
- "or CANCEL to disable it."
- IF (RC ~= 0) THEN HorizOscan = 1
-
- /* Select the monitor. */
- GETLIST MONITORS
- String = ADPRO_RESULT
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Could not retrieve" || NL ||,
- "monitor list."
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
-
- continue = 0
- DO UNTIL (continue = 1)
- LISTVIEW '"Monitors Available:"' 10 ITEMS String
- LISTVIEW_RC = RC
- PARSE VAR ADPRO_RESULT '"'Monitor'"' scratch
-
- IF (LISTVIEW_RC ~= 0) & (LISTVIEW_RC ~= 1) THEN DO
- OKAY2 "This value is required." || NL || NL ||,
- "Select OK to Retry" || NL ||,
- "or CANCEL to Abort."
-
- IF (RC = 0) THEN
- CALL ErrorOut 10
- END
-
- ELSE
- continue = 1
- END
-
- VertLace = 0
- OKAY2 "Interlace?" || NL || NL ||,
- "Select OK for interlace" || NL ||,
- "or CANCEL for non-interlace."
- IF (RC ~= 0) THEN
- VertLace = 1
-
- VertOscan = 0
- OKAY2 "Vertical Overscan?" || NL || NL ||,
- "Select OK to enable it" || NL ||,
- "or CANCEL to disable it."
- IF (RC ~= 0) THEN
- VertOscan = 1
-
-
- /* Now build the SCREEN_TYPE value. */
- ScreenType = 0
-
- IF (HorizRes = 2) THEN /* High Res */
- ScreenType = ScreenType + 1
- ELSE IF (HorizRes = 3) THEN /* Super High Res */
- ScreenType = ScreenType + 64
-
- IF (HorizOscan = 1) THEN /* Horizontal Overscan */
- ScreenType = ScreenType + 8
-
- IF (Monitor = "DFLT") THEN /* DFLT */
- ScreenType = ScreenType + 256
- ELSE IF (Monitor = "PAL") THEN /* PAL */
- ScreenType = ScreenType + 4
- ELSE IF (Monitor = "VGA") THEN /* VGA */
- ScreenType = ScreenType + 32
- ELSE IF (Monitor = "SUP72") THEN /* SUP72 */
- ScreenType = ScreenType + 128
-
- IF (VertLace = 1) THEN /* Interlace */
- ScreenType = ScreenType + 2
-
- IF (VertOscan = 1) THEN /* Vertical Overscan */
- ScreenType = ScreenType + 16
-
-
- /* Ask the user to select the number of colors to use. */
-
- GETLIST COLORS
- String = ADPRO_RESULT
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Could not retrieve" || NL ||,
- "colors list."
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
-
- continue = 0
- DO UNTIL (continue = 1)
- LISTVIEW '"Colors Available:"' 10 ITEMS String
- LISTVIEW_RC = RC
- PARSE VAR ADPRO_RESULT '"'NumberOfColors'"' scratch
-
- IF (LISTVIEW_RC ~= 0) & (LISTVIEW_RC ~= 1) THEN DO
- OKAY2 "This value is required." || NL || NL ||,
- "Select OK to Retry" || NL ||,
- "or CANCEL to Abort."
-
- IF (RC = 0) THEN
- CALL ErrorOut 10
- END
- ELSE
- continue = 1
- END
-
- NumColors = VALUE( NumberOfColors )
- IF (VALUE( NumColors ) <= 256) THEN
- RenderType = VALUE( NumColors )
- ELSE
- RenderType = NumberOfColors
-
-
- /* Ask the user to select the dither mode to use. */
-
- GETLIST DITHERS
- String = ADPRO_RESULT
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Could not retrieve" || NL ||,
- "dither list."
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
-
- continue = 0
- DO UNTIL (continue = 1)
- LISTVIEW '"Dithers Available:"' 10 ITEMS String
- LISTVIEW_RC = RC
- PARSE VAR ADPRO_RESULT '"'DitherModeStr'"' scratch
-
- IF (LISTVIEW_RC ~= 0) & (LISTVIEW_RC ~= 1) THEN DO
- OKAY2 "This value is required." || NL || NL ||,
- "Select OK to Retry" || NL ||,
- "or CANCEL to Abort."
-
- IF (RC = 0) THEN
- CALL ErrorOut 10
- END
- ELSE
- continue = 1
- END
-
- IF (DitherModeStr = "Off") THEN /* Off */
- DitherMode = 0
- ELSE IF (DitherModeStr = "Floyd (1)") THEN /* Floyd (1) */
- DitherMode = 1
- ELSE IF (DitherModeStr = "Burkes (2)") THEN /* Burkes (2) */
- DitherMode = 2
- ELSE IF (DitherModeStr = "Sierra (3)") THEN /* Sierra (3) */
- DitherMode = 3
- ELSE IF (DitherModeStr = "Jarvis (4)") THEN /* Jarvis (4) */
- DitherMode = 4
- ELSE IF (DitherModeStr = "Stucki (5)") THEN /* Stucki (5) */
- DitherMode = 5
- ELSE IF (DitherModeStr = "Random (6)") THEN /* Random (6) */
- DitherMode = 6
- ELSE IF (DitherModeStr = "Lg Ord (7)") THEN /* Lg Ord (7) */
- DitherMode = 7
- ELSE IF (DitherModeStr = "Sm Ord (8)") THEN /* Sm Ord (8) */
- DitherMode = 8
- ELSE
- DitherMode = 0
-
-
- /*
- ** If dither is Random or Ordered, get the Dither Amount.
- */
-
- IF (DitherMode = 6) | (DitherMode = 7) | (DitherMode = 8) THEN DO
- continue = 0
- DO UNTIL (continue = 1)
- GETNUMBER '"Enter Dither Amount"' 16 1 256
- DitherAmt = ADPRO_RESULT
-
- IF (RC ~= 0) THEN DO
- OKAY2 "This value is required." || NL || NL ||,
- "Select OK to Retry" || NL ||,
- "or CANCEL to Abort."
-
- IF (RC = 0) THEN
- CALL ErrorOut 10
- END
- ELSE
- continue = 1
- END
- END
-
- CALL "FREDSCRIPTS:FREDFunctions/GetSaver" "ANIM"
- IF (RESULT ~= 0) THEN
- CALL ErrorOut RESULT
-
- CALL "FREDSCRIPTS:FREDFunctions/GetLoader" "FLC"
- IF (RESULT ~= 0) THEN
- CALL ErrorOut RESULT
-
- CALL "FREDSCRIPTS:FREDFunctions/GetAFile" '"Enter name of ANIM file to create"' '"ADPRO:"' '""""' TRUE
- IF (RESULT = (DQ || DQ)) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Error, no dest ANIM specified."
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
- DestANIMFName = RESULT
-
- IF (EXISTS( DestANIMFName )) THEN DO
- CALL "FREDSCRIPTS:FREDFunctions/GetABool" '"Truncate Destination ANIM?"' '"to start a new file"' '"to append to it"'
- IF (RESULT ~= 0) THEN DO
- IMAGE_TYPE
- ImageType = ADPRO_RESULT
- IF (WORD( ImageType, 1 ) = "NONE") THEN DO
- CALL "FREDSCRIPTS:FREDFunctions/GetLoader" "BACKDROP"
- IF (RESULT ~= 0) THEN
- CALL ErrorOut RESULT
-
- LOAD "XXX" 10 10 "COLOR"
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Unable to create temp image." || NL ||,
- "Argument Information:" || NL||,
- "Width = " || 10 || NL ||,
- "Height = " || 10 || NL ||,
- "Type = " || "COLOR"
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
- END
-
- IF (WORD( ImageType, 1 ) ~= "BITPLANE") THEN DO
- EXECUTE
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Unable to create temp rendered data."
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
- END
-
- CALL "FREDSCRIPTS:FREDFunctions/GetSaver" "ANIM"
- IF (RESULT ~= 0) THEN
- CALL ErrorOut RESULT
-
- SAVE DestANIMFName "IMAGE" "QUIT"
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Could not close current ANIM file." || NL ||,
- "Argument Information:" || NL ||,
- "Filename = " || '"'DestANIMFName'"' || NL ||,
- "Type = " || "IMAGE" || NL ||,
- "Flags = " || "QUIT"
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
-
- ADDRESS COMMAND "Delete >NIL:" '"'DestANIMFName'"'
- END
- END
-
- LFORMAT "PAR_PEG"
- SFORMAT "ANIM"
-
- LOAD "'"SrcANIMFName"'" "COUNT"
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Can't find PAR file."
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
-
- NumFrames = ADPRO_RESULT
-
- LOAD '"'SrcANIMFName'"' 1
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Cannot find source PAR anim."
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
-
- PSTATUS "LOCKED"
- SCREEN_TYPE
- oldSType = ADPRO_RESULT
- SCREEN_TYPE ADPRO_RESULT
-
- CurrFrameNum = 1
- continue = FALSE
- DO WHILE (continue = FALSE)
-
- if animformat = "Frame" then do
- LOAD '"'SrcANIMFName'"' CurrFrameNum
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Error during load" || NL ||,
- "of frame " || CurrFrameNum || "."
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
-
- call rendering
-
- SAVE DestANIMFName "APPEND" "IMAGE"
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Error during load" || NL ||,
- "of frame " || CurrFrameNum || "."
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
- end /* of frame load */
-
-
- if left(Animformat,5) = "Field" then do
- LOAD '"'SrcANIMFName'"' CurrFrameNum "FIELD1 DOUBLE"
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Error during load" || NL ||,
- "of frame " || CurrFrameNum || "."
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
-
- call rendering
-
- SAVE DestANIMFName "APPEND" "IMAGE"
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Error during load" || NL ||,
- "of frame " || CurrFrameNum || "."
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
- end /* of Field 1 */
-
-
- if Animformat = "Fields" then do /* another field */
- LOAD '"'SrcANIMFName'"' CurrFrameNum "FIELD2 DOUBLE"
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Error during load" || NL ||,
- "of frame " || CurrFrameNum || "."
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
-
- call rendering
-
- SAVE DestANIMFName "APPEND" "IMAGE"
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Error during load" || NL ||,
- "of frame " || CurrFrameNum || "."
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
- end /* of Field 2 */
-
- CurrFrameNum = CurrFrameNum + 1
- IF (CurrFrameNum > NumFrames) THEN
- continue = TRUE
- END
-
- SAVE DestANIMFName "QUIT" "IMAGE"
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Error closing dest ANIM."
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
-
- PSTATUS oldPSTATUS
- SCREEN_TYPE oldSType
-
- CALL ErrorOut 0
-
-
-
-
- ErrorOut:
- PARSE ARG ErrorCode
-
- IF (EXISTS( SrcANIMFName )) & (ErrorCode ~= 0) THEN DO
- LOADER "ANIM" '"'SrcANIMFName'"' "QUIT"
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Error closing source ANIM:" || NL ||,
- SrcANIMFName || NL || NL ||,
- "You need to close it" || NL ||,
- "manually."
- ADPRO_TO_BACK
- END
- END
-
- IF (EXISTS( DestANIMFName )) & (ErrorCode ~= 0) THEN DO
- SAVER "ANIM" '"'DestANIMFName'"' "IMAGE" "QUIT"
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Error closing dest ANIM:" || NL ||,
- DestANIMFName || NL || NL ||,
- "You need to close it" || NL ||,
- "manually."
- ADPRO_TO_BACK
- END
- END
-
- IF (EXISTS( TempDefaults )) THEN DO
- LOAD_DEFAULTS TempDefaults
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Error restoring settings."
- ADPRO_TO_BACK
- END
-
- ADDRESS COMMAND "Delete >NIL:" TempDefaults
- END
-
- EXIT ErrorCode
-
- /* ++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++ */
-
- rendering:
-
- SCREEN_TYPE ScreenType
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Screen mode not supported." || NL || ADPRO_RESULT
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
-
- RENDER_TYPE RenderType
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Render mode not supported." || NL || ADPRO_RESULT
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
-
- DITHER DitherMode
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Dither mode not supported." || NL || ADPRO_RESULT
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
-
- IF (DitherMode = 6) | (DitherMode = 7) | (DitherMode = 8) THEN DO
- DITHER_AMOUNT DitherAmt
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Dither amount not supported." || NL || ADPRO_RESULT
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
- END
-
- EXECUTE
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Error creating rendered data."
- ADPRO_TO_BACK
- CALL ErrorOut 10
- END
-
-
- return
-