Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/py-opentimelineio/opentimelineio/schema/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,9 @@
transition
)

# Import Project like this since it's a python class at the moment
from .project import Project

track.TrackKind = TrackKind

def timeline_from_clips(clips):
Expand Down
84 changes: 84 additions & 0 deletions src/py-opentimelineio/opentimelineio/schema/project.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
from .. import core


@core.register_type
class Project(core.SerializableObjectWithMetadata):
_serializable_label = "Project.1"
_name = 'Project'

def __init__(self, name="", viewer_rate=None, viewer_resolution=None,
viewer_lut=None, metadata=None):

core.SerializableObjectWithMetadata.__init__(self, name, metadata)

self.name = name

self.collections = []
self.timelines = []

self.viewer_rate = viewer_rate

if viewer_resolution:
self.viewer_resolution = viewer_resolution

else:
self.viewer_resolution = [None, None]

self.viewer_lut = viewer_lut

if metadata:
self.metadata.update(metadata)

# Example of a quite common meta attribute
self.metadata['OCIO_PATH'] = None

timelines = core.serializable_field(
"timelines",
list,
"collection of timelines"
)

collections = core.serializable_field(
"collections",
list,
"collection of 'bins' or other collectibles"
)

viewer_rate = core.serializable_field(
"viewer_rate",
float,
"viewer playback rate"
)

viewer_resolution = core.serializable_field(
"viewer_resolution",
list,
"viewer resolution"
)

viewer_lut = core.serializable_field(
"viewer_lut",
str,
"viewer LUT"
)

def __repr__(self):
return (
'otio.schema.Project('
'name={}, '
'viewer_rate={}, '
'viewer_resolution={}, '
'viewer_lut={}, '
'collections={}, '
'timelines={}, '
'metadata={}'
')'.format(
repr(self.name),
repr(self.viewer_rate),
repr(self.viewer_resolution),
repr(self.viewer_lut),
repr(self.collections),
repr(self.timelines),
repr(self.metadata),
)
)