Apply latest codes migration
[apps/core/preloaded/message-app.git] / viewer / smil-player / include / msg-smil-render.h
1 /*
2  * Copyright 2012  Samsung Electronics Co., Ltd
3  *
4  * Licensed under the Flora License, Version 1.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *    http://floralicense.org/license
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifndef __MSG_SMIL_RENDER_H__
18 #define __MSG_SMIL_RENDER_H__
19 /*==================================================================================================
20  *                                                                      INCLUDE HEADERS
21  *==================================================================================================*/
22 #include "msg-smil-types.h"
23 #include "msg-smil-util.h"
24 #include <msg.h>
25 #include <stdio.h>
26 #include <Ecore_X.h>
27 #include <Ethumb.h>
28 #include <Elementary.h>
29 #include <ui-gadget-module.h>
30 #include "msg-ui-viewer-drm-utility.h"
31
32 /*==================================================================================================
33  *                                                                              DEFINITIONS
34  *==================================================================================================*/
35 #define VIEWER_W        (480.0)
36 #define VIEWER_XPAD_RATIO       (0.02)
37 #define VIEWER_VIDEO_WIDTH      176
38 #define VIEWER_VIDEO_HEIGHT     144
39 #define VIEWER_TEXT_FONT_LEN    1024
40
41 #define VIEWER_FONT_STYLE_BUF_LEN       10
42
43 typedef unsigned char   VIEWER_BYTE;
44 typedef unsigned short  VIEWER_WORD;
45 typedef unsigned long   VIEWER_DWORD;
46 typedef unsigned long   VIEWER_COLORREF;
47 #define VIEWER_RGB(r, g, b)     ((VIEWER_COLORREF)(((VIEWER_BYTE)(r) | ((VIEWER_WORD)((VIEWER_BYTE)(g)) << 8)) | (((VIEWER_DWORD)(VIEWER_BYTE)(b)) << 16)))
48
49 /*==================================================================================================
50  *                                                                              ENUMERATIONS
51  *==================================================================================================*/
52 enum viewer_media_player_state {
53         MEDIA_PLAYER_STATE_NONE = 0X00,
54         MEDIA_PLAYER_STATE_INIT,
55         MEDIA_PLAYER_STATE_READY,
56         MEDIA_PLAYER_STATE_PLAYING,
57         MEDIA_PLAYER_STATE_PAUSED,
58         MEDIA_PLAYER_STATE_STOP
59 };
60
61 typedef enum {
62         VIEWER_IMAGE_TYPE_NONE = 0,
63         VIEWER_IMAGE_TYPE_NORMAL,
64         VIEWER_IMAGE_TYPE_DRM_IMAGE,
65         VIEWER_IMAGE_TYPE_DRM_IMAGE_RAW_DATA,
66         VIEWER_IMAGE_TYPE_DRM_VIDEO,
67         VIEWER_IMAGE_TYPE_DRM_SOUND,
68         VIEWER_IMAGE_TYPE_UNSUPPORTED,
69 } SMIL_RENDER_IMAGE_TYPE_E;
70
71 /*==================================================================================================
72  *                                                                              STRUCTURES
73  *==================================================================================================*/
74 typedef struct viewer_tagRGBQUAD {
75         VIEWER_BYTE     rgbBlue;
76         VIEWER_BYTE     rgbGreen;
77         VIEWER_BYTE     rgbRed;
78         VIEWER_BYTE     rgbReserved;
79 } SMIL_RGBQUAD;
80
81 typedef union {
82         SMIL_RGBQUAD    rgbQuad;
83         VIEWER_COLORREF rgbColor;
84 } SMIL_RGB_UNION;
85
86 typedef struct _SMIL_FONT_SYTLE_S {
87         char font_color[VIEWER_RGB_COLOR_BUF_LEN + 1];  /*"#ffffff"*/
88         char font_style[VIEWER_FONT_STYLE_BUF_LEN + 1]; /*"link", "em", etc.*/
89 } SMIL_FONT_SYTLE_S;
90
91 typedef struct _SMIL_RENDERER_DATA_S {
92         void *smilhandle;
93         msg_struct_t msg_info_t;
94         Evas_Object *main_window;
95         Evas_Object *layout_main;
96         Evas_Object *viewer_scroller;
97         Evas_Object *viewer_content_box;                /*it contans text(entry) and image*/
98         Evas_Object *viewer_bg_rect;                    /* bg color */
99         Evas_Object *viewer_body;                               /* it shows text , entry*/
100         Evas_Object *viewer_audio_name_rect;    /* rect area for displaying audio file name */
101         Evas_Object *viewer_body_top_padding;   /* padding rect area for top of content box */
102         Evas_Object *viewer_body_mid_padding;   /* padding rect area between image and text */
103         Evas_Object *viewer_body_bottom_padding;        /* padding rect area for bottom of content box */
104
105         char *viewer_body_text;         /*set page text*/
106         Evas_Object *insert_image;
107         Evas_Object *insert_sound_icon; /*display invalid drm sound icon*/
108         Evas_Object *insert_unsupported_icon;   /*display unsupported icon*/
109         Evas_Object *video_image;
110         Evas_Object *attach_list;       /* attach list for help page */
111         unsigned char *video_image_buffer;      /*Evas Object Image buffer*/
112         Ecore_Timer *video_update_timer;
113         MSG_BOOL is_skip_frame; /*it is used to skip 1 frame of videostream cb*/
114         MSG_BOOL render_status; /*status of rendering*/
115         int video_width;
116         int video_height;
117         int video_duration;     /*video content's duration*/
118
119         int resized_width;
120         int resized_height;
121
122         Ecore_Idler *video_resize_idle;
123         Ecore_Idler *video_duration_idle;
124         Ecore_Idler *video_eos_idle;
125
126         int player_state;
127         int viewer_width;
128         int viewer_height;
129         int viewer_landscape_width;
130         int viewer_landscape_height;
131         int button_height;
132         int main_win_rotate;    /*current rotation value of main window*/
133
134         pfnSMILHelpPageCb appSmilHelpPageCb;
135         pfnSMILFontSizeCb appSmilFontSizeCb;
136
137         void *appUserData;
138
139         VIEWER_COLORREF bgcolor;
140         MSG_BOOL ismute;        /*sound, video mute mode when silent mode*/
141
142         char *working_path;
143 } SMIL_RENDERER_DATA_S;
144
145 /*==================================================================================================
146  *                                                                      FUNCTION DECLARATIONS
147  *==================================================================================================*/
148 MSG_SMIL_ERROR_E _msg_smil_create_render(SMIL_RENDERER_DATA_S **viewerRenderData);
149 void _msg_smil_destroy_render(SMIL_RENDERER_DATA_S *viewerRenderData);
150 MSG_BOOL _msg_smil_init_render(SMIL_RENDERER_DATA_S *viewerRenderData);
151
152 /*Create and set layout to display viewer*/
153 MSG_BOOL _msg_smil_render_create_layout(SMIL_RENDERER_DATA_S *viewerRenderData, Evas_Object *layout);
154 MSG_BOOL _msg_smil_render_set_layout_size(SMIL_RENDERER_DATA_S *viewerRenderData, SMIL_POSITION_S *left_top, SMIL_POSITION_S *right_bottom);
155 MSG_BOOL _msg_smil_render_get_status(SMIL_RENDERER_DATA_S *viewerRenderData);
156 void _msg_smil_render_set_status(SMIL_RENDERER_DATA_S *viewerRenderData, MSG_BOOL status);
157 MSG_BOOL _msg_smil_render_set_mute(SMIL_RENDERER_DATA_S *viewerRenderData, MSG_BOOL ismute);
158 MSG_BOOL _msg_smil_render_set_help_page_cb(SMIL_RENDERER_DATA_S *viewerRenderData, void *callBack, void *userData);
159 MSG_BOOL _msg_smil_render_set_entry_handle_cb(SMIL_RENDERER_DATA_S *viewerRenderData, void *callBack);
160
161 /**
162 *@fn                    _msg_smil_render_on_slide_render_handler(SMIL_RENDERER_DATA_S *viewerRenderData, SMIL_SLIDE_EVENT_PARAM_S *eventStatus);
163 *@brief                 This API shall handle render event to display mms contents
164 *@return                        MSG_SMIL_SUCCESS on success, else failure return code
165 *@param[in]             viewerRenderData        This is the handler of SMIL_RENDERER_DATA_S.
166 *@param[in]             eventStatus     This is the eventstatus of a current slide.
167 *@param[out] None.
168 */
169 MSG_SMIL_ERROR_E _msg_smil_render_on_slide_render_handler(SMIL_RENDERER_DATA_S *viewerRenderData, SMIL_SLIDE_EVENT_PARAM_S *eventStatus);
170 MSG_BOOL _msg_smil_render_reload_mms(SMIL_RENDERER_DATA_S *viewerRenderData, SMIL_SLIDE_EVENT_PARAM_S *eventStatus);
171
172
173 /*==================================================================================================
174  *                                                                              Text related functions
175  *==================================================================================================*/
176 MSG_BOOL _msg_smil_render_show_inserted_text(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path);
177 void _msg_smil_render_show_help_page_attach_list(SMIL_RENDERER_DATA_S *viewerRenderData);
178 void _msg_smil_render_set_entry_handle(SMIL_RENDERER_DATA_S *viewerRenderData);
179
180 /*==================================================================================================
181  *                                                                              Media related functions
182  *==================================================================================================*/
183 MSG_BOOL _msg_smil_render_show_inserted_audio(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path, SMIL_PLAYER_STATUS_E status);
184 MSG_BOOL _msg_smil_render_show_inserted_image(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path);
185 MSG_BOOL _msg_smil_render_show_inserted_video(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path, SMIL_PLAYER_STATUS_E status);
186
187 /*smil player sound and video related functions*/
188 MSG_BOOL _msg_smil_render_pause(void *data, int mediaType);
189 MSG_BOOL _msg_smil_render_resume(void *data, int mediaType);
190
191 /**
192 *@fn                    _msg_smil_render_mgr_request_player_start(void *data)
193 *@brief                 This API shall request player to start its media
194 *@return                        TRUE on success , else FALSE return code
195 *@param[in]             data    This is the smil render structure
196 */
197 MSG_BOOL _msg_smil_render_mgr_request_player_start(void *data);
198
199 /**
200 *@fn                    _msg_smil_render_stop_playing_file(void *data)
201 *@brief                 This API shall stop and destroy mm player
202 *@return                        TRUE on success , else FALSE return code
203 *@param[in]             data    This is the smil render structure
204 */
205 MSG_BOOL _msg_smil_render_stop_playing_file(void *data);
206
207 /**
208 *@fn                    _msg_smil_render_rotate_video_window(void *data)
209 *@brief                 This API shall rotate video window according to rotated status of viewer's main window
210 *@param[in]             data    This is the smil render structure
211 */
212 void _msg_smil_render_rotate_video_window(void *data);
213
214 #endif