home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / EDG-CT1.DMS / in.adf / CT.run / Scripts / 5 / Clips / Frames / ClipToTIFF < prev   
Encoding:
Text File  |  1995-09-12  |  7.7 KB  |  334 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 TIFF
  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 TIFF 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 = "TIFF"
  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.             Gadget.1 = 'Save With LZW Compression?'
  148.             Gadget.2 = 'YES'
  149.             Gadget.3 = 'NO'
  150.             ListRequest 3 Gadget
  151.             Answer = "NoCompress"
  152.             if result = 2 then Answer = "LZW"
  153.             call open TempFile,"Ram:CT-IFITTF",W
  154.             call writeln TempFile,Answer
  155.             call close TempFile
  156.  
  157.             Last = (End.FileNum+1-Start.FileNum)*2
  158.             call SubRoutine(0,Last)
  159.             Redraw Off
  160.             call Switcher(TOSW)
  161.             Address CT_1 UpDate_Loop i
  162.             if result = 0 then do
  163.                 call Switcher(TOWB)
  164.                 Address CT_1 Abort
  165.                 Address CT_1 Quit
  166.                 end
  167.  
  168.             Address CT_1 OpenMessageNT "Image FX Is Now Processing Frame #"1
  169.             NewName = OutPath.FileNum"001"
  170.             SaveBufferAs Format NewName Answer
  171.  
  172.             Address CT_1 CloseMessageNT
  173.  
  174.             NewNum2 = (i*2) + 2
  175.  
  176.             Address CT_1 OpenMessageNT "Image FX Is Now Processing Frame #"2
  177.             Address CT_1 UpDate_Loop i
  178.             if result = 0 then do
  179.                 call Switcher(TOWB)
  180.                 Address CT_1 Abort
  181.                 Address CT_1 Quit
  182.                 end
  183.             LoadBuffer InFile Force NewNum2
  184.             Address CT_1 UpDate_Loop i
  185.             if result = 0 then do
  186.                 call Switcher(TOWB)
  187.                 Address CT_1 Abort
  188.                 Address CT_1 Quit
  189.                 end
  190.  
  191.             Last = (End.FileNum+1-Start.FileNum)*2
  192.             call SubRoutine(2,Last)
  193.             NewName = OutPath.FileNum"002"
  194.             SaveBufferAs Format NewName Answer
  195.  
  196.             Address CT_1 CloseMessageNT
  197.             Address CT_1 UpDate_Loop i
  198.             if result = 0 then do
  199.                 call Switcher(TOWB)
  200.                 Address CT_1 Abort
  201.                 Address CT_1 Quit
  202.                 end
  203.  
  204.             end
  205.         else do
  206.  
  207.             call open TempFile,"Ram:CT-IFITTF",R
  208.             line = readln(TempFile)
  209.             parse var line Answer
  210.             call close TempFile
  211.             NewNum = (i*2) + 1
  212.             NewNum2 = (i*2) + 2
  213.             LoadBuffer InFile Force NewNum
  214.             Address CT_1 UpDate_Loop i
  215.             if result = 0 then do
  216.                 call Switcher(TOWB)
  217.                 Address CT_1 Abort
  218.                 Address CT_1 Quit
  219.                 end
  220.             Last = (End.FileNum+1-Start.FileNum)*2
  221.             First = NewNum-(Start.FileNum*2)
  222.             NewName = OutPath.FileNum""right(First,3,"0")
  223.             if i > 999 then
  224.                 NewName = OutPath.FileNum""right(First,4,"0")
  225.             if i > 9999 then
  226.                 NewName = OutPath.FileNum""right(First,5,"0")
  227.  
  228.             Address CT_1 OpenMessageNT "Image FX Is Now Processing Frame #"First
  229.             call SubRoutine(First,Last)
  230.             SaveBufferAs Format NewName Answer
  231.  
  232.             Address CT_1 CloseMessageNT
  233.             Address CT_1 UpDate_Loop i
  234.             if result = 0 then do
  235.                 call Switcher(TOWB)
  236.                 Address CT_1 Abort
  237.                 Address CT_1 Quit
  238.                 end
  239.             LoadBuffer InFile Force NewNum2
  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.             Last = (End.FileNum+1-Start.FileNum)*2
  247.             First = NewNum2-(Start.FileNum*2)
  248.  
  249.             NewName = OutPath.FileNum""right(First,3,"0")
  250.             if i > 999 then
  251.                 NewName = OutPath.FileNum""right(First,4,"0")
  252.             if i > 9999 then
  253.                 NewName = OutPath.FileNum""right(First,5,"0")
  254.  
  255.             Address CT_1 OpenMessageNT "Image FX Is Now Processing Frame #"First
  256.             call SubRoutine(First,Last)
  257.             SaveBufferAs Format NewName Answer
  258.  
  259.             Address CT_1 CloseMessageNT
  260.             Address CT_1 UpDate_Loop i
  261.             if result = 0 then do
  262.                 call Switcher(TOWB)
  263.                 Address CT_1 Abort
  264.                 Address CT_1 Quit
  265.                 end
  266.  
  267.             end
  268.         if i = End.FileNum then do
  269.             Undo On
  270.             Redraw On
  271.             end
  272.     end
  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.     Address CT_1 CloseMessageNT
  326.     call Switcher(TOSW)
  327.     Address CT_1 OK_TEXT " OK "
  328.     Title = "An Error Was Found With This Script On Line #"SIGL"!"
  329.     Address CT_1 FYINT Title
  330.     Address CT_1 Abort
  331.     Address CT_1 Quit
  332. exit
  333.  
  334.