home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / EDG-CT1.DMS / in.adf / CT.run / Scripts / 5 / Clips / Frames / ClipToIFF < prev    next >
Encoding:
Text File  |  1995-10-17  |  7.1 KB  |  314 lines

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