home *** CD-ROM | disk | FTP | other *** search
- /*
- Control Tower Arexx Script
- Written By J.L. White
- (C)1995 Merlin's Software
- Lines=8
- 01=Clip To IFF
- 02=
- 03=This script will take Flyer Clips and
- 04=split them into individual frames, load
- 05=each into Image FX, then record whatever
- 06=options the user selects and process all
- 07=the selections on each frame then save
- 08=them out as IFF Images.
-
- */
-
- parse arg InFile FileNum TotalNum FrameRepeat WhichScript TotalScript Times Select
- signal on error
- signal on syntax
- options results
- TOASTERLIB="ToasterARexx.port"
- call remlib(TOASTERLIB)
- call remlib('PROJECT_REXX_PORT')
- call addlib('PROJECT_REXX_PORT' , 0)
- call addlib(TOASTERLIB,0)
-
- Format = "ILBM"
- InFile = Translate(InFile," ","ยค")
- InFile = strip(InFile)
- DriveName = "RAM:"
- TempDir = FindTemp()
- TempDirFile = TempDir"CT-Temp"
- if FileNum = 1 & WhichScript = 1 then do
- call Locate_ImageFX
- TOASTERLIB="ToasterARexx.port"
- call remlib(TOASTERLIB)
- call remlib('PROJECT_REXX_PORT')
- call addlib('PROJECT_REXX_PORT' , 0)
- call addlib(TOASTERLIB,0)
- Address CT_1 SetString "CT:Scripts2/5/"
- Address CT_1 GetMultiName "Select Options (Hold Shift Key Down For Multiple Process!) "
-
- call Switcher(TOSW)
- call Switcher(PDV1)
- call Switcher(PDV2)
- do i = 1 to TotalNum
- blank = "Select Path & BaseName For Frames From Clip #"i"! "
- OutPath.i = GetPath(blank,DriveName)
- DriveName = GetPathName(OutPath.i)
- Name = GetFileName(OutPath.i)
- if Name = "" then do
- Address CT_1 OK_TEXT " OK "
- Title = "You Must Enter A Valid Name For Frames!"
- Address CT_1 FYINT Title
- call Switcher(TOWB)
- Address CT_1 Abort
- Address CT_1 Quit
- exit
- end
- Address CT_1 GetScriptFileName i-1
- FileName = result
- Address CT_1 GetClipLength FileName
- End = result
- Address CT_1 StartNum "0"
- Address CT_1 EndNum End
- Address CT_1 CurrentNum "0"
- Address CT_1 GetTimeNT "Select A Range Of Frames To Process!"
- Start.i = word(result,1)
- End.i = word(result,2)
- end
- if OutPath.1 = "" then do
- Address CT_1 OK_TEXT " OK "
- Title = "You Must Enter A Valid Path For Frames!"
- Address CT_1 FYINT Title
- call Switcher(TOWB)
- Address CT_1 Abort
- Address CT_1 Quit
- exit
- end
- call open TempFile,"RAM:CT-CTFS",W
- do i = 1 to TotalNum
- call writeln TempFile,OutPath.i
- call writeln TempFile,Start.i
- call writeln TempFile,End.i
- end
- call close TempFile
- end
- else do
- call open TempFile,"RAM:CT-CTFS",R
- do i = 1 to TotalNum
- line = readln(TempFile)
- parse var line OutPath.i
- OutPath.i = strip(OutPath.i)
- line = readln(TempFile)
- parse var line Start.i
- line = readln(TempFile)
- parse var line End.i
- end
- call close TempFile
- end
-
- call Routine
-
- exit
-
-
-
- GetFileName: procedure
- ARG CompleteName
- c = lastpos("/",CompleteName)
- if c = 0 then c = lastpos(":",CompleteName)
- return substr(CompleteName, c + 1)
-
-
- GetPathName: procedure
- ARG CompleteName
- c = lastpos("/",CompleteName)
- if c = 0 then c = lastpos(":",CompleteName)
- return left(CompleteName,c)
-
- GetPath:
- parse Arg Title, Path
- Address CT_1 SetString Path
- Address CT_1 GetFileNameNT Title
- return result
-
-
-
- Routine:
- address "IMAGEFX.1"
- Address CT_1 StartNum Start.FileNum
- Address CT_1 EndNum End.FileNum
- Redraw On
- do i = Start.FileNum to End.FileNum
- call addlib('PROJECT_REXX_PORT' , 0)
- call addlib(TOASTERLIB,0)
- OutName = GetFileName(InFile)
- NewName = OutPath.FileNum
- call Switcher(MDV1)
- if i = Start.FileNum & FileNum = 1 then do
-
- call Switcher(TOWB)
- ScreenToFront
- NewNum = (i*2) + 1
- LoadBuffer InFile Force NewNum
- Undo Off
-
- Last = (End.FileNum+1-Start.FileNum)*2
- call SubRoutine(0,Last)
- Redraw Off
- call Switcher(TOSW)
- Address CT_1 UpDate_Loop i
- if result = 0 then do
- call Switcher(TOWB)
- Address CT_1 Abort
- Address CT_1 Quit
- end
-
- Address CT_1 OpenMessageNT "Image FX Is Now Processing Frame #"1
- NewName = OutPath.FileNum"001"
- SaveBufferAs Format NewName
-
- Address CT_1 CloseMessageNT
-
- NewNum2 = (i*2) + 2
-
- Address CT_1 OpenMessageNT "Image FX Is Now Processing Frame #"2
- Address CT_1 UpDate_Loop i
- if result = 0 then do
- call Switcher(TOWB)
- Address CT_1 Abort
- Address CT_1 Quit
- end
- LoadBuffer InFile Force NewNum2
-
- Last = (End.FileNum+1-Start.FileNum)*2
- call SubRoutine(2,Last)
- NewName = OutPath.FileNum"002"
- SaveBufferAs Format NewName
- Address CT_1 UpDate_Loop i
- if result = 0 then do
- call Switcher(TOWB)
- Address CT_1 Abort
- Address CT_1 Quit
- end
-
- Address CT_1 CloseMessageNT
-
- end
- else do
- NewNum = (i*2) + 1
- NewNum2 = (i*2) + 2
- LoadBuffer InFile Force NewNum
- Address CT_1 UpDate_Loop i
- if result = 0 then do
- call Switcher(TOWB)
- Address CT_1 Abort
- Address CT_1 Quit
- end
- Last = (End.FileNum+1-Start.FileNum)*2
- First = NewNum-(Start.FileNum*2)
- NewName = OutPath.FileNum""right(First,3,"0")
- if i > 999 then
- NewName = OutPath.FileNum""right(First,4,"0")
- if i > 9999 then
- NewName = OutPath.FileNum""right(First,5,"0")
-
- Address CT_1 OpenMessageNT "Image FX Is Now Processing Frame #"First
- call SubRoutine(First,Last)
- SaveBufferAs Format NewName
-
- Address CT_1 CloseMessageNT
- Address CT_1 UpDate_Loop i
- if result = 0 then do
- call Switcher(TOWB)
- Address CT_1 Abort
- Address CT_1 Quit
- end
- LoadBuffer InFile Force NewNum2
- Address CT_1 UpDate_Loop i
- if result = 0 then do
- call Switcher(TOWB)
- Address CT_1 Abort
- Address CT_1 Quit
- end
- Last = (End.FileNum+1-Start.FileNum)*2
- First = NewNum2-(Start.FileNum*2)
-
- NewName = OutPath.FileNum""right(First,3,"0")
- if i > 999 then
- NewName = OutPath.FileNum""right(First,4,"0")
- if i > 9999 then
- NewName = OutPath.FileNum""right(First,5,"0")
-
- Address CT_1 OpenMessageNT "Image FX Is Now Processing Frame #"First
- call SubRoutine(First,Last)
- SaveBufferAs Format NewName
- Address CT_1 CloseMessageNT
-
- Address CT_1 UpDate_Loop i
- if result = 0 then do
- call Switcher(TOWB)
- Address CT_1 Abort
- Address CT_1 Quit
- end
-
- end
- if i = End.FileNum then do
- Undo On
- Redraw On
- end
- end
- Address CT_1 UpDate
- if FileNum = TotalNum then do
- call Switcher(TOWB)
- end
- Address CT_1 Quit
- return
-
-
- Locate_ImageFX:
- if (POS('IMAGEFX.1',SHOW('Ports')) = 0)
- then do
- Address CT_1 FYI "Image FX MUST Be Running First!"
- Address CT_1 Abort
- Address CT_1 Quit
- exit
- end
- return
-
-
-
- SubRoutine:
- parse Arg Num,TotalNum
- call open TempFile,"Ram:CT-LIST",R
- do until eof(TempFile)
- DoIt = readln(TempFile)
- if DoIt ~= "" then
- address command "SYS:rexxc/rx >NIL: "DoIt" "Num" "TotalNum
- end
- call close TempFile
- return
-
- FindDrive:
- address command "C:Info >RAM:CT-List"
- call open TempFile,"RAM:CT-List",R
- do until eof(TempFile)
- line = readln(TempFile)
- parse var line Drive" "Rest
- if Drive = "FA0:" then
- Volume = word(Rest,7)":"
- end
- call close TempFile
- return Volume
-
- FindTemp:
- call open TempFile,"RAM:CT-Dir",R
- TempPath = readln(TempFile)
- call close TempFile
- return TempPath
-
- syntax:
- error:
-
- Address CT_1 CloseMessageNT
- call Switcher(TOSW)
- Address CT_1 OK_TEXT " OK "
- Title = "An Error Was Found With This Script On Line #"SIGL"!"
- Address CT_1 FYINT Title
- Address CT_1 Abort
- Address CT_1 Quit
- exit
-
-