home *** CD-ROM | disk | FTP | other *** search
- /* 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
-