home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / GFX / ADPro251-3.DMS / ADPro251-3.adf / FREDScripts.lha / FREDOperators / Tile.fred < prev    next >
Encoding:
Text File  |  1994-01-31  |  4.7 KB  |  234 lines

  1. /*
  2. ** Tile.fred
  3. **
  4. ** $VER: Tile.fred 1.0.0 (08.12.93)
  5. **
  6. ** This program can be run from an InvokeADPro list to tile an image.
  7. **
  8. ** Clips Imported:
  9. **    FREDTileXOff    -    Left offset of tile
  10. **    FREDTileYOff    -    Top offset of tile
  11. **    FREDTileWidth    -    Width of tile
  12. **    FREDTileHeight    -    Height of tile
  13. **    FREDTileSkew    -    Skew type
  14. **    FREDTileSkewAmt    -    Skew amount
  15. **
  16. ** Clips Exported:
  17. **    FREDTileXOff    -    Left offset of tile
  18. **    FREDTileYOff    -    Top offset of tile
  19. **    FREDTileWidth    -    Width of tile
  20. **    FREDTileHeight    -    Height of tile
  21. **    FREDTileSkew    -    Skew type
  22. **    FREDTileSkewAmt    -    Skew amount
  23. **
  24. ** NOTE: Clip names are case sensitive.
  25. **
  26. ** This script requires FRED v1.4.0 (or higher) to run.  Also required is
  27. ** ADPro v2.5.0 (or higher).
  28. **
  29. ** Copyright © 1993 ASDG, Incorporated
  30. ** All Rights Reserved
  31. */
  32.  
  33.  
  34. ADDRESS "ADPro"
  35. OPTIONS RESULTS
  36.  
  37. PARSE ARG FrameNum FrameFName Length LoadFlag FirstCallSeq FirstCallCell
  38.  
  39. NL = '0A'X
  40. SQ = '27'X
  41. DQ = '22'X
  42. TRUE  = 1
  43. FALSE = 0
  44.  
  45.  
  46. IF (FirstCallSeq = 0) THEN DO
  47.     /*
  48.     ** Get the required clips.  Error if any are missing.
  49.     */
  50.  
  51.     TileXOff = GETCLIP( "FREDTileXOff" )
  52.     IF (TileXOff = "") THEN DO
  53.         ADPRO_TO_FRONT
  54.         OKAY1 "Required clip, FREDTileXOff," || NL ||,
  55.             "is not specified."
  56.         SCREEN_TO_FRONT "FRED"
  57.         EXIT 10
  58.     END
  59.  
  60.     TileYOff = GETCLIP( "FREDTileYOff" )
  61.     IF (TileYOff = "") THEN DO
  62.         ADPRO_TO_FRONT
  63.         OKAY1 "Required clip, FREDTileYOff," || NL ||,
  64.             "is not specified."
  65.         SCREEN_TO_FRONT "FRED"
  66.         EXIT 10
  67.     END
  68.  
  69.     TileWidth = GETCLIP( "FREDTileWidth" )
  70.     IF (TileWidth = "") THEN DO
  71.         ADPRO_TO_FRONT
  72.         OKAY1 "Required clip, FREDTileWidth," || NL ||,
  73.             "is not specified."
  74.         SCREEN_TO_FRONT "FRED"
  75.         EXIT 10
  76.     END
  77.  
  78.     TileHeight = GETCLIP( "FREDTileHeight" )
  79.     IF (TileHeight = "") THEN DO
  80.         ADPRO_TO_FRONT
  81.         OKAY1 "Required clip, FREDTileHeight," || NL ||,
  82.             "is not specified."
  83.         SCREEN_TO_FRONT "FRED"
  84.         EXIT 10
  85.     END
  86.  
  87.     TileSkew = GETCLIP( "FREDTileSkew" )
  88.     IF (TileSkew = "") THEN DO
  89.         ADPRO_TO_FRONT
  90.         OKAY1 "Required clip, FREDTileSkew," || NL ||,
  91.             "is not specified."
  92.         SCREEN_TO_FRONT "FRED"
  93.         EXIT 10
  94.     END
  95.  
  96.     IF (TileSkew ~= "NONE") THEN DO
  97.         TileSkewAmt = GETCLIP( "FREDTileSkewAmt" )
  98.         IF (TileSkewAmt = "") THEN DO
  99.             ADPRO_TO_FRONT
  100.             OKAY1 "Required clip, FREDTileSkewAmt," || NL ||,
  101.                 "is not specified."
  102.             SCREEN_TO_FRONT "FRED"
  103.             EXIT 10
  104.         END
  105.     END
  106. END
  107.  
  108.  
  109. /*
  110. ** See what type of data is loaded in ADPro/MorphPlus.
  111. */
  112.  
  113. CALL "FREDSCRIPTS:FREDFunctions/CheckForRawImageData" TRUE
  114. IF (RESULT ~= 0) THEN
  115.     EXIT 10
  116.  
  117.  
  118. /*
  119. ** If this is the first frame, we need to get the settings.
  120. */
  121.  
  122. IF (FirstCallSeq ~= 0) THEN DO
  123.     /*
  124.     ** Get the dimensions of the image.
  125.     */
  126.  
  127.     XSIZE
  128.     ImageWidth = ADPRO_RESULT
  129.  
  130.     YSIZE
  131.     ImageHeight = ADPRO_RESULT
  132.  
  133.  
  134.     /*
  135.     ** Ask the user to enter the tile settings.
  136.     */
  137.  
  138.     CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"X Offset"' 0 0 (ImageWidth-1) TRUE
  139.     IF (RESULT = (0-1)) THEN
  140.         EXIT 10
  141.     TileXOff = RESULT
  142.  
  143.     CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"Y Offset"' 0 0 (ImageHeight-1) TRUE
  144.     IF (RESULT = (0-1)) THEN
  145.         EXIT 10
  146.     TileYOff = RESULT
  147.  
  148.     CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"Width"' 1 1 (ImageWidth-TileXOff) TRUE
  149.     IF (RESULT = (1-1)) THEN
  150.         EXIT 10
  151.     TileWidth = RESULT
  152.  
  153.     CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"Height"' 1 1 (ImageHeight-TileYOff) TRUE
  154.     IF (RESULT = (1-1)) THEN
  155.         EXIT 10
  156.     TileHeight = RESULT
  157.  
  158.     ADPRO_TO_FRONT
  159.  
  160.     OKAYN '"Tile"' '"Type of skewing"' '"None|Horizontal|Vertical|Cancel"'
  161.     IF (RC = 0) THEN
  162.         EXIT 10
  163.     ELSE IF (RC = 1) THEN
  164.         TileSkew = "NONE"
  165.     ELSE IF (RC = 2) THEN DO
  166.         TileSkew = "HORIZONTAL"
  167.         MaxSkew = TileWidth
  168.     END
  169.     ELSE IF (RC = 3) THEN DO
  170.         TileSkew = "VERTICAL"
  171.         MaxSkew = TileHeight
  172.     END
  173.  
  174.     IF (TileSkew ~= "NONE") THEN DO
  175.         CALL "FREDSCRIPTS:FREDFunctions/GetANumber" '"Skew amount"' 0 0 MaxSkew TRUE
  176.         IF (RESULT = (0-1)) THEN
  177.             EXIT 10
  178.         TileSkewAmt = RESULT
  179.  
  180.         SETCLIP( "FREDTileSkewAmt", TileSkewAmt )
  181.     END
  182.  
  183.  
  184.     /*
  185.     ** Update the clips.
  186.     */
  187.  
  188.     SETCLIP( "FREDTileXOff", TileXOff )
  189.     SETCLIP( "FREDTileYOff", TileYOff )
  190.     SETCLIP( "FREDTileWidth", TileWidth )
  191.     SETCLIP( "FREDTileHeight", TileHeight )
  192.     SETCLIP( "FREDTileSkew", TileSkew )
  193. END
  194.  
  195.  
  196. /*
  197. ** Tile the image.
  198. */
  199.  
  200. IF (TileSkew = "NONE") THEN DO
  201.     OPERATOR "TILE",
  202.         TileXOff TileYOff,
  203.         TileWidth TileHeight
  204.     IF (RC ~= 0) THEN DO
  205.         ADPRO_TO_FRONT
  206.         OKAY1 "Could not tile image." || NL || NL ||,
  207.             "Arguments:" || NL ||,
  208.             "XOff YOff =" TileXOff TileYOff || NL ||,
  209.             "Width Height =" TileWidth TileHeight
  210.         SCREEN_TO_FRONT "FRED"
  211.         EXIT 10
  212.     END
  213. END
  214. ELSE DO
  215.     OPERATOR "TILE",
  216.         TileXOff TileYOff,
  217.         TileWidth TileHeight,
  218.         TileSkew,
  219.         TileSkewAmt
  220.     IF (RC ~= 0) THEN DO
  221.         ADPRO_TO_FRONT
  222.         OKAY1 "Could not tile image." || NL || NL ||,
  223.             "Arguments:" || NL ||,
  224.             "XOff YOff =" TileXOff TileYOff || NL ||,
  225.             "Width Height =" TileWidth TileHeight || NL ||,
  226.             "Skew Type =" TileSkew || NL ||,
  227.             "Skew Amount =" TileSkewAmt
  228.         SCREEN_TO_FRONT "FRED"
  229.         EXIT 10
  230.     END
  231. END
  232.  
  233. EXIT 0
  234.