NAME
Quiq::TimeLapse::RangeDef - Range-Definitionen
BASE CLASS
SYNOPSIS
# Klasse laden
use %CLASS;
# Instantiiere Range-Defintions-Objekt
$trd = Quiq::TimeLapse::RangeDef->new('/my/timelapse/dir');
# Liste der Clip-Bezeichner
@keys = $trd->clipKeys;
# Hash der Clip-Properties
$h = $trd->clipProperties;
# Liste der Range-Bezeichner
@keys = $trd->rangeKeys;
# Bildfolgen-Ausdruck zu einem Clip- oder Range-Bezeichner
$expr = $trd->expression($key);
DESCRIPTION
Ein Objekt der Klasse kapselt die Definitionen aus einer oder mehrerer range.def-Dateien, die sich innerhalb eines Verzeichnisbaums befinden.
Syntax
Eine range.def-Datei besteht aus Zeilen folgender Art:
Leerzeile (leer oder nur Whitespace)
Kommentar-Zeile (# als erstes non-Whitespace-Zeichen)
Clip-Definitionszeile (beginnt mit "Clip:")
Range-Definitionszeile (KEY EXPR)
Range-Fortsetzungszeile (Zeile mit Whitspace am Anfang, gefolgt von einer Fortsetzung von EXPR)
Leerzeilen und Kommentarzeilen werden überlesen. Ein Kommentar am Ende einer Zeile wird entfernt.
Clip-Definition
Eine Clip-Definition hat den Aufbau:
Clip: KEY PROPERTY=VALUE ...
KEY
ist der Name/Bezeichner des Clip. Die Property-Liste PROPERTY=VALUE ...
ist optional.
Clip-Properties
Folgende Clip-Properties können vereinbart werden:
Dauer des Nachspanns mit dem Ende-Frame in Sekunden. Ein negativer Wert setzt die (Mindest-)Dauer des Clip fest.
Anzahl Bilder pro Sekunde.
Nur jedes N-te Bild ist Teil des Clip.
Die Bildfolge wird umgedreht.
Range-Definition
Eine Range-Definition besteht aus einem Namen/Bezeichner KEY und einem Bildfolgen-Ausdruck EXPR. Diese sind durch Whitspace getrennt. Der Ausdruck EXPR darf sich über mehrere Zeilen erstrecken, wenn die Folgezeilen mit Whitespace eingeleitet werden.
Bildfolgen-Ausdruck
Ein Bildfolgen-Ausdruck EXPR besteht aus 0 oder mehr Teilausdrücken, die mit Whitespace voneinender getrennt sind. Teilausdrücke sind:
N .................. Einzelbild N
N-M ................. Bildnummern-Bereich N bis M
KEY ................. die Bilder des Clip oder Range KEY
all ................. sämtliche Bilder des Zeitraffer-Verzeichnisses
used ................ die Bilder aller Ranges
unused .............. die Bilder, die zu keinem Range gehören
junk ................ Bilder von unused, die per {} ausgesondert sind
duplicate(N,EXPR) ... jedes Bild in EXPR wird N-mal dupliziert
randomize(N,EXPR) ... zufällige Auswahl von N Bildern aus Vorrat EXPR
repeat(N,EXPR) ...... Bildfolge EXPR wird N-mal wiederholt
reverse(EXPR) ....... Bildfolge EXPR wird umgedreht
{EXPR} .............. die Bilder aus EXPR werden als Junk betrachtet
[EXPR] .............. Teilsausdruck EXPR wird nicht berücksichtigt
Betrachten wir all
, used
, unused
, junk
als Mengen, also Bildvorräte ohne Berücksichtigung der Reihenfolge, gilt:
all
ist die Vereinigung vonused
undunused
used
undunused
sind disjunktjunk
ist eine Teilmenge vonunused
EXAMPLE
# Bilder 1 .. 58
Clip: autofahrt framerate=8
strecke1 1-23 {24-30}
strecke2 31-58
METHODS
Konstruktor
new() - Instantiiere Range-Definitions-Objekt
Synopsis
$trd = $class->new($dir);
Arguments
Returns
Referenz auf das Range-Definitions-Objekt oder undef
Description
Instantiiere ein Range-Definitions-Objekt aus den range.def-Dateien in der Verzeichnisstruktur $dir und liefere eine Referenz auf dieses Objekt zurück. Existiert keine range.def Datei, wird kein Objekt instantiiert und undef
geliefert.
Objektmethoden
files() - Liste der Range-Dateien
Synopsis
@files|$fileA = $trd->files;
Returns
Liste von Datei-Pfaden. Im Skalarkontext liefere eine Referenz auf die Liste.
Description
Liefere die Liste der Range-Dateien in sortierter Reihenfolge.
clipKeys() - Liste der Clip-Bezeichner
Synopsis
@keys|$keyA = $trd->clipKeys;
Returns
Liste von Clip-Bezeichnern. Im Skalarkontext liefere eine Referenz auf die Liste.
Description
Liefere die Liste aller Clip-Bezeichner in der Reihenfolge ihrer Definition in der Range-Datei.
clipProperties() - Hash der Clip-Properties
Synopsis
$h = $trd->clipProperties($key);
Returns
Referenz auf Restricted-Hash
Description
Liefere eine Referenz auf den Hash mit den Properties des Clip $key.
rangeKeys() - Liste der Range-Bezeichner
Synopsis
@keys|$keyA = $trd->rangeKeys;
Returns
Liste von Range-Bezeichnern. Im Skalarkontext liefere eine Referenz auf die Liste.
Description
Liefere die Liste aller Range-Bezeichner in der Reihenfolge ihrer Definition in der Range-Datei.
rangeCount() - Anzahl der definierten Ranges
Synopsis
$n = $trd->rangeCount;
Returns
Integer >= 0
Description
Liefere die Anzahl der Range-Bezeichner. Diese Methode kann genutzt werden um festzustellen, ob Ranges definiert sind.
expression() - Bildfolgen-Ausdruck zu Clip- oder Range-Bezeichner
Synopsis
$expr = $trd->expression($key);
Returns
Bildfolgen-Ausdruck (String)
Description
Liefere den Bildfolgen-Ausdruck des Clip- oder Range-Bezeichners $key. Geklammerte Teile sind nicht enthalten (siehe Abschnitt Syntax).
VERSION
1.220
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2024 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.