## Animate / ApplyRange

`Animate` (clip, int start_frame, int end_frame, string filtername, start_args, end_args)
`ApplyRange` (clip, int start_frame, int end_frame, string filtername, args)

`Animate` è un meta-filtro che determina i propri parametri filter variando continuamente gli argomenti. Al frame start_frame e precedenti, filter e' valorizzato con gli argumenti dati come start_args. Al frame end_frame e successivi, filter e' valorizzato con gli argumenti dati come end_args. Nel mezzo, gli argumenti sonointerpolati linearmente per una transizione dolce.

`ApplyRange` e' un caso speciale di `Animate` dove start_args = end_args, ed e' presente dalla v2.51. Puņ essere usato quando si vuole applicare un certo filtro ad un intervallo di frames. Altra differenza rispetto ad `Animate` č che args NON puņ contenere una clip. A partire dalla v2.53 supporta l'audio, e start_frame puņ essere uguale a end_frame (in modo tale che venga elaborato UN SOLO frame).

ll filtro deve essere compreso fra "virgolette" (si tratta di una stringa), e le due liste di argomenti non sono racchiuse fra parentesi. Le stringhe ed i clips video non possono essere interpolate, e quindi devono essere identiche nelle due liste di argomenti. Con questo filtro non si possono usare notazioni OOP (Object Oriented Programming) o `last` impliciti , anche se il filtro indicato come argumento filtername normalmente lo consentirebbe.

Il filtro non gestisce correttamente la traccia audio, sicché non ne consiglio l'uso con filtri che modificano la traccia audio. E per l'amor di Dio fate in modo che i parametri iniziali e finali non producano dimensioni del frame diverse.

Gli argumenti filtername possono essere anche `Animate` stesso se si desidera una interpolazione quadratica anzichè lineare,ma non sto a pensarci troppo : potrebbe scoppiarmi il cervello.

    # Come produrre una scrolling version del video  "Version" :
    ver = Version()
    return Animate(0,149,"Crop", ver,0,0,64,32, ver,316,0,64,32)

    # analogamente:
    ver = Version()
    return Animate(ver,0,149,"Crop", 0,0,64,32, 316,0,64,32)

    # Fade al bianco
    AviSource("E:\pdwork\DO-Heaven.AVI")
    Animate(100,200,"Levels", 0,1,255,0,255, 0,1,255,255,255)

    # Produrre uno zoom graduale nel centro di un video 320x240 , partendo con ingrandimento
    # 1:1 al frame 100 e terminando con un ingrandimento 4:1
    # al frame 200
    clip = AviSource("E:\pdwork\DO-Heaven.AVI")
    Animate(100,200,"BicubicResize",clip,320,240,0,0,320,240, clip,320,240,120,90,80,60)

    # Zoomare "Hello, World!" al centro di un video 320x240
    Animate(0,48,"Subtitle", last,"Hello, World!",160,120,0,99999,"Arial",0,
      \  last,"Hello, World!",25,130,0,99999,"Arial",48)

    ver = Version()
    return ver.ApplyRange(0,149,"Crop", 158,0,64,32)

    AviSource("E:\pdwork\DO-Heaven.AVI").BicubicResize(320,240)
    ApplyRange(0,48,"Subtitle", "Hello, World!",25,130,0,99999,"Arial",48)

    #oppure:
    clip = AviSource("E:\pdwork\DO-Heaven.AVI").BicubicResize(320,240)
    ApplyRange(clip, 0,48,"Subtitle", "Hello, World!",25,130,0,99999,"Arial",48)

`$Date: 2004/09/01 19:35:34 $`