/* ** Tile.fred ** ** $VER: Tile.fred 1.0.0 (08.12.93) ** ** This program can be run from an InvokeADPro list to tile an image. ** ** Clips Imported: ** FREDTileXOff - Left offset of tile ** FREDTileYOff - Top offset of tile ** FREDTileWidth - Width of tile ** FREDTileHeight - Height of tile ** FREDTileSkew - Skew type ** FREDTileSkewAmt - Skew amount ** ** Clips Exported: ** FREDTileXOff - Left offset of tile ** FREDTileYOff - Top offset of tile ** FREDTileWidth - Width of tile ** FREDTileHeight - Height of tile ** FREDTileSkew - Skew type ** FREDTileSkewAmt - Skew amount ** ** 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 © 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 IF (FirstCallSeq = 0) THEN DO /* ** Get the required clips. Error if any are missing. */ TileXOff = GETCLIP( "FREDTileXOff" ) IF (TileXOff = "") THEN DO ADPRO_TO_FRONT OKAY1 "Required clip, FREDTileXOff," || NL ||, "is not specified." SCREEN_TO_FRONT "FRED" EXIT 10 END TileYOff = GETCLIP( "FREDTileYOff" ) IF (TileYOff = "") THEN DO ADPRO_TO_FRONT OKAY1 "Required clip, FREDTileYOff," || NL ||, "is not specified." SCREEN_TO_FRONT "FRED" EXIT 10 END TileWidth = GETCLIP( "FREDTileWidth" ) IF (TileWidth = "") THEN DO ADPRO_TO_FRONT OKAY1 "Required clip, FREDTileWidth," || NL ||, "is not specified." SCREEN_TO_FRONT "FRED" EXIT 10 END TileHeight = GETCLIP( "FREDTileHeight" ) IF (TileHeight = "") THEN DO ADPRO_TO_FRONT OKAY1 "Required clip, FREDTileHeight," || NL ||, "is not specified." SCREEN_TO_FRONT "FRED" EXIT 10 END TileSkew = GETCLIP( "FREDTileSkew" ) IF (TileSkew = "") THEN DO ADPRO_TO_FRONT OKAY1 "Required clip, FREDTileSkew," || NL ||, "is not specified." SCREEN_TO_FRONT "FRED" EXIT 10 END IF (TileSkew ~= "NONE") THEN DO TileSkewAmt = GETCLIP( "FREDTileSkewAmt" ) IF (TileSkewAmt = "") THEN DO ADPRO_TO_FRONT OKAY1 "Required clip, FREDTileSkewAmt," || 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 /* ** If this is the first frame, we need to get the settings. */ IF (FirstCallSeq ~= 0) THEN DO /* ** Get the dimensions of the image. */ XSIZE ImageWidth = ADPRO_RESULT YSIZE ImageHeight = ADPRO_RESULT /* ** Ask the user to enter the tile settings. */ CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"X Offset"' 0 0 (ImageWidth-1) TRUE IF (RESULT = (0-1)) THEN EXIT 10 TileXOff = RESULT CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"Y Offset"' 0 0 (ImageHeight-1) TRUE IF (RESULT = (0-1)) THEN EXIT 10 TileYOff = RESULT CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"Width"' 1 1 (ImageWidth-TileXOff) TRUE IF (RESULT = (1-1)) THEN EXIT 10 TileWidth = RESULT CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"Height"' 1 1 (ImageHeight-TileYOff) TRUE IF (RESULT = (1-1)) THEN EXIT 10 TileHeight = RESULT ADPRO_TO_FRONT OKAYN '"Tile"' '"Type of skewing"' '"None|Horizontal|Vertical|Cancel"' IF (RC = 0) THEN EXIT 10 ELSE IF (RC = 1) THEN TileSkew = "NONE" ELSE IF (RC = 2) THEN DO TileSkew = "HORIZONTAL" MaxSkew = TileWidth END ELSE IF (RC = 3) THEN DO TileSkew = "VERTICAL" MaxSkew = TileHeight END IF (TileSkew ~= "NONE") THEN DO CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"Skew amount"' 0 0 MaxSkew TRUE IF (RESULT = (0-1)) THEN EXIT 10 TileSkewAmt = RESULT SETCLIP( "FREDTileSkewAmt", TileSkewAmt ) END /* ** Update the clips. */ SETCLIP( "FREDTileXOff", TileXOff ) SETCLIP( "FREDTileYOff", TileYOff ) SETCLIP( "FREDTileWidth", TileWidth ) SETCLIP( "FREDTileHeight", TileHeight ) SETCLIP( "FREDTileSkew", TileSkew ) END /* ** Tile the image. */ IF (TileSkew = "NONE") THEN DO OPERATOR "TILE", TileXOff TileYOff, TileWidth TileHeight IF (RC ~= 0) THEN DO ADPRO_TO_FRONT OKAY1 "Could not tile image." || NL || NL ||, "Arguments:" || NL ||, "XOff YOff =" TileXOff TileYOff || NL ||, "Width Height =" TileWidth TileHeight SCREEN_TO_FRONT "FRED" EXIT 10 END END ELSE DO OPERATOR "TILE", TileXOff TileYOff, TileWidth TileHeight, TileSkew, TileSkewAmt IF (RC ~= 0) THEN DO ADPRO_TO_FRONT OKAY1 "Could not tile image." || NL || NL ||, "Arguments:" || NL ||, "XOff YOff =" TileXOff TileYOff || NL ||, "Width Height =" TileWidth TileHeight || NL ||, "Skew Type =" TileSkew || NL ||, "Skew Amount =" TileSkewAmt SCREEN_TO_FRONT "FRED" EXIT 10 END END EXIT 0