home *** CD-ROM | disk | FTP | other *** search
- /*
- ** GradualScale.fred
- **
- ** $VER: GradualScale.fred 1.1.0 (23.10.93)
- **
- ** This program can be run from an InvokeADPro list to gradually scale the images
- ** in a sequence.
- **
- ** Clips Imported:
- ** FREDGradualWidthCurr - Current width
- ** FREDGradualHeightCurr - Current height
- ** FREDGradualWidthIncr - Width increment per frame
- ** FREDGradualHeightIncr - Height increment per frame
- ** FREDGradualWidthFinal - Final width
- ** FREDGradualHeightFinal - Final height
- ** FREDNumberOfFrames - The number of frames selected
- ** FREDFrameCount - The number of frames already processed
- **
- ** 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.
- */
-
- WidthCurr = GETCLIP( "FREDGradualWidthCurr" )
- IF (WidthCurr = "") THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Required clip, FREDGradualWidthCurr," || NL ||,
- "is not specified."
- SCREEN_TO_FRONT "FRED"
- EXIT 10
- END
-
- HeightCurr = GETCLIP( "FREDGradualHeightCurr" )
- IF (HeightCurr = "") THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Required clip, FREDGradualHeightCurr," || NL ||,
- "is not specified."
- SCREEN_TO_FRONT "FRED"
- EXIT 10
- END
-
- WidthIncr = GETCLIP( "FREDGradualWidthIncr" )
- IF (WidthIncr = "") THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Required clip, FREDGradualWidthIncr," || NL ||,
- "is not specified."
- SCREEN_TO_FRONT "FRED"
- EXIT 10
- END
-
- HeightIncr = GETCLIP( "FREDGradualHeightIncr" )
- IF (HeightIncr = "") THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Required clip, FREDGradualHeightIncr," || NL ||,
- "is not specified."
- SCREEN_TO_FRONT "FRED"
- EXIT 10
- END
-
- WidthFinal = GETCLIP( "FREDGradualWidthFinal" )
- IF (WidthFinal = "") THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Required clip, FREDGradualWidthFinal," || NL ||,
- "is not specified."
- SCREEN_TO_FRONT "FRED"
- EXIT 10
- END
-
- HeightFinal = GETCLIP( "FREDGradualHeightFinal" )
- IF (HeightFinal = "") THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Required clip, FREDGradualHeightFinal," || NL ||,
- "is not specified."
- SCREEN_TO_FRONT "FRED"
- EXIT 10
- END
-
- NumberOfFrames = GETCLIP( "FREDNumberOfFrames" )
- IF (NumberOfFrames = "") THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Required clip, FREDNumberOfFrames," || NL ||,
- "is not specified."
- SCREEN_TO_FRONT "FRED"
- EXIT 10
- END
-
- FrameCount = GETCLIP( "FREDFrameCount" )
- IF (FrameCount = "") THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Required clip, FREDFrameCount," || NL ||,
- "is not specified."
- SCREEN_TO_FRONT "FRED"
- EXIT 10
- END
-
-
- /*
- ** See what type of data is loaded in ADPro/MorphPlus.
- */
-
- CALL "FREDSCRIPTS:FREDFunctions/CheckForRawImageData" TRUE
- IF (RESULT ~= 0) THEN
- EXIT 10
-
-
- /*
- ** If the size we want to scale to is exactly half the current size,
- ** then we can gain a lot of speed by using the Halve operator instead
- ** of scaling.
- */
-
- FrameCount = FrameCount + 1
- IF (FrameCount = NumberOfFrames) THEN DO
- WidthCurr = WidthFinal
- HeightCurr = HeightFinal
- END
-
- ABS_SCALE WidthCurr HeightCurr
- IF (RC ~= 0) THEN DO
- Why = ADPRO_RESULT
- ADPRO_TO_FRONT
- OKAY1 "Scaling failed:" || NL ||,
- "Argument Information:" || NL ||,
- "Width = " || WidthCurr || NL ||,
- "Height = " || HeightCurr
- SCREEN_TO_FRONT "FRED"
- EXIT 10
- END
-
-
- /*
- ** Update the clips.
- */
-
- SETCLIP( "FREDGradualWidthCurr", WidthCurr + WidthIncr )
- SETCLIP( "FREDGradualHeightCurr", HeightCurr + HeightIncr )
- SETCLIP( "FREDFrameCount", FrameCount )
-
- EXIT 0
-