summaryrefslogtreecommitdiff
path: root/main/src/effect/include/ivug-effect.h
blob: 7594c54d23f880e01288a86fe4140b4a72028459 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*
 * Copyright 2012  Samsung Electronics Co., Ltd
 *
 * Licensed under the Flora License, Version 1.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *	  http://www.tizenopensource.org/license
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


#ifndef __IVUG_EFFECT_H__
#define __IVUG_EFFECT_H__

#include <stdbool.h>
#include <Elementary.h>
#include "ivug-anim.h"

#define	EFFECT_LBYTES_ARGB8888(w)	(((w) * 4))
#define MAX_PERCENT			(100.0f)
#define MIN_PERCENT			(0.0f)

#ifdef __cplusplus
extern "C" {
#endif

typedef void *Effect_Data ;

typedef void (*FuncFinished)(void *data);

typedef struct {
	Effect_Data eng_data;

	FuncFinished pFinishedCB;
	void *ClientData;

	double t_base;		// start time.
	anim_handle_t *anim;
	Ecore_Animator *animator;

	struct {
		Effect_Data (*init) (Evas_Object *src, Evas_Object *dst, int screen_w, int screen_h, int rotation);
		void (*animate) (Effect_Data data, double percent);
		void (*pause) (Effect_Data data);		/* Not used*/
		void (*resume) (Effect_Data data);		/* Not used*/
		void (*finalize) (Effect_Data data);

		double (*get_duration)(Effect_Data data);
	} func;

} Effect_Engine;

typedef enum _Effect_Type {
	EFFECT_NONE,
	EFFECT_SLIDE,
	EFFECT_MAX
} Effect_Type;


Effect_Engine *ivug_effect_add(Effect_Type type);

bool ivug_effect_init(Effect_Engine *engine, Evas_Object *src, Evas_Object *dst, int w, int h, int rotation);
bool ivug_effect_start(Effect_Engine *engine, FuncFinished pFunc, void *data);
bool ivug_effect_pause(Effect_Engine *engine);
bool ivug_effect_resume(Effect_Engine *engine);
bool ivug_effect_finalize(Effect_Engine *engine);


/*
	Private function for adding effect. Do not use below functions directly..
*/
Effect_Engine *ivug_fade_add(void);
Effect_Engine *ivug_iris_add(void);
Effect_Engine *ivug_dissolve_add(void);
Effect_Engine *ivug_blind_add(void);
Effect_Engine *ivug_slide_add(void);


#ifdef __cplusplus
}
#endif


#endif				/* __IVUG_EFFECT_H__ */