NAME

Quiq::TimeLapse::RangeDef - Range-Definitionen

BASE CLASS

Quiq::Hash

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:

endFrames=N

Dauer des Nachspanns mit dem Ende-Frame in Sekunden. Ein negativer Wert setzt die (Mindest-)Dauer des Clip fest.

framerate=N

Anzahl Bilder pro Sekunde.

pick=N

Nur jedes N-te Bild ist Teil des Clip.

reverse=BOOL

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 von used und unused

  • used und unused sind disjunkt

  • junk ist eine Teilmenge von unused

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

$dir

Pfad zu Verzeichnisstruktur

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.