home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / EDG-CT1.DMS / in.adf / CT.run / Scripts / 5 / Clips / Frames / ClipToFrameStore < prev    next >
Encoding:
Text File  |  1995-09-12  |  7.3 KB  |  320 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 FrameStore
  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 FrameStore 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 = "FrameStore"
  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.             Address CT_1 UpDate_Loop i
  176.             if result = 0 then do
  177.                 call Switcher(TOWB)
  178.                 Address CT_1 Abort
  179.                 Address CT_1 Quit
  180.                 end
  181.  
  182.             Last = (End.FileNum+1-Start.FileNum)*2
  183.             call SubRoutine(2,Last)
  184.             NewName = OutPath.FileNum"002"
  185.             SaveBufferAs Format NewName
  186.  
  187.             Address CT_1 CloseMessageNT
  188.             Address CT_1 UpDate_Loop i
  189.             if result = 0 then do
  190.                 call Switcher(TOWB)
  191.                 Address CT_1 Abort
  192.                 Address CT_1 Quit
  193.                 end
  194.  
  195.             end
  196.         else do
  197.             NewNum = (i*2) + 1
  198.             NewNum2 = (i*2) + 2
  199.             LoadBuffer InFile Force NewNum
  200.             Address CT_1 UpDate_Loop i
  201.             if result = 0 then do
  202.                 call Switcher(TOWB)
  203.                 Address CT_1 Abort
  204.                 Address CT_1 Quit
  205.                 end
  206.             Last = (End.FileNum+1-Start.FileNum)*2
  207.             First = NewNum-(Start.FileNum*2)
  208.             NewName = OutPath.FileNum""right(First,3,"0")
  209.             if i > 999 then
  210.                 NewName = OutPath.FileNum""right(First,4,"0")
  211.             if i > 9999 then
  212.                 NewName = OutPath.FileNum""right(First,5,"0")
  213.  
  214.             Address CT_1 OpenMessageNT "Image FX Is Now Processing Frame #"First
  215.             call SubRoutine(First,Last)
  216.             SaveBufferAs Format NewName
  217.  
  218.             Address CT_1 CloseMessageNT
  219.             Address CT_1 UpDate_Loop i
  220.             if result = 0 then do
  221.                 call Switcher(TOWB)
  222.                 Address CT_1 Abort
  223.                 Address CT_1 Quit
  224.                 end
  225.             LoadBuffer InFile Force NewNum2
  226.             Address CT_1 UpDate_Loop i
  227.             if result = 0 then do
  228.                 call Switcher(TOWB)
  229.                 Address CT_1 Abort
  230.                 Address CT_1 Quit
  231.                 end
  232.             Last = (End.FileNum+1-Start.FileNum)*2
  233.             First = NewNum2-(Start.FileNum*2)
  234.  
  235.             NewName = OutPath.FileNum""right(First,3,"0")
  236.             if i > 999 then
  237.                 NewName = OutPath.FileNum""right(First,4,"0")
  238.             if i > 9999 then
  239.                 NewName = OutPath.FileNum""right(First,5,"0")
  240.  
  241.             Address CT_1 OpenMessageNT "Image FX Is Now Processing Frame #"First
  242.             call SubRoutine(First,Last)
  243.             SaveBufferAs Format NewName
  244.  
  245.             Address CT_1 CloseMessageNT
  246.             Address CT_1 UpDate_Loop i
  247.             if result = 0 then do
  248.                 call Switcher(TOWB)
  249.                 Address CT_1 Abort
  250.                 Address CT_1 Quit
  251.                 end
  252.  
  253.             end
  254.         if i = End.FileNum then do
  255.             Undo On
  256.             Redraw On
  257.             end
  258.     end
  259.     Address CT_1 UpDate
  260.     if FileNum = TotalNum then do
  261.         call Switcher(TOWB)
  262.         end
  263.     Address CT_1 Quit
  264. return
  265.  
  266.  
  267. Locate_ImageFX:
  268.     if (POS('IMAGEFX.1',SHOW('Ports')) = 0)
  269.     then do
  270.         Address CT_1 FYI "Image FX MUST Be Running First!"
  271.         Address CT_1 Abort
  272.         Address CT_1 Quit
  273.         exit
  274.     end
  275. return
  276.  
  277.  
  278.  
  279. SubRoutine:
  280.     parse Arg Num,TotalNum
  281.     call open TempFile,"Ram:CT-LIST",R
  282.     do until eof(TempFile)
  283.         DoIt = readln(TempFile)
  284.         if DoIt ~= "" then
  285.             address command "SYS:rexxc/rx >NIL: "DoIt" "Num" "TotalNum
  286.         end
  287.     call close TempFile
  288. return
  289.  
  290. FindDrive:
  291.     address command "C:Info >RAM:CT-List"
  292.     call open TempFile,"RAM:CT-List",R
  293.     do until eof(TempFile)
  294.         line = readln(TempFile)
  295.         parse var line Drive" "Rest
  296.         if Drive = "FA0:" then 
  297.             Volume = word(Rest,7)":"
  298.     end
  299.     call close TempFile
  300. return Volume
  301.  
  302. FindTemp:
  303.     call open TempFile,"RAM:CT-Dir",R
  304.     TempPath = readln(TempFile)
  305.     call close TempFile
  306. return TempPath
  307.  
  308. syntax:
  309. error:
  310.  
  311.     Address CT_1 CloseMessageNT
  312.     call Switcher(TOSW)
  313.     Address CT_1 OK_TEXT " OK "
  314.     Title = "An Error Was Found With This Script On Line #"SIGL"!"
  315.     Address CT_1 FYINT Title
  316.     Address CT_1 Abort
  317.     Address CT_1 Quit
  318. exit
  319.  
  320.