home *** CD-ROM | disk | FTP | other *** search
- /*
- ** DynamicRange.fred
- **
- ** $VER: DynamicRange.fred 1.2.0 (23.10.93)
- **
- ** This program can be run from an InvokeADPro list to run the current
- ** frame through the DynamicRange operator with global or frame-specific
- ** range values or to display the range of each frame.
- **
- ** Clips Imported:
- ** FREDTestMode - ~0 if only testing images
- ** 0 if doing actual operation
- ** FREDGlobalModify - ~0 if operation is global
- ** 0 if it should be frame-specific
- ** FREDDynamicRangeMin - Minimum value (default)
- ** FREDDynamicRangeMax - Maximum value (default)
- **
- **
- ** NOTE: Clip names are case sensitive.
- **
- ** This script requires FRED v1.4.0 (or higher) to run. Also required is
- ** ADPro v2.5.0 (or higher).
- **
- ** Copyright © 1992-1993 ASDG, Incorporated
- ** All Rights Reserved
- */
-
-
- ADDRESS "ADPro"
- OPTIONS RESULTS
-
- PARSE ARG FrameNum FrameFName Length LoadFlag FirstCallSeq FirstCallCell
-
- NL = '0A'X
- SQ = '27'X
- DQ = '22'X
- TRUE = 1
- FALSE = 0
-
-
- /*
- ** Get the required clips. Error if any are missing.
- */
-
- TestMode = GETCLIP( "FREDTestMode" )
- IF (TestMode = "") THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Required clip, FREDTestMode," || NL ||,
- "is not specified."
- SCREEN_TO_FRONT "FRED"
- EXIT 10
- END
-
- IF (TestMode = 0) THEN DO
- GlobalModify = GETCLIP( "FREDGlobalModify" )
- IF (GlobalModify = "") THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Required clip, FREDGlobalModify," || NL ||,
- "is not specified."
- SCREEN_TO_FRONT "FRED"
- EXIT 10
- END
-
- IF (GlobalModify ~= 0) THEN DO
- DynamicRangeMin = GETCLIP( "FREDDynamicRangeMin" )
- IF (DynamicRangeMin = "") THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Required clip, FREDDynamicRangeMin," || NL ||,
- "is not specified."
- SCREEN_TO_FRONT "FRED"
- EXIT 10
- END
-
- DynamicRangeMax = GETCLIP( "FREDDynamicRangeMax" )
- IF (DynamicRangeMax = "") THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Required clip, FREDDynamicRangeMax," || NL ||,
- "is not specified."
- SCREEN_TO_FRONT "FRED"
- EXIT 10
- END
- END
- END
-
-
- /*
- ** See what type of data is loaded in ADPro/MorphPlus.
- */
-
- CALL "FREDSCRIPTS:FREDFunctions/CheckForRawImageData" TRUE
- IF (RESULT ~= 0) THEN
- EXIT 10
-
-
- /*
- ** Do the Dynamic Range operation. If we're only doing a test, display the
- ** results on the ADPro/MorphPlus screen.
- */
-
- IF (TestMode ~= 0) THEN DO
- OPERATOR "DYNAMIC_RANGE"
- IF (RC ~= 0) THEN DO
- Why = ADPRO_RESULT
- ADPRO_TO_FRONT
- OKAY1 "The operator DYNAMIC_RANGE" || NL ||,
- "failed to execute." || NL ||,
- Why
- SCREEN_TO_FRONT "FRED"
- EXIT 10
- END
-
- ADPRO_TO_FRONT
- OKAY1 "Frame# " || FrameNum || NL ||,
- FrameFName || NL || NL ||,
- "Range= " || ADPRO_RESULT
- SCREEN_TO_FRONT "FRED"
- END
- ELSE DO
- IF (GlobalModify ~= 0) THEN DO
- NewMin = DynamicRangeMin
- NewMax = DynamicRangeMax
- END
- ELSE DO
- OPERATOR "DYNAMIC_RANGE"
- IF (RC ~= 0) THEN DO
- Why = ADPRO_RESULT
- ADPRO_TO_FRONT
- OKAY1 "The operator DYNAMIC_RANGE" || NL ||,
- "failed to execute." || NL ||,
- Why
- SCREEN_TO_FRONT "FRED"
- EXIT 10
- END
-
- ADPRO_TO_FRONT
- OKAY1 "Frame# " || FrameNum || NL ||,
- FrameFName || NL || NL ||,
- "Range= " || ADPRO_RESULT
- SCREEN_TO_FRONT "FRED"
-
- CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"New Minimum"' 0 0 255 TRUE
- IF (RESULT = (0-1)) THEN
- EXIT 10
- NewMin = RESULT
-
- CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"New Maximum"' 255 NewMin 255 TRUE
- IF (RESULT = (NewMin-1)) THEN
- EXIT 10
- NewMax = RESULT
- END
-
- OPERATOR "DYNAMIC_RANGE" NewMin NewMax
- IF (RC ~= 0) THEN DO
- Why = ADPRO_RESULT
- ADPRO_TO_FRONT
- OKAY1 "The operator DYNAMIC_RANGE" || NL ||,
- "failed to execute." || NL ||,
- Why || NL ||,
- "Argument Information:" || NL ||,
- "Min = " || NewMin || NL ||,
- "Max = " || NewMax
- SCREEN_TO_FRONT "FRED"
- EXIT 10
- END
- END
-
- EXIT 0
-