home *** CD-ROM | disk | FTP | other *** search
- /*
- ** 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
-