9a2fcb7d2c823caa80303b449a45f952bd273f56
[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         int video_width;
115         int video_height;
116         int video_duration;     /*video content's duration*/
117
118         int resized_width;
119         int resized_height;
120
121         Ecore_Idler *video_resize_idle;
122         Ecore_Idler *video_duration_idle;
123         Ecore_Idler *video_eos_idle;
124
125         int player_state;
126         int viewer_width;
127         int viewer_height;
128         int viewer_landscape_width;
129         int viewer_landscape_height;
130         int button_height;
131         int main_win_rotate;    /*current rotation value of main window*/
132
133         pfnSMILHelpPageCb appSmilHelpPageCb;
134         pfnSMILFontSizeCb appSmilFontSizeCb;
135
136         void *appUserData;
137
138         VIEWER_COLORREF bgcolor;
139         MSG_BOOL ismute;        /*sound, video mute mode when silent mode*/
140
141         char *working_path;
142 } SMIL_RENDERER_DATA_S;
143
144 /*==================================================================================================
145  *                                                                      FUNCTION DECLARATIONS
146  *==================================================================================================*/
147 MSG_SMIL_ERROR_E _msg_smil_create_render(SMIL_RENDERER_DATA_S **viewerRenderData);
148 void _msg_smil_destroy_render(SMIL_RENDERER_DATA_S *viewerRenderData);
149 MSG_BOOL _msg_smil_init_render(SMIL_RENDERER_DATA_S *viewerRenderData);
150
151 /*Create and set layout to display viewer*/
152 MSG_BOOL _msg_smil_render_create_layout(SMIL_RENDERER_DATA_S *viewerRenderData, Evas_Object *layout);
153 MSG_BOOL _msg_smil_render_set_layout_size(SMIL_RENDERER_DATA_S *viewerRenderData, SMIL_POSITION_S *left_top, SMIL_POSITION_S *right_bottom);
154 MSG_BOOL _msg_smil_render_set_mute(SMIL_RENDERER_DATA_S *viewerRenderData, MSG_BOOL ismute);
155 MSG_BOOL _msg_smil_render_set_help_page_cb(SMIL_RENDERER_DATA_S *viewerRenderData, void *callBack, void *userData);
156 MSG_BOOL _msg_smil_render_set_entry_handle_cb(SMIL_RENDERER_DATA_S *viewerRenderData, void *callBack);
157
158 /**
159 *@fn                    _msg_smil_render_on_slide_render_handler(SMIL_RENDERER_DATA_S *viewerRenderData, SMIL_SLIDE_EVENT_PARAM_S *eventStatus);
160 *@brief                 This API shall handle render event to display mms contents
161 *@return                        MSG_SMIL_SUCCESS on success, else failure return code
162 *@param[in]             viewerRenderData        This is the handler of SMIL_RENDERER_DATA_S.
163 *@param[in]             eventStatus     This is the eventstatus of a current slide.
164 *@param[out] None.
165 */
166 MSG_SMIL_ERROR_E _msg_smil_render_on_slide_render_handler(SMIL_RENDERER_DATA_S *viewerRenderData, SMIL_SLIDE_EVENT_PARAM_S *eventStatus);
167 MSG_BOOL _msg_smil_render_reload_mms(SMIL_RENDERER_DATA_S *viewerRenderData, SMIL_SLIDE_EVENT_PARAM_S *eventStatus);
168
169
170 /*==================================================================================================
171  *                                                                              Text related functions
172  *==================================================================================================*/
173 MSG_BOOL _msg_smil_render_show_inserted_text(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path);
174 void _msg_smil_render_show_help_page_attach_list(SMIL_RENDERER_DATA_S *viewerRenderData);
175 void _msg_smil_render_set_entry_handle(SMIL_RENDERER_DATA_S *viewerRenderData);
176
177 /*==================================================================================================
178  *                                                                              Media related functions
179  *==================================================================================================*/
180 MSG_BOOL _msg_smil_render_show_inserted_audio(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path, SMIL_PLAYER_STATUS_E status);
181 MSG_BOOL _msg_smil_render_show_inserted_image(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path);
182 MSG_BOOL _msg_smil_render_show_inserted_video(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path, SMIL_PLAYER_STATUS_E status);
183
184 /*smil player sound and video related functions*/
185 MSG_BOOL _msg_smil_render_pause(void *data, int mediaType);
186 MSG_BOOL _msg_smil_render_resume(void *data, int mediaType);
187
188 /**
189 *@fn                    _msg_smil_render_stop_playing_file(void *data)
190 *@brief                 This API shall stop and destroy mm player
191 *@return                        TRUE on success , else FALSE return code
192 *@param[in]             data    This is the smil render structure
193 */
194 MSG_BOOL _msg_smil_render_stop_playing_file(void *data);
195
196 /**
197 *@fn                    _msg_smil_render_rotate_video_window(void *data)
198 *@brief                 This API shall rotate video window according to rotated status of viewer's main window
199 *@param[in]             data    This is the smil render structure
200 */
201 void _msg_smil_render_rotate_video_window(void *data);
202
203 #endif