home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / GFX / ADPro251-3.DMS / ADPro251-3.adf / ADProScripts.lha / ReRenderANIM.adpro < prev    next >
Encoding:
Text File  |  1994-01-31  |  6.8 KB  |  326 lines

  1. /*
  2. ** ReRenderANIM.adpro
  3. **
  4. ** $VER: ReRenderANIM.adpro 1.5.1 (17.1.94)
  5. **
  6. ** This AREXX program will take an existing ANIM file and rerender it
  7. ** according to the user's specifications.
  8. **
  9. ** This script requires ADPro v2.5.0 (or higher).
  10. **
  11. ** Copyright © 1993-1994 ASDG, Incorporated
  12. ** All Rights Reserved
  13. */
  14.  
  15.  
  16. ADDRESS "ADPro"
  17. OPTIONS RESULTS
  18.  
  19. NL = '0A'X
  20. SQ = '27'X
  21. DQ = '22'X
  22. TRUE = 1
  23. FALSE = 0
  24. TempDefaults = "T:TempADProDefaults"
  25.  
  26.  
  27. /*
  28. ** Save the current environment.
  29. */
  30.  
  31. SAVE_DEFAULTS TempDefaults
  32.  
  33.  
  34. PSTATUS "UNLOCKED"
  35.  
  36.  
  37. /*
  38. ** Select the file to rerender.
  39. */
  40.  
  41. CALL "FREDSCRIPTS:FREDFunctions/GetAFile" '"Enter ANIM To ReRender"' '"ADPRO:"' '""""' TRUE
  42. IF (RESULT = DQ||DQ) THEN DO
  43.     ADPRO_TO_FRONT
  44.     OKAY1 "Error, no source ANIM specified."
  45.     CALL ErrorOut 10
  46. END
  47. SrcANIMFName = RESULT
  48.  
  49.  
  50. /*
  51. ** Select the screen mode.
  52. */
  53.  
  54. ADPRO_TO_FRONT
  55.  
  56. GET_SCREEN_MODE '"Select Render Screen"' "Amiga" "XXX" 0 0 16
  57. IF (RC ~= 0) THEN DO
  58.     ADPRO_TO_FRONT
  59.     OKAY1 "Could not select render screen."
  60.     SCREEN_TO_FRONT "FRED"
  61.     CALL ErrorOut 10
  62. END
  63.  
  64. RenderScreen = ADPRO_RESULT
  65.  
  66.  
  67. /*
  68. ** Ask the user to select the dither mode to use.
  69. */
  70.  
  71. GETLIST DITHERS
  72. String = ADPRO_RESULT
  73. IF (RC ~= 0) THEN DO
  74.     ADPRO_TO_FRONT
  75.     OKAY1 "Could not retrieve" || NL ||,
  76.         "dither list."
  77.     CALL ErrorOut 10
  78. END
  79.  
  80. continue = 0
  81. DO UNTIL (continue = 1)
  82.     ADPRO_TO_FRONT
  83.  
  84.     LISTVIEW '"Dithers Available:"' 10 ITEMS String
  85.     LISTVIEW_RC = RC
  86.     PARSE VAR ADPRO_RESULT '"'DitherModeStr'"' scratch
  87.  
  88.     IF (LISTVIEW_RC ~= 0) & (LISTVIEW_RC ~= 1) THEN DO
  89.         ADPRO_TO_FRONT
  90.  
  91.         OKAYN '"ReRenderANIM"' '"This value is required."' '"Retry|Cancel"'
  92.         IF (RC = 0) THEN
  93.             CALL ErrorOut 10
  94.     END
  95.     ELSE
  96.         continue = 1
  97. END
  98.  
  99. IF (DitherModeStr = "Off") THEN            /* Off */
  100.     DitherMode = 0
  101. ELSE IF (DitherModeStr = "Floyd (1)") THEN    /* Floyd (1) */
  102.     DitherMode = 1
  103. ELSE IF (DitherModeStr = "Burkes (2)") THEN    /* Burkes (2) */
  104.     DitherMode = 2
  105. ELSE IF (DitherModeStr = "Sierra (3)") THEN    /* Sierra (3) */
  106.     DitherMode = 3
  107. ELSE IF (DitherModeStr = "Jarvis (4)") THEN    /* Jarvis (4) */
  108.     DitherMode = 4
  109. ELSE IF (DitherModeStr = "Stucki (5)") THEN    /* Stucki (5) */
  110.     DitherMode = 5
  111. ELSE IF (DitherModeStr = "Random (6)") THEN    /* Random (6) */
  112.     DitherMode = 6
  113. ELSE IF (DitherModeStr = "Lg Ord (7)") THEN    /* Lg Ord (7) */
  114.     DitherMode = 7
  115. ELSE IF (DitherModeStr = "Sm Ord (8)") THEN    /* Sm Ord (8) */
  116.     DitherMode = 8
  117. ELSE
  118.     DitherMode = 0
  119.  
  120.  
  121. /*
  122. ** If dither is Random or Ordered, get the Dither Amount.
  123. */
  124.  
  125. IF (DitherMode = 6) | (DitherMode = 7) | (DitherMode = 8) THEN DO
  126.     CALL "FREDSCRIPTS:FREDFunctions/GetAFloat" '"Enter Dither Amount"' 16 1 256 TRUE
  127.     IF (RESULT = (1-1)) THEN
  128.         CALL ErrorOut 10
  129.     DitherAmt = RESULT
  130. END
  131.  
  132. CALL "FREDSCRIPTS:FREDFunctions/GetAFile" '"Enter name of ANIM file to create"' '"ADPRO:"' '""""' TRUE
  133. IF (RESULT = DQ||DQ) THEN DO
  134.     ADPRO_TO_FRONT
  135.     OKAY1 "Error, no dest ANIM specified."
  136.     CALL ErrorOut 10
  137. END
  138. DestANIMFName = RESULT
  139.  
  140. IF (EXISTS( DestANIMFName )) THEN DO
  141.     ADPRO_TO_FRONT
  142.  
  143.     OKAYN '"ReRenderANIM"' '"Truncate destination ANIM?"' '"Start New File|Append To File|Cancel"'
  144.     IF (RC = 0) THEN DO
  145.         CALL ErrorOut 10
  146.     END
  147.     ELSE IF (RC = 1) THEN DO
  148.         IMAGE_TYPE
  149.         ImageType = ADPRO_RESULT
  150.         IF (WORD( ImageType, 1 ) = "NONE") THEN DO
  151.             LOADER "BACKDROP" "XXX" "WIDTH" 10 "HEIGHT" 10 "COLOR"
  152.             IF (RC ~= 0) THEN DO
  153.                 ADPRO_TO_FRONT
  154.                 OKAY1 "Unable to create temp image." || NL ||,
  155.                     "Argument Information:" || NL||,
  156.                     "Width = " || 10 || NL ||,
  157.                     "Height = " || 10 || NL ||,
  158.                     "Type = " || "COLOR"
  159.                 CALL ErrorOut 10
  160.             END
  161.         END
  162.  
  163.         IF (WORD( ImageType, 1 ) ~= "BITPLANE") THEN DO
  164.             EXECUTE
  165.             IF (RC ~= 0) THEN DO
  166.                 ADPRO_TO_FRONT
  167.                 OKAY1 "Unable to create temp rendered data."
  168.                 CALL ErrorOut 10
  169.             END
  170.         END
  171.  
  172.         SAVER "ANIM" DestANIMFName "IMAGE" "QUIT"
  173.         IF (RC ~= 0) THEN DO
  174.             ADPRO_TO_FRONT
  175.             OKAY1 "Could not close current ANIM file." || NL ||,
  176.                 "Argument Information:" || NL ||,
  177.                 "Filename = " || DestANIMFName || NL ||,
  178.                 "Type = " || "IMAGE" || NL ||,
  179.                 "Flags = " || "QUIT"
  180.             CALL ErrorOut 10
  181.         END
  182.  
  183.         ADDRESS COMMAND "Delete >NIL:" DestANIMFName
  184.     END
  185. END
  186.  
  187. LOADER "ANIM" SrcANIMFName "COUNT"
  188. IF (RC ~= 0) THEN DO
  189.     ADPRO_TO_FRONT
  190.     OKAY1 "Can't find ANIM file."
  191.     CALL ErrorOut 10
  192. END
  193.  
  194. NumFrames = ADPRO_RESULT
  195.  
  196.  
  197. /*
  198. ** Ask which frames to process.
  199. */
  200.  
  201. CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"Starting frame"' 1 1 NumFrames TRUE
  202. StartFrame = RESULT
  203. IF (StartFrame = (1-1)) THEN
  204.     CALL ErrorOut 10
  205.  
  206. CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"Ending frame"' NumFrames StartFrame NumFrames TRUE
  207. EndFrame = RESULT
  208. IF (EndFrame = (StartFrame-1)) THEN
  209.     CALL ErrorOut 10
  210.  
  211.  
  212. LOADER "ANIM" SrcANIMFName "FRAME" 1
  213. IF (RC ~= 0) THEN DO
  214.     ADPRO_TO_FRONT
  215.     OKAY1 "Cannot find source ANIM."
  216.     CALL ErrorOut 10
  217. END
  218.  
  219. PSTATUS "LOCKED"
  220.  
  221. SCREEN_TYPE
  222. oldSType = ADPRO_RESULT
  223. SCREEN_TYPE ADPRO_RESULT
  224.  
  225. CurrFrameNum = StartFrame
  226. continue = FALSE
  227. DO WHILE (continue = FALSE)
  228.     LOADER "ANIM" SrcANIMFName "FRAME" CurrFrameNum
  229.     IF (RC ~= 0) THEN DO
  230.         ADPRO_TO_FRONT
  231.         OKAY1 "Error during load" || NL ||,
  232.             "of frame " || CurrFrameNum || "."
  233.         CALL ErrorOut 10
  234.     END
  235.  
  236.     SET_RENDER_MODE RenderScreen
  237.     IF (RC ~= 0) THEN DO
  238.         ADPRO_TO_FRONT
  239.         OKAY1 "Could not set render screen:" || NL || RenderScreen
  240.         SCREEN_TO_FRONT "FRED"
  241.         CALL ErrorOut 10
  242.     END
  243.  
  244.     DITHER DitherMode
  245.     IF (RC ~= 0) THEN DO
  246.         ADPRO_TO_FRONT
  247.         OKAY1 "Dither mode not supported." || NL || ADPRO_RESULT
  248.         CALL ErrorOut 10
  249.     END
  250.  
  251.     IF (DitherMode = 6) | (DitherMode = 7) | (DitherMode = 8) THEN DO
  252.         DITHER_AMOUNT DitherAmt
  253.         IF (RC ~= 0) THEN DO
  254.             ADPRO_TO_FRONT
  255.             OKAY1 "Dither amount not supported." || NL || ADPRO_RESULT
  256.             CALL ErrorOut 10
  257.         END
  258.     END
  259.  
  260.     EXECUTE
  261.     IF (RC ~= 0) THEN DO
  262.         ADPRO_TO_FRONT
  263.         OKAY1 "Error creating rendered data."
  264.         CALL ErrorOut 10
  265.     END
  266.  
  267.     SAVER "ANIM" DestANIMFName "APPEND" "IMAGE"
  268.     IF (RC ~= 0) THEN DO
  269.         ADPRO_TO_FRONT
  270.         OKAY1 "Error during load" || NL ||,
  271.             "of frame " || CurrFrameNum || "."
  272.         CALL ErrorOut 10
  273.     END
  274.  
  275.     CurrFrameNum = CurrFrameNum + 1
  276.     IF (CurrFrameNum > EndFrame) THEN
  277.         continue = TRUE
  278. END
  279.  
  280. SAVER "ANIM" DestANIMFName "QUIT" "IMAGE"
  281. IF (RC ~= 0) THEN DO
  282.     ADPRO_TO_FRONT
  283.     OKAY1 "Error closing dest ANIM."
  284.     CALL ErrorOut 10
  285. END
  286.  
  287. CALL ErrorOut 0
  288.  
  289.  
  290. ErrorOut:
  291.     PARSE ARG ExitCode
  292.  
  293.     IF (EXISTS( SrcANIMFName )) & (ErrorCode ~= 0) THEN DO
  294.         LOADER "ANIM" SrcANIMFName "QUIT"
  295.         IF (RC ~= 0) THEN DO
  296.             ADPRO_TO_FRONT
  297.             OKAY1 "Error closing source ANIM:" || NL ||,
  298.                 SrcANIMFName || NL || NL ||,
  299.                 "You need to close it" || NL ||,
  300.                 "manually."
  301.         END
  302.     END
  303.  
  304.     IF (EXISTS( DestANIMFName )) & (ErrorCode ~= 0) THEN DO
  305.         SAVER "ANIM" DestANIMFName "IMAGE" "QUIT"
  306.         IF (RC ~= 0) THEN DO
  307.             ADPRO_TO_FRONT
  308.             OKAY1 "Error closing dest ANIM:" || NL ||,
  309.                 DestANIMFName || NL || NL ||,
  310.                 "You need to close it" || NL ||,
  311.                 "manually."
  312.         END
  313.     END
  314.  
  315.     IF (EXISTS( TempDefaults )) THEN DO
  316.         LOAD_DEFAULTS TempDefaults
  317.         IF (RC ~= 0) THEN DO
  318.             ADPRO_TO_FRONT
  319.             OKAY1 "Error restoring settings."
  320.         END
  321.  
  322.         ADDRESS COMMAND "Delete >NIL:" TempDefaults
  323.     END
  324.  
  325.     EXIT ExitCode
  326.