mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 21:32:15 +01:00
72 lines
2 KiB
Python
72 lines
2 KiB
Python
import re
|
|
from opentimelineio.opentime import (
|
|
to_frames, RationalTime, TimeRange)
|
|
|
|
|
|
def otio_range_to_frame_range(otio_range):
|
|
start = to_frames(
|
|
otio_range.start_time, otio_range.start_time.rate)
|
|
end = start + to_frames(
|
|
otio_range.duration, otio_range.duration.rate) - 1
|
|
return start, end
|
|
|
|
|
|
def otio_range_with_handles(otio_range, instance):
|
|
handle_start = instance.data["handleStart"]
|
|
handle_end = instance.data["handleEnd"]
|
|
handles_duration = handle_start + handle_end
|
|
fps = float(otio_range.start_time.rate)
|
|
start = to_frames(otio_range.start_time, fps)
|
|
duration = to_frames(otio_range.duration, fps)
|
|
|
|
return TimeRange(
|
|
start_time=RationalTime((start - handle_start), fps),
|
|
duration=RationalTime((duration + handles_duration), fps)
|
|
)
|
|
|
|
|
|
def is_overlapping_otio_ranges(test_otio_range, main_otio_range, strict=False):
|
|
test_start, test_end = otio_range_to_frame_range(test_otio_range)
|
|
main_start, main_end = otio_range_to_frame_range(main_otio_range)
|
|
covering_exp = bool(
|
|
(test_start <= main_start) and (test_end >= main_end)
|
|
)
|
|
inside_exp = bool(
|
|
(test_start >= main_start) and (test_end <= main_end)
|
|
)
|
|
overlaying_right_exp = bool(
|
|
(test_start <= main_end) and (test_end >= main_end)
|
|
)
|
|
overlaying_left_exp = bool(
|
|
(test_end >= main_start) and (test_start <= main_start)
|
|
)
|
|
|
|
if not strict:
|
|
return any((
|
|
covering_exp,
|
|
inside_exp,
|
|
overlaying_right_exp,
|
|
overlaying_left_exp
|
|
))
|
|
else:
|
|
return covering_exp
|
|
|
|
|
|
def convert_to_padded_path(path, padding):
|
|
"""
|
|
Return correct padding in sequence string
|
|
|
|
Args:
|
|
path (str): path url or simple file name
|
|
padding (int): number of padding
|
|
|
|
Returns:
|
|
type: string with reformated path
|
|
|
|
Example:
|
|
convert_to_padded_path("plate.%d.exr") > plate.%04d.exr
|
|
|
|
"""
|
|
if "%d" in path:
|
|
path = re.sub("%d", "%0{padding}d".format(padding=padding), path)
|
|
return path
|