/*
** DefinePxlAspect.fred
**
** $VER: DefinePxlAspect.fred 1.2.0 (5.11.93)
**
** This script will allow the user to define a new pixel aspect that will
** be saved with the image. This allows the image to load correctly in
** other programs.
**
** 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 Elastic Reality, Inc.
** 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

GlobalModify = GETCLIP( "FREDGlobalModify" )
xAsp         = GETCLIP( "FREDXAspect" )
yAsp         = GETCLIP( "FREDYAspect" )
xRes         = GETCLIP( "FREDXDPI" )
yRes         = GETCLIP( "FREDYDPI" )

IF (FirstCallSeq = 1) THEN DO
	ADPRO_TO_FRONT

	OKAYN '"DefinePxlAspect.fred"' '"Do global modification?"' '"Global|Frame-Specific|Cancel"'
	IF (RC = 0) THEN DO
		SCREEN_TO_FRONT "FRED"
		EXIT 10
	END
	ELSE
		GlobalModify = 2 - RC

	SCREEN_TO_FRONT "FRED"

	SETCLIP( "FREDGlobalModify", GlobalModify )

	OPERATOR "DEFINE_PXL_ASPECT"
	IF (RC ~= 0) THEN DO
		ADPRO_TO_FRONT
		OKAY1 "The operator DEFINE_PXL_ASPECT," || NL ||,
			"failed to execute."
		SCREEN_TO_FRONT "FRED"
		EXIT 10
	END

	xAsp   = WORD( ADPRO_RESULT, 1 )
	yAsp   = WORD( ADPRO_RESULT, 2 )
	xRes   = WORD( ADPRO_RESULT, 3 )
	yRes   = WORD( ADPRO_RESULT, 4 )

	text = "Current settings:" || NL ||,
		"X Aspect     = " || xAsp || NL ||,
		"Y Aspect     = " || yAsp || NL ||,
		"X DPI Res    = " || xRes || NL ||,
		"Y DPI Res    = "

	ADPRO_TO_FRONT

	OKAYN '"DefinePxlAspect.fred"' '"'text'"' '"Modify Settings|Don''t Modify Image|Cancel"'
	IF (RC = 0) THEN DO
		SCREEN_TO_FRONT "FRED"
		EXIT 10
	END
	ELSE IF (RC = 1) THEN
		CALL GetInfo

	SCREEN_TO_FRONT "FRED"
END
ELSE IF (GlobalModify = 0) THEN DO
	IF (FirstCallSeq = 0) THEN DO
		text = "Current settings:" || NL ||,
			"X Aspect     = " || xAsp || NL ||,
			"Y Aspect     = " || yAsp || NL ||,
			"X DPI Res    = " || xRes || NL ||,
			"Y DPI Res    = "

		ADPRO_TO_FRONT

		OKAYN '"DefinePxlAspect.fred"' '"'text'"' '"Modify Settings|Don''t Modify Image|Cancel"'
		IF (RC = 0) THEN DO
			SCREEN_TO_FRONT "FRED"
			EXIT 10
		END
		ELSE IF (RC = 1) THEN
			CALL GetInfo

		SCREEN_TO_FRONT "FRED"
	END
	ELSE
		CALL GetInfo
END

OPERATOR "DEFINE_PXL_ASPECT" "XASPECT" xAsp "YASPECT" yAsp "XRES" xRes "YRES" yRes

SETCLIP( "FREDXAspect", xAsp )
SETCLIP( "FREDYAspect", yAsp )
SETCLIP( "FREDXDPI", xRes )
SETCLIP( "FREDYDPI", yRes )

EXIT 0


GetInfo:
	CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"X Aspect"' xAsp 1 240 TRUE
	IF (RESULT = (1-1)) THEN
		EXIT 10
	xAsp = RESULT

	CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"Y Aspect"' yAsp 1 240 TRUE
	IF (RESULT = (1-1)) THEN
		EXIT 10
	yAsp = RESULT

	CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"X DPI Resolution"' xRes 1 1000 TRUE
	IF (RESULT = (1-1)) THEN
		EXIT 10
	xRes = RESULT

	CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"Y DPI Resolution"' yRes 1 1000 TRUE
	IF (RESULT = (1-1)) THEN
		EXIT 10
	yRes = RESULT

	RETURN
