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

  1. /*
  2. ** ScaleToPixelAspect.adpro
  3. **
  4. ** $VER: ScaleToPixelAspect.adpro 1.2.0 (23.10.93)
  5. **
  6. ** This ARexx program allows the user to input a desired pixel
  7. ** aspect. The image will be scaled UP (if possible) to acheive
  8. ** this goal. If the UP scale fails, then it will attempt
  9. ** to scale down.
  10. **
  11. ** This script requires ADPro v2.5.0 (or higher).
  12. **
  13. ** Copyright © 1991-1993 ASDG, Incorporated
  14. ** All Rights Reserved
  15. */
  16.  
  17.  
  18. ADDRESS "ADPro"
  19. OPTIONS RESULTS
  20.  
  21. NL = '0A'X
  22. SQ = '27'X
  23. DQ = '22'X
  24. TRUE  = 1
  25. FALSE = 0
  26. TempDefaults = "T:TempADProDefaults"
  27.  
  28.  
  29. /*
  30. ** Save the current environment.
  31. */
  32.  
  33. SAVE_DEFAULTS TempDefaults
  34.  
  35.  
  36. /*
  37. ** See what type of data is loaded in ADPro/MorphPlus.
  38. */
  39.  
  40. CALL "FREDSCRIPTS:FREDFunctions/CheckForRawImageData" TRUE
  41. IF (RESULT ~= 0) THEN
  42.     CALL ErrorOut 10
  43.  
  44.  
  45. /*
  46. ** Determine the current pixel aspect.
  47. */
  48.  
  49. OPERATOR "DEFINE_PXL_ASPECT"
  50. IF (RC ~= 0) THEN
  51.     CALL ErrorOut 10
  52.  
  53. xaspect = WORD( ADPRO_RESULT, 1 )
  54. yaspect = WORD( ADPRO_RESULT, 2 )
  55.  
  56. CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"Enter Desired X Aspect"' 1 1 240 TRUE
  57. IF (RESULT = (1-1)) THEN
  58.     CALL ErrorOut 10
  59. dx = RESULT
  60.  
  61. CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"Enter Desired Y Aspect"' 1 1 240 TRUE
  62. IF (RESULT = (1-1)) THEN
  63.     CALL ErrorOut 10
  64. dy = RESULT
  65.  
  66. IF (xaspect = dx) & (yaspect = dy) THEN
  67.     CALL ErrorOut 10
  68.  
  69.  
  70. /*
  71. ** Always scale UP
  72. */
  73.  
  74. originalaspect = xaspect / yaspect
  75. newaspect = dx / dy
  76.  
  77. IF (originalaspect = newaspect) THEN DO
  78.     ADPRO_TO_FRONT
  79.     OKAY1 "Scale not required..." || NL ||,
  80.         "Same pixel aspect defined."
  81.     CALL ErrorOut 10
  82. END
  83.  
  84. scalex = originalaspect / newaspect
  85. scaley = 1.0 / scalex
  86.  
  87. IF (scalex >= 1.0) THEN DO
  88.     PCT_SCALE TRUNC( scalex * 100 ) 100
  89.     IF (RC ~= 0) THEN DO
  90.         ADPRO_TO_FRONT
  91.  
  92.         OKAYN '"ScaleToPixelAspect"' '"Scale X up failed.  Scale down?"' '"Attempt Scale|Cancel"'
  93.         IF (RC = 0) THEN
  94.             CALL ErrorOut 0
  95.  
  96.         PCT_SCALE 100 TRUNC( scaley * 100 )
  97.         IF (RC ~= 0) THEN DO
  98.             ADPRO_TO_FRONT
  99.             OKAY1 "Scale down failed." || NL || NL ||,
  100.                 "Arguments:" || NL ||,
  101.                 "Pct X = " || 100 ||,
  102.                 "Pct Y = " || TRUNC( scaley * 100 )
  103.             CALL ErrorOut 10
  104.         END
  105.     END
  106.  
  107.     OPERATOR "DEFINE_PXL_ASPECT" dx dy
  108. END
  109. ELSE DO
  110.     PCT_SCALE 100 TRUNC( scaley * 100 )
  111.     IF (RC ~= 0) THEN DO
  112.         ADPRO_TO_FRONT
  113.  
  114.         OKAYN '"ScaleToPixelAspect"' '"Scale Y up failed.  Scale down?"' '"Attempt Scale|Cancel"'
  115.         IF (RC = 0) THEN
  116.             CALL ErrorOut 0
  117.  
  118.         PCT_SCALE TRUNC( scalex * 100 ) 100
  119.         IF (RC ~= 0) THEN DO
  120.             ADPRO_TO_FRONT
  121.             OKAY1 "Scale down failed." || NL || NL ||,
  122.                 "Arguments:" || NL ||,
  123.                 "Pct X = " || TRUNC( scalex * 100 ) ||,
  124.                 "Pct Y = " || 100
  125.             CALL ErrorOut 10
  126.         END
  127.     END
  128.  
  129.     OPERATOR "DEFINE_PXL_ASPECT" dx dy
  130. END
  131.  
  132. CALL ErrorOut 0
  133.  
  134.  
  135. ErrorOut:
  136.     PARSE ARG ExitCode
  137.  
  138.     IF (EXISTS( TempDefaults )) THEN DO
  139.         LOAD_DEFAULTS TempDefaults
  140.         IF (RC ~= 0) THEN DO
  141.             ADPRO_TO_FRONT
  142.             OKAY1 "Error restoring settings."
  143.         END
  144.  
  145.         ADDRESS COMMAND "Delete >NIL:" TempDefaults
  146.     END
  147.  
  148.     EXIT ExitCode
  149.