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)