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

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