home *** CD-ROM | disk | FTP | other *** search
- /*
- ** ScaleToPixelAspect.adpro
- **
- ** $VER: ScaleToPixelAspect.adpro 1.2.0 (23.10.93)
- **
- ** This ARexx program allows the user to input a desired pixel
- ** aspect. The image will be scaled UP (if possible) to acheive
- ** this goal. If the UP scale fails, then it will attempt
- ** to scale down.
- **
- ** This script requires ADPro v2.5.0 (or higher).
- **
- ** Copyright © 1991-1993 ASDG, Incorporated
- ** All Rights Reserved
- */
-
-
- ADDRESS "ADPro"
- OPTIONS RESULTS
-
- NL = '0A'X
- SQ = '27'X
- DQ = '22'X
- TRUE = 1
- FALSE = 0
- TempDefaults = "T:TempADProDefaults"
-
-
- /*
- ** Save the current environment.
- */
-
- SAVE_DEFAULTS TempDefaults
-
-
- /*
- ** See what type of data is loaded in ADPro/MorphPlus.
- */
-
- CALL "FREDSCRIPTS:FREDFunctions/CheckForRawImageData" TRUE
- IF (RESULT ~= 0) THEN
- CALL ErrorOut 10
-
-
- /*
- ** Determine the current pixel aspect.
- */
-
- OPERATOR "DEFINE_PXL_ASPECT"
- IF (RC ~= 0) THEN
- CALL ErrorOut 10
-
- xaspect = WORD( ADPRO_RESULT, 1 )
- yaspect = WORD( ADPRO_RESULT, 2 )
-
- CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"Enter Desired X Aspect"' 1 1 240 TRUE
- IF (RESULT = (1-1)) THEN
- CALL ErrorOut 10
- dx = RESULT
-
- CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"Enter Desired Y Aspect"' 1 1 240 TRUE
- IF (RESULT = (1-1)) THEN
- CALL ErrorOut 10
- dy = RESULT
-
- IF (xaspect = dx) & (yaspect = dy) THEN
- CALL ErrorOut 10
-
-
- /*
- ** Always scale UP
- */
-
- originalaspect = xaspect / yaspect
- newaspect = dx / dy
-
- IF (originalaspect = newaspect) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Scale not required..." || NL ||,
- "Same pixel aspect defined."
- CALL ErrorOut 10
- END
-
- scalex = originalaspect / newaspect
- scaley = 1.0 / scalex
-
- IF (scalex >= 1.0) THEN DO
- PCT_SCALE TRUNC( scalex * 100 ) 100
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
-
- OKAYN '"ScaleToPixelAspect"' '"Scale X up failed. Scale down?"' '"Attempt Scale|Cancel"'
- IF (RC = 0) THEN
- CALL ErrorOut 0
-
- PCT_SCALE 100 TRUNC( scaley * 100 )
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Scale down failed." || NL || NL ||,
- "Arguments:" || NL ||,
- "Pct X = " || 100 ||,
- "Pct Y = " || TRUNC( scaley * 100 )
- CALL ErrorOut 10
- END
- END
-
- OPERATOR "DEFINE_PXL_ASPECT" dx dy
- END
- ELSE DO
- PCT_SCALE 100 TRUNC( scaley * 100 )
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
-
- OKAYN '"ScaleToPixelAspect"' '"Scale Y up failed. Scale down?"' '"Attempt Scale|Cancel"'
- IF (RC = 0) THEN
- CALL ErrorOut 0
-
- PCT_SCALE TRUNC( scalex * 100 ) 100
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Scale down failed." || NL || NL ||,
- "Arguments:" || NL ||,
- "Pct X = " || TRUNC( scalex * 100 ) ||,
- "Pct Y = " || 100
- CALL ErrorOut 10
- END
- END
-
- OPERATOR "DEFINE_PXL_ASPECT" dx dy
- END
-
- CALL ErrorOut 0
-
-
- ErrorOut:
- PARSE ARG ExitCode
-
- IF (EXISTS( TempDefaults )) THEN DO
- LOAD_DEFAULTS TempDefaults
- IF (RC ~= 0) THEN DO
- ADPRO_TO_FRONT
- OKAY1 "Error restoring settings."
- END
-
- ADDRESS COMMAND "Delete >NIL:" TempDefaults
- END
-
- EXIT ExitCode
-