home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / EDG-CT1.DMS / in.adf / CT.run / Scripts / 5 / Clips / Frames / ClipToAnim5 next >
Encoding:
Text File  |  1995-09-14  |  7.7 KB  |  337 lines

  1. /*
  2.                         Control Tower Arexx Script
  3.                            Written By J.L. White
  4.                          (C)1995 Merlin's Software
  5. Lines=12
  6. 01=Clip To Anim5
  7. 02= 
  8. 03=This script will take Flyer Clips and
  9. 04=split them into individual frames, load
  10. 05=each into Image FX, then record whatever
  11. 06=options the user selects and process all
  12. 07=the selections on each frame then save
  13. 08=them all out as an Anim5 Animation.
  14. 09=
  15. 10=The anim is created using your current
  16. 11=Render Mode in ImageFX so adjust it before
  17. 12=you begin this script.
  18. */
  19.  
  20. parse arg InFile FileNum TotalNum FrameRepeat WhichScript TotalScript Times Select
  21. signal on error
  22. signal on syntax
  23. options results
  24. TOASTERLIB="ToasterARexx.port"
  25. call remlib(TOASTERLIB)
  26. call remlib('PROJECT_REXX_PORT')
  27. call addlib('PROJECT_REXX_PORT' , 0)
  28. call addlib(TOASTERLIB,0)
  29.  
  30. Format = "ILBM"
  31. InFile = Translate(InFile," ","ยค")
  32. InFile = strip(InFile)
  33. DriveName = "RAM:"
  34. TempDir = FindTemp()
  35. TempDirFile = TempDir"CT-Temp"
  36. if FileNum = 1 & WhichScript = 1 then do
  37.     call Locate_ImageFX
  38.     TOASTERLIB="ToasterARexx.port"
  39.     call remlib(TOASTERLIB)
  40.     call remlib('PROJECT_REXX_PORT')
  41.     call addlib('PROJECT_REXX_PORT' , 0)
  42.     call addlib(TOASTERLIB,0)
  43.     Address CT_1 SetString "CT:Scripts2/5/"
  44.     Address CT_1 GetMultiName "Select Options (Hold Shift Key Down For Multiple Process!)      "
  45.  
  46.     call Switcher(TOSW)
  47.     call Switcher(PDV1)
  48.     call Switcher(PDV2)
  49.     do i = 1 to TotalNum
  50.         blank = "Select Path & Name For Animation From Clip #"i"!    "
  51.         OutPath.i = GetPath(blank,DriveName)
  52.         DriveName = GetPathName(OutPath.i)
  53.         Name = GetFileName(OutPath.i)
  54.         if Name = "" then do
  55.             Address CT_1 OK_TEXT " OK "
  56.             Title = "You Must Enter A Valid Name For Frames!"
  57.             Address CT_1 FYINT Title
  58.             call Switcher(TOWB)
  59.             Address CT_1 Abort
  60.             Address CT_1 Quit
  61.             exit
  62.             end
  63.         Address CT_1 GetScriptFileName i-1
  64.         FileName = result
  65.         Address CT_1 GetClipLength FileName
  66.         End = result
  67.         Address CT_1 StartNum "0"
  68.         Address CT_1 EndNum End
  69.         Address CT_1 CurrentNum "0"
  70.         Address CT_1 GetTimeNT "Select A Range Of Frames To Process!"
  71.         Start.i = word(result,1)
  72.         End.i = word(result,2)
  73.         end
  74.     if OutPath.1 = "" then do
  75.         Address CT_1 OK_TEXT " OK "
  76.         Title = "You Must Enter A Valid Path For Frames!"
  77.         Address CT_1 FYINT Title
  78.         call Switcher(TOWB)
  79.         Address CT_1 Abort
  80.         Address CT_1 Quit
  81.         exit
  82.         end
  83.     call open TempFile,"RAM:CT-CTFS",W
  84.     do i = 1 to TotalNum
  85.         call writeln TempFile,OutPath.i
  86.         call writeln TempFile,Start.i
  87.         call writeln TempFile,End.i
  88.         end
  89.     call close TempFile
  90.     end
  91. else do
  92.     call open TempFile,"RAM:CT-CTFS",R
  93.     do i = 1 to TotalNum
  94.         line = readln(TempFile)
  95.         parse var line OutPath.i
  96.         OutPath.i = strip(OutPath.i)
  97.         line = readln(TempFile)
  98.         parse var line Start.i
  99.         line = readln(TempFile)
  100.         parse var line End.i
  101.         end
  102.     call close TempFile
  103.     end
  104.  
  105. call Routine
  106.  
  107. exit
  108.  
  109.  
  110.  
  111. GetFileName: procedure  
  112.    ARG CompleteName
  113.    c = lastpos("/",CompleteName)
  114.    if c = 0 then c = lastpos(":",CompleteName)
  115.    return substr(CompleteName, c + 1)
  116.  
  117.  
  118. GetPathName: procedure  
  119.    ARG CompleteName
  120.    c = lastpos("/",CompleteName)
  121.    if c = 0 then c = lastpos(":",CompleteName)
  122.    return left(CompleteName,c)
  123.  
  124. GetPath:
  125.     parse Arg Title, Path
  126.     Address CT_1 SetString Path
  127.     Address CT_1 GetFileNameNT Title
  128. return result
  129.  
  130.  
  131.  
  132. Routine:
  133.     address "IMAGEFX.1"
  134.     Address CT_1 StartNum Start.FileNum
  135.     Address CT_1 EndNum End.FileNum
  136.     Redraw On
  137.     Answer = OutPath.FileNum
  138.     do i = Start.FileNum to End.FileNum
  139.         call addlib('PROJECT_REXX_PORT' , 0)
  140.         call addlib(TOASTERLIB,0)
  141.         OutName = GetFileName(InFile)
  142.         call Switcher(MDV1)
  143.         if i = Start.FileNum & FileNum = 1 then do
  144.  
  145.             call Switcher(TOWB)
  146.                 ScreenToFront
  147.  
  148.             RequestResponse "This Will Use Your Current Render Mode To Create Animation!"
  149.             if rc ~= 0 then do
  150.                 RequestNotify "You Must Abort Script & Select Correct Render Mode!"
  151.                 Address CT_1 Abort
  152.                 Address CT_1 Quit
  153.                 exit
  154.                 end
  155.  
  156.             NewNum = (i*2) + 1
  157.             LoadBuffer InFile Force NewNum
  158.             Undo Off
  159.  
  160.             RenderPalette 
  161.             LockRange 8 Lock
  162.  
  163.             Last = (End.FileNum+1-Start.FileNum)*2
  164.             call SubRoutine(0,Last)
  165.             Redraw Off
  166.             call Switcher(TOSW)
  167.             Address CT_1 UpDate_Loop i
  168.             if result = 0 then do
  169.                 call Switcher(TOWB)
  170.                 Address CT_1 Abort
  171.                 Address CT_1 Quit
  172.                 end
  173.  
  174.             Address CT_1 OpenMessageNT "Image FX Is Now Processing Frame #"1
  175.             Render Go
  176.             SaveRenderedAs ANIM '"'Answer'"' Append 
  177.  
  178.             Address CT_1 CloseMessageNT
  179.  
  180.             NewNum2 = (i*2) + 2
  181.  
  182.             Address CT_1 OpenMessageNT "Image FX Is Now Processing Frame #"2
  183.             Address CT_1 UpDate_Loop i
  184.             if result = 0 then do
  185.                 call Switcher(TOWB)
  186.                 Address CT_1 Abort
  187.                 Address CT_1 Quit
  188.                 end
  189.             LoadBuffer InFile Force NewNum2
  190.  
  191.             Last = (End.FileNum+1-Start.FileNum)*2
  192.             call SubRoutine(2,Last)
  193.             Render Go
  194.             SaveRenderedAs ANIM '"'Answer'"' Append 
  195.             Address CT_1 UpDate_Loop i
  196.             if result = 0 then do
  197.                 call Switcher(TOWB)
  198.                 Address CT_1 Abort
  199.                 Address CT_1 Quit
  200.                 end
  201.  
  202.             Address CT_1 CloseMessageNT
  203.  
  204.             end
  205.         else do
  206.             NewNum = (i*2) + 1
  207.             NewNum2 = (i*2) + 2
  208.             LoadBuffer InFile Force NewNum
  209.             Address CT_1 UpDate_Loop i
  210.             if result = 0 then do
  211.                 call Switcher(TOWB)
  212.                 Address CT_1 Abort
  213.                 Address CT_1 Quit
  214.                 end
  215.             Last = (End.FileNum+1-Start.FileNum)*2
  216.             First = NewNum-(Start.FileNum*2)
  217.             NewName = OutPath.FileNum""right(First,3,"0")
  218.             if i > 999 then
  219.                 NewName = OutPath.FileNum""right(First,4,"0")
  220.             if i > 9999 then
  221.                 NewName = OutPath.FileNum""right(First,5,"0")
  222.  
  223.             Address CT_1 OpenMessageNT "Image FX Is Now Processing Frame #"First
  224.             call SubRoutine(First,Last)
  225.             Render Go
  226.             SaveRenderedAs ANIM '"'Answer'"' Append 
  227.  
  228.             Address CT_1 CloseMessageNT
  229.             Address CT_1 UpDate_Loop i
  230.             if result = 0 then do
  231.                 call Switcher(TOWB)
  232.                 Address CT_1 Abort
  233.                 Address CT_1 Quit
  234.                 end
  235.             LoadBuffer InFile Force NewNum2
  236.             Address CT_1 UpDate_Loop i
  237.             if result = 0 then do
  238.                 call Switcher(TOWB)
  239.                 Address CT_1 Abort
  240.                 Address CT_1 Quit
  241.                 end
  242.             Last = (End.FileNum+1-Start.FileNum)*2
  243.             First = NewNum2-(Start.FileNum*2)
  244.  
  245.             NewName = OutPath.FileNum""right(First,3,"0")
  246.             if i > 999 then
  247.                 NewName = OutPath.FileNum""right(First,4,"0")
  248.             if i > 9999 then
  249.                 NewName = OutPath.FileNum""right(First,5,"0")
  250.  
  251.             Address CT_1 OpenMessageNT "Image FX Is Now Processing Frame #"First
  252.             call SubRoutine(First,Last)
  253.             Render Go
  254.             SaveRenderedAs ANIM '"'Answer'"' Append 
  255.  
  256.             Address CT_1 CloseMessageNT
  257.  
  258.             Address CT_1 UpDate_Loop i
  259.             if result = 0 then do
  260.                 call Switcher(TOWB)
  261.                 Address CT_1 Abort
  262.                 Address CT_1 Quit
  263.                 end
  264.  
  265.             end
  266.         if i = End.FileNum then do
  267.             Undo On
  268.             Redraw On
  269.             end
  270.     end
  271.  
  272.     LockRange 8 UnLock
  273.     Address CT_1 UpDate
  274.     if FileNum = TotalNum then do
  275.         call Switcher(TOWB)
  276.         end
  277.     Address CT_1 Quit
  278. return
  279.  
  280.  
  281. Locate_ImageFX:
  282.     if (POS('IMAGEFX.1',SHOW('Ports')) = 0)
  283.     then do
  284.         Address CT_1 FYI "Image FX MUST Be Running First!"
  285.         Address CT_1 Abort
  286.         Address CT_1 Quit
  287.         exit
  288.     end
  289. return
  290.  
  291.  
  292.  
  293. SubRoutine:
  294.     parse Arg Num,TotalNum
  295.     call open TempFile,"Ram:CT-LIST",R
  296.     do until eof(TempFile)
  297.         DoIt = readln(TempFile)
  298.         if DoIt ~= "" then
  299.             address command "SYS:rexxc/rx >NIL: "DoIt" "Num" "TotalNum
  300.         end
  301.     call close TempFile
  302. return
  303.  
  304. FindDrive:
  305.     address command "C:Info >RAM:CT-List"
  306.     call open TempFile,"RAM:CT-List",R
  307.     do until eof(TempFile)
  308.         line = readln(TempFile)
  309.         parse var line Drive" "Rest
  310.         if Drive = "FA0:" then 
  311.             Volume = word(Rest,7)":"
  312.     end
  313.     call close TempFile
  314. return Volume
  315.  
  316. FindTemp:
  317.     call open TempFile,"RAM:CT-Dir",R
  318.     TempPath = readln(TempFile)
  319.     call close TempFile
  320. return TempPath
  321.  
  322. syntax:
  323. error:
  324.  
  325.     if SIGL = 148 then
  326.         RequestNotify "You Must Abort Script & Select Correct Render Mode!"
  327.     Address CT_1 CloseMessageNT
  328.     call Switcher(TOSW)
  329.     Address CT_1 OK_TEXT " OK "
  330.     Title = "An Error Was Found With This Script On Line #"SIGL"!"
  331.     if SIGL ~= 148 then
  332.         Address CT_1 FYINT Title
  333.     Address CT_1 Abort
  334.     Address CT_1 Quit
  335. exit
  336.  
  337.