1 /* 2 * Copyright (c) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED. 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 16 #ifndef HI_GV_ANIMATION_H 17 #define HI_GV_ANIMATION_H 18 19 #include "hi_type.h" 20 #include "hi_gv_conf.h" 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif 25 26 /* Listener notify function */ 27 typedef struct _HIGV_LISTENER_S HIGV_LISTENER_S; 28 typedef HI_VOID (*higv_notify_func_t)(HIGV_LISTENER_S *listener, void *data); 29 30 #define HIGV_ANIMATION_TWEEN_NUM 16 31 32 /* Thansition type */ 33 typedef enum { 34 HIGV_TWEEN_TRANSITION_LINEAR, /* Linear transition */ 35 HIGV_TWEEN_TRANSITION_SINE, /* Sine transition */ 36 HIGV_TWEEN_TRANSITION_QUINT, /* Quint transition */ 37 HIGV_TWEEN_TRANSITION_QUART, /* Quart transition */ 38 HIGV_TWEEN_TRANSITION_EXPO, /* Expo transition */ 39 HIGV_TWEEN_TRANSITION_ELASTIC, /* Elastic transition */ 40 HIGV_TWEEN_TRANSITION_CUBIC, /* Cubic transition */ 41 HIGV_TWEEN_TRANSITION_BOUNCE, /* Bounce transition */ 42 HIGV_TWEEN_TRANSITION_BACK, /* Back transition */ 43 HIGV_TWEEN_TRANSITION_BUTT 44 } HIGV_TWEEN_TRANSITION_E; 45 46 /* Easing type */ 47 typedef enum { 48 HIGV_TWEEN_EASE_IN, /* Acceleration */ 49 HIGV_TWEEN_EASE_OUT, /* Deceleration */ 50 HIGV_TWEEN_EASE_IN_OUT, /* Accelerate after the deceleration */ 51 HIGV_TWEEN_EASE_BUTT 52 } HIGV_TWEEN_EASE_E; 53 54 HIGV_HANDLE HI_GV_TweenAnimCreate(HI_VOID); 55 56 HI_S32 HI_GV_TweenAnimSetDuration(HIGV_HANDLE animHandle, HI_U32 ms); 57 58 HI_S32 HI_GV_TweenAnimGetDuration(HIGV_HANDLE animHandle, HI_S32 *duration); 59 60 HI_S32 HI_GV_TweenAnimGetCurrentTime(HIGV_HANDLE animHandle, HI_S64 *currentTime); 61 62 HI_S32 HI_GV_TweenAnimSetDelay(HIGV_HANDLE animHandle, HI_U32 ms); 63 64 HI_S32 HI_GV_TweenAnimSetLoops(HIGV_HANDLE animHandle, HI_U32 loopCount); 65 66 HI_S32 HI_GV_TweenAnimSetStartedListener(HIGV_HANDLE animHandle, higv_notify_func_t func); 67 68 HI_S32 HI_GV_TweenAnimSetFinishedListener(HIGV_HANDLE animHandle, higv_notify_func_t func); 69 70 HI_S32 HI_GV_TweenAnimSetExecListener(HIGV_HANDLE animHandle, higv_notify_func_t func); 71 72 HI_S32 HI_GV_TweenAnimStart(HIGV_HANDLE animHandle); 73 74 HI_S32 HI_GV_TweenAnimStop(HIGV_HANDLE animHandle); 75 76 HI_S32 HI_GV_TweenAnimResume(HIGV_HANDLE animHandle); 77 78 HI_S32 HI_GV_TweenAnimPause(HIGV_HANDLE animHandle); 79 80 HI_S32 HI_GV_TweenAnimAddTween(HIGV_HANDLE animHandle, HIGV_TWEEN_TRANSITION_E transition, 81 HIGV_TWEEN_EASE_E easing, HI_FLOAT initialValue, HI_FLOAT endValue); 82 83 HI_FLOAT HI_GV_TweenAnimGetTweenValue(HIGV_HANDLE animHandle, HI_U32 index); 84 85 HI_S32 HI_GV_TweenAnimSetTweenRange(HIGV_HANDLE animHandle, HI_U32 index, HI_FLOAT initialValue, 86 HI_FLOAT endValue); 87 88 HI_S32 HI_GV_TweenAnimDestroy(HIGV_HANDLE animHandle); 89 90 HI_S32 HI_GV_Anim_CreateInstance(HIGV_HANDLE animInfoHandle, HIGV_HANDLE widgetHandle, HIGV_HANDLE *instanceHandle); 91 92 HI_S32 HI_GV_Anim_DestroyInstance(HIGV_HANDLE windowHandle, HIGV_HANDLE animHandle); 93 94 HI_S32 HI_GV_Anim_GetInfo(HIGV_HANDLE windowHandle, HIGV_HANDLE animHandle, 95 HIGV_HANDLE *animInfoHandle, HIGV_HANDLE *widgetHandle); 96 97 HI_S32 HI_GV_Anim_Start(HIGV_HANDLE windowHandle, HIGV_HANDLE animHandle); 98 99 HI_S32 HI_GV_Anim_Stop(HIGV_HANDLE windowHandle, HIGV_HANDLE animHandle); 100 101 #ifdef __cplusplus 102 } 103 #endif 104 #endif 105