- Complete rewrite with beautiful Rich TUI interface - Interactive and CLI modes for flexibility - Robust error handling with clear, helpful messages - Gap filling with linear interpolation support - Coordinate system transforms (pixels/normalized) - Auto-generated output filenames from input - Configurable resolution and Nuke versions - Batch processing support via CLI - Comprehensive documentation in Scripts/README_CONVERTER.md - Updated main README.md with Scripts section
44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
from typing import Iterable, Tuple, TypeVar
|
|
|
|
T = TypeVar("T")
|
|
|
|
|
|
def loop_first(values: Iterable[T]) -> Iterable[Tuple[bool, T]]:
|
|
"""Iterate and generate a tuple with a flag for first value."""
|
|
iter_values = iter(values)
|
|
try:
|
|
value = next(iter_values)
|
|
except StopIteration:
|
|
return
|
|
yield True, value
|
|
for value in iter_values:
|
|
yield False, value
|
|
|
|
|
|
def loop_last(values: Iterable[T]) -> Iterable[Tuple[bool, T]]:
|
|
"""Iterate and generate a tuple with a flag for last value."""
|
|
iter_values = iter(values)
|
|
try:
|
|
previous_value = next(iter_values)
|
|
except StopIteration:
|
|
return
|
|
for value in iter_values:
|
|
yield False, previous_value
|
|
previous_value = value
|
|
yield True, previous_value
|
|
|
|
|
|
def loop_first_last(values: Iterable[T]) -> Iterable[Tuple[bool, bool, T]]:
|
|
"""Iterate and generate a tuple with a flag for first and last value."""
|
|
iter_values = iter(values)
|
|
try:
|
|
previous_value = next(iter_values)
|
|
except StopIteration:
|
|
return
|
|
first = True
|
|
for value in iter_values:
|
|
yield first, False, previous_value
|
|
first = False
|
|
previous_value = value
|
|
yield first, True, previous_value
|