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

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