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

  1. /*
  2. ** GradualMosaic.fred
  3. **
  4. ** $VER: GradualMosaic.fred 1.1.0 (23.10.93)
  5. **
  6. ** This program can be run from an InvokeADPro list to perform a mosaic on
  7. ** the image.
  8. **
  9. ** Clips Imported:
  10. **    FREDGradualMosaicXOffCurr    -    Current X Offset
  11. **    FREDGradualMosaicYOffCurr    -    Current Y Offset
  12. **    FREDGradualMosaicWidthCurr    -    Current Tile Width
  13. **    FREDGradualMosaicHeightCurr    -    Current Tile Height
  14. **    FREDGradualMosaicXOffIncr    -    X Offset increment per frame
  15. **    FREDGradualMosaicYOffIncr    -    Y Offset increment per frame
  16. **    FREDGradualMosaicWidthIncr    -    Tile Width increment per frame
  17. **    FREDGradualMosaicHeightIncr    -    Tile Height increment per frame
  18. **    FREDGradualMosaicXOffFinal    -    Final X Offset
  19. **    FREDGradualMosaicYOffFinal    -    Final Y Offset
  20. **    FREDGradualMosaicWidthFinal    -    Final Tile Width
  21. **    FREDGradualMosaicHeightFinal    -    Final Tile Height
  22. **    FREDNumberOfFrames        -    The number of frames selected
  23. **    FREDFrameCount            -    The number of frames already processed
  24. **
  25. ** NOTE: Clip names are case sensitive.
  26. **
  27. ** This script requires FRED v1.4.0 (or higher) to run.  Also required is
  28. ** ADPro v2.5.0 (or higher).
  29. **
  30. ** Copyright © 1993 ASDG, Incorporated
  31. ** All Rights Reserved
  32. */
  33.  
  34.  
  35. ADDRESS "ADPro"
  36. OPTIONS RESULTS
  37.  
  38. PARSE ARG FrameNum FrameFName Length LoadFlag FirstCallSeq FirstCallCell
  39.  
  40. NL = '0A'X
  41. SQ = '27'X
  42. DQ = '22'X
  43. TRUE  = 1
  44. FALSE = 0
  45.  
  46.  
  47. /*
  48. ** Get the required clips.  Error if any are missing.
  49. */
  50.  
  51. XOffCurr = GETCLIP( "FREDGradualMosaicXOffCurr" )
  52. IF (XOffCurr = "") THEN DO
  53.     ADPRO_TO_FRONT
  54.     OKAY1 "Required clip, FREDGradualMosaicXOffCurr," || NL ||,
  55.         "is not specified."
  56.     SCREEN_TO_FRONT "FRED"
  57.     EXIT 10
  58. END
  59.  
  60. YOffCurr = GETCLIP( "FREDGradualMosaicYOffCurr" )
  61. IF (YOffCurr = "") THEN DO
  62.     ADPRO_TO_FRONT
  63.     OKAY1 "Required clip, FREDGradualMosaicYOffCurr," || NL ||,
  64.         "is not specified."
  65.     SCREEN_TO_FRONT "FRED"
  66.     EXIT 10
  67. END
  68.  
  69. WidthCurr = GETCLIP( "FREDGradualMosaicWidthCurr" )
  70. IF (WidthCurr = "") THEN DO
  71.     ADPRO_TO_FRONT
  72.     OKAY1 "Required clip, FREDGradualMosaicWidthCurr," || NL ||,
  73.         "is not specified."
  74.     SCREEN_TO_FRONT "FRED"
  75.     EXIT 10
  76. END
  77.  
  78. HeightCurr = GETCLIP( "FREDGradualMosaicHeightCurr" )
  79. IF (HeightCurr = "") THEN DO
  80.     ADPRO_TO_FRONT
  81.     OKAY1 "Required clip, FREDGradualMosaicHeightCurr," || NL ||,
  82.         "is not specified."
  83.     SCREEN_TO_FRONT "FRED"
  84.     EXIT 10
  85. END
  86.  
  87. XOffIncr = GETCLIP( "FREDGradualMosaicXOffIncr" )
  88. IF (XOffIncr = "") THEN DO
  89.     ADPRO_TO_FRONT
  90.     OKAY1 "Required clip, FREDGradualMosaicXOffIncr," || NL ||,
  91.         "is not specified."
  92.     SCREEN_TO_FRONT "FRED"
  93.     EXIT 10
  94. END
  95.  
  96. YOffIncr = GETCLIP( "FREDGradualMosaicYOffIncr" )
  97. IF (YOffIncr = "") THEN DO
  98.     ADPRO_TO_FRONT
  99.     OKAY1 "Required clip, FREDGradualMosaicYOffIncr," || NL ||,
  100.         "is not specified."
  101.     SCREEN_TO_FRONT "FRED"
  102.     EXIT 10
  103. END
  104.  
  105. WidthIncr = GETCLIP( "FREDGradualMosaicWidthIncr" )
  106. IF (WidthIncr = "") THEN DO
  107.     ADPRO_TO_FRONT
  108.     OKAY1 "Required clip, FREDGradualMosaicWidthIncr," || NL ||,
  109.         "is not specified."
  110.     SCREEN_TO_FRONT "FRED"
  111.     EXIT 10
  112. END
  113.  
  114. HeightIncr = GETCLIP( "FREDGradualMosaicHeightIncr" )
  115. IF (HeightIncr = "") THEN DO
  116.     ADPRO_TO_FRONT
  117.     OKAY1 "Required clip, FREDGradualMosaicHeightIncr," || NL ||,
  118.         "is not specified."
  119.     SCREEN_TO_FRONT "FRED"
  120.     EXIT 10
  121. END
  122.  
  123. XOffFinal = GETCLIP( "FREDGradualMosaicXOffFinal" )
  124. IF (XOffFinal = "") THEN DO
  125.     ADPRO_TO_FRONT
  126.     OKAY1 "Required clip, FREDGradualMosaicXOffFinal," || NL ||,
  127.         "is not specified."
  128.     SCREEN_TO_FRONT "FRED"
  129.     EXIT 10
  130. END
  131.  
  132. YOffFinal = GETCLIP( "FREDGradualMosaicYOffFinal" )
  133. IF (YOffFinal = "") THEN DO
  134.     ADPRO_TO_FRONT
  135.     OKAY1 "Required clip, FREDGradualMosaicYOffFinal," || NL ||,
  136.         "is not specified."
  137.     SCREEN_TO_FRONT "FRED"
  138.     EXIT 10
  139. END
  140.  
  141. WidthFinal = GETCLIP( "FREDGradualMosaicWidthFinal" )
  142. IF (WidthFinal = "") THEN DO
  143.     ADPRO_TO_FRONT
  144.     OKAY1 "Required clip, FREDGradualMosaicWidthFinal," || NL ||,
  145.         "is not specified."
  146.     SCREEN_TO_FRONT "FRED"
  147.     EXIT 10
  148. END
  149.  
  150. HeightFinal = GETCLIP( "FREDGradualMosaicHeightFinal" )
  151. IF (HeightFinal = "") THEN DO
  152.     ADPRO_TO_FRONT
  153.     OKAY1 "Required clip, FREDGradualMosaicHeightFinal," || NL ||,
  154.         "is not specified."
  155.     SCREEN_TO_FRONT "FRED"
  156.     EXIT 10
  157. END
  158.  
  159. FrameCount = GETCLIP( "FREDGradualMosaicFrameCount" )
  160. IF (FrameCount = "") THEN DO
  161.     ADPRO_TO_FRONT
  162.     OKAY1 "Required clip, FREDGradualMosaicFrameCount," || NL ||,
  163.         "is not specified."
  164.     SCREEN_TO_FRONT "FRED"
  165.     EXIT 10
  166. END
  167.  
  168. NumberOfFrames = GETCLIP( "FREDGradualMosaicNumberOfFrames" )
  169. IF (NumberOfFrames = "") THEN DO
  170.     ADPRO_TO_FRONT
  171.     OKAY1 "Required clip, FREDGradualMosaicNumberOfFrames," || NL ||,
  172.         "is not specified."
  173.     SCREEN_TO_FRONT "FRED"
  174.     EXIT 10
  175. END
  176.  
  177.  
  178. /*
  179. ** See what type of data is loaded in ADPro/MorphPlus.
  180. */
  181.  
  182. CALL "FREDSCRIPTS:FREDFunctions/CheckForRawImageData" TRUE
  183. IF (RESULT ~= 0) THEN
  184.     EXIT 10
  185.  
  186.  
  187. /*
  188. ** Apply the mosaic operator on the image, using the current settings.
  189. */
  190.  
  191. FrameCount = FrameCount + 1
  192. IF (FrameCount = NumberOfFrames) THEN DO
  193.     XOffCurr = XOffFinal
  194.     YOffCurr = YOffFinal
  195.     WidthCurr = WidthFinal
  196.     HeightCurr = HeightFinal
  197. END
  198.  
  199. IF (XOffCurr >= WidthCurr) THEN
  200.     GoodXOff = (WidthCurr - 1) // XOffCurr
  201. ELSE
  202.     GoodXOff = XOffCurr
  203.  
  204. IF (YOffCurr >= HeightCurr) THEN
  205.     GoodYOff = (HeightCurr - 1) // YOffCurr
  206. ELSE
  207.     GoodYOff = YOffCurr
  208.  
  209. OPERATOR "MOSAIC",
  210.     "XSIZE" TRUNC( WidthCurr ),
  211.     "YSIZE" TRUNC( HeightCurr ),
  212.     "XOFFSET" TRUNC( GoodXOff ),
  213.     "YOFFSET" TRUNC( GoodYOff )
  214. IF (RC ~= 0) THEN DO
  215.     Why = ADPRO_RESULT
  216.     ADPRO_TO_FRONT
  217.     OKAY1 "Mosaic failed:" || NL ||,
  218.         "Argument Information:" || NL ||,
  219.         "X Offset = " || TRUNC( GoodXOff ) || NL ||,
  220.         "Y Offset = " || TRUNC( GoodYOff ) || NL ||,
  221.         "Width = " || TRUNC( WidthCurr ) || NL ||,
  222.         "Height = " || TRUNC( HeightCurr )
  223.     SCREEN_TO_FRONT "FRED"
  224.     EXIT 10
  225. END
  226.  
  227.  
  228. /*
  229. ** Update the clips.
  230. */
  231.  
  232. SETCLIP( "FREDGradualMosaicXOffCurr", XOffCurr + XOffIncr )
  233. SETCLIP( "FREDGradualMosaicYOffCurr", YOffCurr + YOffIncr )
  234. SETCLIP( "FREDGradualMosaicWidthCurr", WidthCurr + WidthIncr )
  235. SETCLIP( "FREDGradualMosaicHeightCurr", HeightCurr + HeightIncr )
  236. SETCLIP( "FREDFrameCount", FrameCount )
  237.  
  238. EXIT 0
  239.