/* Personal Paint Amiga Rexx script - Copyright � 1995-1998 Cloanto Italia srl */ /* $VER: FramesToAnim.pprx 1.3 */ /** ENG This script converts a set of separate image-files into an animation. The files must contain at least one numerical character. The sequence of numerical characters is used as frame counter (e.g.: if "Frame 0001.gif" is selected, this script tries to load it, then "Frame 0002.gif", and so on). */ /** DEU Dieses Skript dient zur Umwandlung einer Reihe von Einzelbildern in eine Animation. Wenn der Stamm des Dateinamens eine oder mehrere aufeinanderfolgende Zahlen enth�lt, werden diese zur Speicherung der Einzelbildnummer verwendet. Beispiel: "Animation_000.pic" wird zu "Animation_001.pic", "Animation_002.pic", usw. Die Nummer des ersten Einzelbilders l��t sich individuell festlegen. */ /** ITA Questo script crea un'animazione partendo da un insieme di file di immagini separate. I file devono contenere almeno un carattere numerico. La sequenza di caratteri numerici viene usata come contatore di fotogrammi (es.: selezionando "Frame 0001.gif", lo script legge questo file, quindi "Frame 0002.gif", e cosi' via). */ IF ARG(1, EXISTS) THEN PARSE ARG PPPORT ELSE PPPORT = 'PPAINT' IF ~SHOW('P', PPPORT) THEN DO IF EXISTS('PPaint:PPaint') THEN DO ADDRESS COMMAND 'Run >NIL: PPaint:PPaint' DO 30 WHILE ~SHOW('P',PPPORT) ADDRESS COMMAND 'Wait >NIL: 1 SEC' END END ELSE DO SAY "Personal Paint could not be loaded." EXIT 10 END END IF ~SHOW('P', PPPORT) THEN DO SAY 'Personal Paint Rexx port could not be opened' EXIT 10 END ADDRESS VALUE PPPORT OPTIONS RESULTS OPTIONS FAILAT 10000 Get 'LANG' IF RESULT = 1 THEN DO /* Deutsch */ txt_req_sel = 'Erstes Bild der Sequenz angeben' txt_err_badname = 'Ung�ltiger Name' txt_err_abort = 'Ladevorgang wurde abgebrochen' txt_err_load = 'Fehler beim Laden: ' txt_err_oldclient = 'F�r dieses Skript_ist eine neuere Version_von Personal Paint erforderlich' END ELSE IF RESULT = 2 THEN DO /* Italiano */ txt_req_sel = 'Selezionare primo fotogramma' txt_err_badname = 'Nome fotogramma non valido' txt_err_abort = 'Operazione annullata' txt_err_load = 'Errore nella lettura: ' txt_err_oldclient = 'Questa procedura richiede_una versione pi� recente_di Personal Paint' END ELSE DO /* English */ txt_req_sel = 'Select First Frame of Sequence' txt_err_badname = 'Invalid frame name' txt_err_abort = 'User abort during load' txt_err_load = 'Error during load: ' txt_err_oldclient = 'This script requires a newer_version of Personal Paint' END Version 'REXX' rexxversion = RESULT IF rexxversion < 7 THEN DO RequestNotify 'PROMPT "'txt_err_oldclient'"' EXIT 10 END IF rexxversion < 4 THEN DO FreeBrush IF RC ~= 0 THEN EXIT RC bshfname = 'T:pprx_bsh.'PRAGMA('ID') IF OPEN(bshfile, bshfname, 'W') THEN DO WRITECH(bshfile, '464F524D 0000002A 494C424D 424D4844 00000014 00010001 00000000 01020100 00001010 028001E0 424F4459 00000002 FF00'X) CALL CLOSE(bshfile) LoadBrush bshfname 'FORCE' END END LockGUI RequestFile '"'txt_req_sel'"' IF RC = 0 THEN DO errcode = 0 ndigits = 0 loadname = RESULT fnpos = MAX(LASTPOS('/', loadname), LASTPOS(':', loadname), 1) npos1 = VERIFY(loadname, '0123456789', 'M', fnpos) IF npos1 > 0 THEN DO ndigits = 1 fnlen = LENGTH(loadname) DO npos = npos1 + 1 TO fnlen IF VERIFY(loadname, '0123456789', 'M', npos) = npos THEN ndigits = ndigits + 1 ELSE LEAVE END END IF ndigits = 0 THEN DO errmess = txt_err_badname errcode = 1000 END ELSE DO name1 = SUBSTR(loadname, 2, npos1 - 2) name2 = SUBSTR(loadname, npos1 + ndigits, fnlen - npos1 - ndigits) fnum = SUBSTR(loadname, npos1, ndigits) DO FOREVER AddFrames /* add one frame */ SetFramePosition 'NEXT' fname = name1 || RIGHT(fnum, ndigits, "0") || name2 LoadImage '"'fname'" FORCE QUIET' IF RC ~= 0 THEN DO IF RC = 5 THEN errmess = txt_err_abort ELSE IF RC ~= 36 THEN errmess = txt_err_load || RC IF RC ~= 36 THEN errcode = RC DeleteFrames /* delete current (unused) frame */ OptimizeAnimation 'QUIET' LEAVE END fnum = fnum + 1 END END IF errcode > 0 THEN RequestNotify 'PROMPT "'errmess'"' END UnlockGUI IF rexxversion < 4 THEN DO FreeBrush 'FORCE' ADDRESS COMMAND 'Delete >NIL: 'bshfname END