• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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