Warning, file /graphics/glaxnimate/src/core/model/animation_container.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #include "animation_container.hpp" 0008 #include "model/factory.hpp" 0009 #include "model/document.hpp" 0010 0011 GLAXNIMATE_OBJECT_IMPL(glaxnimate::model::AnimationContainer) 0012 0013 bool glaxnimate::model::AnimationContainer::time_visible(glaxnimate::model::FrameTime time) const 0014 { 0015 return first_frame.get() <= time && time < last_frame.get(); 0016 } 0017 0018 bool glaxnimate::model::AnimationContainer::time_visible() const 0019 { 0020 return time_visible(time()); 0021 } 0022 0023 void glaxnimate::model::AnimationContainer::set_time(glaxnimate::model::FrameTime t) 0024 { 0025 bool old_visible = time_visible(); 0026 Object::set_time(t); 0027 bool new_visible = time_visible(); 0028 if ( old_visible != new_visible ) 0029 { 0030 Q_EMIT time_visible_changed(new_visible); 0031 Q_EMIT document()->graphics_invalidated(); 0032 } 0033 } 0034 0035 void glaxnimate::model::AnimationContainer::on_first_frame_changed(float x) 0036 { 0037 Q_EMIT time_visible_changed(time_visible()); 0038 Q_EMIT first_frame_changed(x); 0039 } 0040 0041 void glaxnimate::model::AnimationContainer::on_last_frame_changed(float x) 0042 { 0043 Q_EMIT time_visible_changed(time_visible()); 0044 Q_EMIT last_frame_changed(x); 0045 } 0046 0047 float glaxnimate::model::AnimationContainer::duration() const 0048 { 0049 return last_frame.get() - first_frame.get(); 0050 } 0051 0052 QString glaxnimate::model::AnimationContainer::type_name_human() const 0053 { 0054 return i18n("Animation Timing"); 0055 } 0056 0057 void glaxnimate::model::AnimationContainer::stretch_time(qreal multiplier) 0058 { 0059 Object::stretch_time(multiplier); 0060 first_frame.set(first_frame.get() * multiplier); 0061 last_frame.set(last_frame.get() * multiplier); 0062 } 0063 0064 0065 bool glaxnimate::model::AnimationContainer::validate_first_frame(int f) const 0066 { 0067 return f >= 0 && (last_frame.get() == -1 || f < last_frame.get()); 0068 } 0069 0070 bool glaxnimate::model::AnimationContainer::validate_last_frame(int f) const 0071 { 0072 return f >= 0 && f > first_frame.get(); 0073 }