home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / GFX / ADPro251-3.DMS / ADPro251-3.adf / FREDScripts.lha / FREDOperators / DynamicRange.fred < prev    next >
Encoding:
Text File  |  1994-01-31  |  3.6 KB  |  168 lines

  1. /*
  2. ** DynamicRange.fred
  3. **
  4. ** $VER: DynamicRange.fred 1.2.0 (23.10.93)
  5. **
  6. ** This program can be run from an InvokeADPro list to run the current
  7. ** frame through the DynamicRange operator with global or frame-specific
  8. ** range values or to display the range of each frame.
  9. **
  10. ** Clips Imported:
  11. **    FREDTestMode        -    ~0 if only testing images
  12. **                    0 if doing actual operation
  13. **    FREDGlobalModify    -    ~0 if operation is global
  14. **                    0 if it should be frame-specific
  15. **    FREDDynamicRangeMin    -    Minimum value (default)
  16. **    FREDDynamicRangeMax    -    Maximum value (default)
  17. **
  18. **
  19. ** NOTE: Clip names are case sensitive.
  20. **
  21. ** This script requires FRED v1.4.0 (or higher) to run.  Also required is
  22. ** ADPro v2.5.0 (or higher).
  23. **
  24. ** Copyright © 1992-1993 ASDG, Incorporated
  25. ** All Rights Reserved
  26. */
  27.  
  28.  
  29. ADDRESS "ADPro"
  30. OPTIONS RESULTS
  31.  
  32. PARSE ARG FrameNum FrameFName Length LoadFlag FirstCallSeq FirstCallCell
  33.  
  34. NL = '0A'X
  35. SQ = '27'X
  36. DQ = '22'X
  37. TRUE  = 1
  38. FALSE = 0
  39.  
  40.  
  41. /*
  42. ** Get the required clips.  Error if any are missing.
  43. */
  44.  
  45. TestMode = GETCLIP( "FREDTestMode" )
  46. IF (TestMode = "") THEN DO
  47.     ADPRO_TO_FRONT
  48.     OKAY1 "Required clip, FREDTestMode," || NL ||,
  49.         "is not specified."
  50.     SCREEN_TO_FRONT "FRED"
  51.     EXIT 10
  52. END
  53.  
  54. IF (TestMode = 0) THEN DO
  55.     GlobalModify = GETCLIP( "FREDGlobalModify" )
  56.     IF (GlobalModify = "") THEN DO
  57.         ADPRO_TO_FRONT
  58.         OKAY1 "Required clip, FREDGlobalModify," || NL ||,
  59.             "is not specified."
  60.         SCREEN_TO_FRONT "FRED"
  61.         EXIT 10
  62.     END
  63.  
  64.     IF (GlobalModify ~= 0) THEN DO
  65.         DynamicRangeMin = GETCLIP( "FREDDynamicRangeMin" )
  66.         IF (DynamicRangeMin = "") THEN DO
  67.             ADPRO_TO_FRONT
  68.             OKAY1 "Required clip, FREDDynamicRangeMin," || NL ||,
  69.                                 "is not specified."
  70.             SCREEN_TO_FRONT "FRED"
  71.             EXIT 10
  72.         END
  73.  
  74.         DynamicRangeMax = GETCLIP( "FREDDynamicRangeMax" )
  75.         IF (DynamicRangeMax = "") THEN DO
  76.             ADPRO_TO_FRONT
  77.             OKAY1 "Required clip, FREDDynamicRangeMax," || NL ||,
  78.                 "is not specified."
  79.             SCREEN_TO_FRONT "FRED"
  80.             EXIT 10
  81.         END
  82.     END
  83. END
  84.  
  85.  
  86. /*
  87. ** See what type of data is loaded in ADPro/MorphPlus.
  88. */
  89.  
  90. CALL "FREDSCRIPTS:FREDFunctions/CheckForRawImageData" TRUE
  91. IF (RESULT ~= 0) THEN
  92.     EXIT 10
  93.  
  94.  
  95. /*
  96. ** Do the Dynamic Range operation.  If we're only doing a test, display the
  97. ** results on the ADPro/MorphPlus screen.
  98. */
  99.  
  100. IF (TestMode ~= 0) THEN DO
  101.     OPERATOR "DYNAMIC_RANGE"
  102.     IF (RC ~= 0) THEN DO
  103.         Why = ADPRO_RESULT
  104.         ADPRO_TO_FRONT
  105.         OKAY1 "The operator DYNAMIC_RANGE" || NL ||,
  106.             "failed to execute." || NL ||,
  107.             Why
  108.         SCREEN_TO_FRONT "FRED"
  109.         EXIT 10
  110.     END
  111.  
  112.     ADPRO_TO_FRONT
  113.     OKAY1 "Frame# " || FrameNum || NL ||,
  114.         FrameFName || NL || NL ||,
  115.         "Range= " || ADPRO_RESULT
  116.     SCREEN_TO_FRONT "FRED"
  117. END
  118. ELSE DO
  119.     IF (GlobalModify ~= 0) THEN DO
  120.         NewMin = DynamicRangeMin
  121.         NewMax = DynamicRangeMax
  122.     END
  123.     ELSE DO
  124.         OPERATOR "DYNAMIC_RANGE"
  125.         IF (RC ~= 0) THEN DO
  126.             Why = ADPRO_RESULT
  127.             ADPRO_TO_FRONT
  128.             OKAY1 "The operator DYNAMIC_RANGE" || NL ||,
  129.                 "failed to execute." || NL ||,
  130.                 Why
  131.             SCREEN_TO_FRONT "FRED"
  132.             EXIT 10
  133.         END
  134.  
  135.         ADPRO_TO_FRONT
  136.         OKAY1 "Frame# " || FrameNum || NL ||,
  137.             FrameFName || NL || NL ||,
  138.             "Range= " || ADPRO_RESULT
  139.         SCREEN_TO_FRONT "FRED"
  140.  
  141.         CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"New Minimum"' 0 0 255 TRUE
  142.         IF (RESULT = (0-1)) THEN
  143.             EXIT 10
  144.         NewMin = RESULT
  145.  
  146.         CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"New Maximum"' 255 NewMin 255 TRUE
  147.         IF (RESULT = (NewMin-1)) THEN
  148.             EXIT 10
  149.         NewMax = RESULT
  150.     END
  151.  
  152.     OPERATOR "DYNAMIC_RANGE" NewMin NewMax
  153.     IF (RC ~= 0) THEN DO
  154.         Why = ADPRO_RESULT
  155.         ADPRO_TO_FRONT
  156.         OKAY1 "The operator DYNAMIC_RANGE" || NL ||,
  157.             "failed to execute." || NL ||,
  158.             Why || NL ||,
  159.             "Argument Information:" || NL ||,
  160.             "Min = " || NewMin || NL ||,
  161.             "Max = " || NewMax
  162.         SCREEN_TO_FRONT "FRED"
  163.          EXIT 10
  164.     END
  165. END
  166.  
  167. EXIT 0
  168.