File indexing completed on 2025-02-02 04:10:05

0001 # SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best>
0002 # SPDX-License-Identifier: GPL-3.0-or-later
0003 def main(window, document, settings):
0004     dialog = window.create_dialog("create_frames.ui")
0005 
0006     if not dialog:
0007         return
0008 
0009     dialog.set_value("spin_first", "minimum", document.main.animation.first_frame)
0010     dialog.set_value("spin_first", "maximum", document.main.animation.last_frame)
0011 
0012     dialog.set_value("spin_last", "minimum", document.main.animation.first_frame)
0013     dialog.set_value("spin_last", "maximum", document.main.animation.last_frame)
0014 
0015     dialog.set_value("spin_first", "value", document.main.animation.first_frame)
0016     dialog.set_value("spin_last", "value", document.main.animation.last_frame)
0017 
0018     initial = (document.main.animation.last_frame - document.main.animation.first_frame) / document.main.fps * 24
0019     dialog.set_value("spin_count", "value", int(initial))
0020 
0021     if dialog.exec():
0022         first = dialog.get_value("spin_first", "value")
0023         last = dialog.get_value("spin_last", "value")
0024         count = dialog.get_value("spin_count", "value")
0025 
0026         if first == last:
0027             return
0028 
0029         if first > last:
0030             (last, first) = (first, last)
0031 
0032         duration = (last - first) / count
0033         with document.macro("Create frame layers"):
0034             for i in range(count):
0035                 layer = window.current_composition.add_shape("Layer")
0036                 layer.name = "Frame %s" % i
0037                 layer.animation.first_frame = duration * i
0038                 layer.animation.last_frame = duration * (i+1)