1/* 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15#include <meta/base/namespace.h> 16#include <meta/interface/animation/builtin_animations.h> 17#include <meta/interface/intf_object.h> 18#include <meta/interface/intf_object_registry.h> 19 20#include "animation/animation_controller.h" 21#include "animation/interpolator.h" 22#include "animation/keyframe_animation.h" 23#include "animation/modifiers/loop.h" 24#include "animation/modifiers/reverse.h" 25#include "animation/modifiers/speed.h" 26#include "animation/parallel_animation.h" 27#include "animation/property_animation.h" 28#include "animation/sequential_animation.h" 29#include "animation/track_animation.h" 30#include "curves/bezier_curve.h" 31#include "curves/easing_curve.h" 32 33META_BEGIN_NAMESPACE() 34 35namespace Internal { 36 37#define DECL_NO(A, B) { ObjectTypeInfo::UID }, ClassId::A, (B) 38#define DECL_AN(A, B) { ObjectTypeInfo::UID }, ClassId::A, (B) 39 40static constexpr ObjectTypeInfo OBJECTS[] = { 41 AnimationController::OBJECT_INFO, 42 KeyframeAnimation::OBJECT_INFO, 43 PropertyAnimation::OBJECT_INFO, 44 TrackAnimation::OBJECT_INFO, 45 ParallelAnimation::OBJECT_INFO, 46 SequentialAnimation::OBJECT_INFO, 47 AnimationModifiers::Loop::OBJECT_INFO, 48 AnimationModifiers::Reverse::OBJECT_INFO, 49 AnimationModifiers::SpeedImpl::OBJECT_INFO, 50 51 Curves::Easing::LinearEasingCurve::OBJECT_INFO, 52 Curves::Easing::InQuadEasingCurve::OBJECT_INFO, 53 Curves::Easing::OutQuadEasingCurve::OBJECT_INFO, 54 Curves::Easing::InOutQuadEasingCurve::OBJECT_INFO, 55 Curves::Easing::InCubicEasingCurve::OBJECT_INFO, 56 Curves::Easing::OutCubicEasingCurve::OBJECT_INFO, 57 Curves::Easing::InOutCubicEasingCurve::OBJECT_INFO, 58 Curves::Easing::InSineEasingCurve::OBJECT_INFO, 59 Curves::Easing::OutSineEasingCurve::OBJECT_INFO, 60 Curves::Easing::InOutSineEasingCurve::OBJECT_INFO, 61 Curves::Easing::InQuartEasingCurve::OBJECT_INFO, 62 Curves::Easing::OutQuartEasingCurve::OBJECT_INFO, 63 Curves::Easing::InOutQuartEasingCurve::OBJECT_INFO, 64 Curves::Easing::InQuintEasingCurve::OBJECT_INFO, 65 Curves::Easing::OutQuintEasingCurve::OBJECT_INFO, 66 Curves::Easing::InOutQuintEasingCurve::OBJECT_INFO, 67 Curves::Easing::InExpoEasingCurve::OBJECT_INFO, 68 Curves::Easing::OutExpoEasingCurve::OBJECT_INFO, 69 Curves::Easing::InOutExpoEasingCurve::OBJECT_INFO, 70 Curves::Easing::InCircEasingCurve::OBJECT_INFO, 71 Curves::Easing::OutCircEasingCurve::OBJECT_INFO, 72 Curves::Easing::InOutCircEasingCurve::OBJECT_INFO, 73 Curves::Easing::InBackEasingCurve::OBJECT_INFO, 74 Curves::Easing::OutBackEasingCurve::OBJECT_INFO, 75 Curves::Easing::InOutBackEasingCurve::OBJECT_INFO, 76 Curves::Easing::InElasticEasingCurve::OBJECT_INFO, 77 Curves::Easing::OutElasticEasingCurve::OBJECT_INFO, 78 Curves::Easing::InOutElasticEasingCurve::OBJECT_INFO, 79 Curves::Easing::InBounceEasingCurve::OBJECT_INFO, 80 Curves::Easing::OutBounceEasingCurve::OBJECT_INFO, 81 Curves::Easing::InOutBounceEasingCurve::OBJECT_INFO, 82 Curves::Easing::StepStartEasingCurve::OBJECT_INFO, 83 Curves::Easing::StepEndEasingCurve::OBJECT_INFO, 84 Curves::Easing::CubicBezierEasingCurve::OBJECT_INFO, 85}; 86 87void RegisterBuiltInAnimations(IObjectRegistry& registry) 88{ 89 for (auto& t : OBJECTS) { 90 registry.RegisterObjectType(t.GetFactory()); 91 } 92 93 RegisterDefaultInterpolators(registry); 94} 95void UnRegisterBuiltInAnimations(IObjectRegistry& registry) 96{ 97 for (auto& t : OBJECTS) { 98 registry.UnregisterObjectType(t.GetFactory()); 99 } 100 101 UnRegisterDefaultInterpolators(registry); 102} 103} // namespace Internal 104META_END_NAMESPACE() 105