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

  1. /*
  2. ** ScaleANIM.adpro
  3. **
  4. ** $VER: ScaleANIM.adpro 1.3.1 (17.1.94)
  5. **
  6. ** This AREXX program will take an existing ANIM file and scale
  7. ** its frames to the users specifications.
  8. **
  9. ** This script requires ADPro v2.5.0 (or higher).
  10. **
  11. ** Copyright © 1990-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 scale.
  39. */
  40.  
  41. CALL "FREDSCRIPTS:FREDFunctions/GetAFile" '"Enter ANIM To Scale"' '"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. CALL "FREDSCRIPTS:FREDFunctions/GetAFile" '"Enter name of ANIM file to create"' '"ADPRO:"' '""""' TRUE
  50. IF (RESULT = DQ||DQ) THEN DO
  51.     ADPRO_TO_FRONT
  52.     OKAY1 "Error, no dest ANIM specified."
  53.     CALL ErrorOut 10
  54. END
  55. DestANIMFName = RESULT
  56.  
  57. IF (EXISTS( DestANIMFName )) THEN DO
  58.     ADPRO_TO_FRONT
  59.  
  60.     OKAYN '"CropANIM"' '"Truncate destination ANIM?"' '"Start New File|Append To File|Cancel"'
  61.     IF (RC = 0) THEN DO
  62.         CALL ErrorOut 10
  63.     END
  64.     ELSE IF (RC = 1) THEN DO
  65.         IMAGE_TYPE
  66.         ImageType = ADPRO_RESULT
  67.         IF (WORD( ImageType, 1 ) = "NONE") THEN DO
  68.             LOADER "BACKDROP" "XXX" "WIDTH" 10 "HEIGHT" 10 "COLOR"
  69.             IF (RC ~= 0) THEN DO
  70.                 ADPRO_TO_FRONT
  71.                 OKAY1 "Unable to create temp image." || NL ||,
  72.                     "Argument Information:" || NL||,
  73.                     "Width = " || 10 || NL ||,
  74.                     "Height = " || 10 || NL ||,
  75.                     "Type = " || "COLOR"
  76.                 CALL ErrorOut 10
  77.             END
  78.         END
  79.  
  80.         IF (WORD( ImageType, 1 ) ~= "BITPLANE") THEN DO
  81.             EXECUTE
  82.             IF (RC ~= 0) THEN DO
  83.                 ADPRO_TO_FRONT
  84.                 OKAY1 "Unable to create temp rendered data."
  85.                 CALL ErrorOut 10
  86.             END
  87.         END
  88.  
  89.         SAVER "ANIM" DestANIMFName "IMAGE" "QUIT"
  90.         IF (RC ~= 0) THEN DO
  91.             ADPRO_TO_FRONT
  92.             OKAY1 "Could not close current ANIM file." || NL ||,
  93.                 "Argument Information:" || NL ||,
  94.                 "Filename = " || DestANIMFName || NL ||,
  95.                 "Type = " || "IMAGE" || NL ||,
  96.                 "Flags = " || "QUIT"
  97.             CALL ErrorOut 10
  98.         END
  99.  
  100.         ADDRESS COMMAND "Delete >NIL:" DestANIMFName
  101.     END
  102. END
  103.  
  104. LOADER "ANIM" SrcANIMFName "COUNT"
  105. IF (RC ~= 0) THEN DO
  106.     ADPRO_TO_FRONT
  107.     OKAY1 "Can't find ANIM file."
  108.     CALL ErrorOut 10
  109. END
  110.  
  111. NumFrames = ADPRO_RESULT
  112.  
  113.  
  114. /*
  115. ** Ask which frames to process.
  116. */
  117.  
  118. CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"Starting frame"' 1 1 NumFrames TRUE
  119. StartFrame = RESULT
  120. IF (StartFrame = (1-1)) THEN
  121.     CALL ErrorOut 10
  122.  
  123. CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"Ending frame"' NumFrames StartFrame NumFrames TRUE
  124. EndFrame = RESULT
  125. IF (EndFrame = (StartFrame-1)) THEN
  126.     CALL ErrorOut 10
  127.  
  128.  
  129. XSIZE
  130. ImageWidth = ADPRO_RESULT
  131.  
  132. YSIZE
  133. ImageHeight = ADPRO_RESULT
  134.  
  135. CALL "FREDSCRIPTS:FREDFunctions/FileOnly" SrcANIMFName
  136. srcANIMNodeName = RESULT
  137.  
  138. str = "ANIM:" srcANIMNodeName || NL || "(" || ImageWidth "x" ImageHeight || ")"
  139.  
  140. ADPRO_TO_FRONT
  141.  
  142. OKAYN '"ScaleANIM"' '"'str'"' '"Scale ANIM|Cancel"'
  143. IF (RC = 0) THEN DO
  144.     CALL ErrorOut 10
  145. END
  146.  
  147. CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"New width (0 = same)"' 0 0 10000 TRUE
  148. xRes = RESULT
  149. IF (xRes = (0-1)) THEN
  150.     CALL ErrorOut 10
  151.  
  152. CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"New height (0 = same)"' 0 0 10000 TRUE
  153. yRes = RESULT
  154. IF (yRes = (0-1)) THEN
  155.     CALL ErrorOut 10
  156.  
  157. IF (xRes = 0) & (yRes = 0) THEN
  158.     CALL ErrorOut 0
  159.  
  160. LOADER "ANIM" SrcANIMFName "FRAME" 1
  161. IF (RC ~= 0) THEN DO
  162.     ADPRO_TO_FRONT
  163.     OKAY1 "Cannot find source anim."
  164.     CALL ErrorOut 10
  165. END
  166.  
  167. PSTATUS "LOCKED"
  168.  
  169. SCREEN_TYPE
  170. oldSType = ADPRO_RESULT
  171. SCREEN_TYPE ADPRO_RESULT
  172.  
  173. IF (xRes = 0) THEN
  174.     xRes = ImageWidth
  175.  
  176. IF (yRes = 0) THEN
  177.     yRes = ImageHeight
  178.  
  179. num = StartFrame
  180. continue = FALSE
  181. DO WHILE (continue = FALSE)
  182.     LOADER "ANIM" SrcANIMFName "FRAME" num
  183.     IF (RC ~= 0) THEN DO
  184.         ADPRO_TO_FRONT
  185.         OKAY1 "Error during load" || NL ||,
  186.             "of frame " || num || "."
  187.         CALL ErrorOut 10
  188.     END
  189.  
  190.     ABS_SCALE xRes yRes
  191.     IF (RC ~= 0) THEN DO
  192.         ADPRO_TO_FRONT
  193.         OKAY1 "Error scaling image data" || NL ||,
  194.             "to" xRes "x" yRes
  195.         CALL ErrorOut 10
  196.     END
  197.  
  198.     EXECUTE
  199.     IF (RC ~= 0) THEN DO
  200.         ADPRO_TO_FRONT
  201.         OKAY1 "Error creating rendered data."
  202.         CALL ErrorOut 10
  203.     END
  204.  
  205.     SAVER "ANIM" DestANIMFName "APPEND" "IMAGE"
  206.     IF (RC ~= 0) THEN DO
  207.         OKAY1 "Error during load" || NL ||,
  208.             "of frame " || num || "."
  209.         CALL ErrorOut 10
  210.     END
  211.  
  212.     num = num + 1
  213.     IF (num > EndFrame) THEN
  214.         continue = TRUE
  215. END
  216.  
  217. SAVER "ANIM" dest "QUIT" "IMAGE"
  218. IF (RC ~= 0) THEN DO
  219.     ADPRO_TO_FRONT
  220.     OKAY1 "Error closing dest anim."
  221.     CALL ErrorOut 10
  222. END
  223.  
  224. CALL ErrorOut 0
  225.  
  226.  
  227. ErrorOut:
  228.     PARSE ARG ExitCode
  229.  
  230.     IF (EXISTS( SrcANIMFName )) & (ErrorCode ~= 0) THEN DO
  231.         LOADER "ANIM" SrcANIMFName "QUIT"
  232.         IF (RC ~= 0) THEN DO
  233.             ADPRO_TO_FRONT
  234.             OKAY1 "Error closing source ANIM:" || NL ||,
  235.                 SrcANIMFName || NL || NL ||,
  236.                 "You need to close it" || NL ||,
  237.                 "manually."
  238.         END
  239.     END
  240.  
  241.     IF (EXISTS( DestANIMFName )) & (ErrorCode ~= 0) THEN DO
  242.         SAVER "ANIM" DestANIMFName "IMAGE" "QUIT"
  243.         IF (RC ~= 0) THEN DO
  244.             ADPRO_TO_FRONT
  245.             OKAY1 "Error closing dest ANIM:" || NL ||,
  246.                 DestANIMFName || NL || NL ||,
  247.                 "You need to close it" || NL ||,
  248.                 "manually."
  249.         END
  250.     END
  251.  
  252.     IF (EXISTS( TempDefaults )) THEN DO
  253.         LOAD_DEFAULTS TempDefaults
  254.         IF (RC ~= 0) THEN DO
  255.             ADPRO_TO_FRONT
  256.             OKAY1 "Error restoring settings."
  257.         END
  258.  
  259.         ADDRESS COMMAND "Delete >NIL:" TempDefaults
  260.     END
  261.  
  262.     EXIT ExitCode
  263.