2 * Copyright 2012 Samsung Electronics Co., Ltd
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
8 * http://floralicense.org/license
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.
17 #ifndef __MSG_SMIL_RENDER_H__
18 #define __MSG_SMIL_RENDER_H__
19 /*==================================================================================================
21 *==================================================================================================*/
22 #include "msg-smil-types.h"
23 #include "msg-smil-util.h"
28 #include <Elementary.h>
29 #include <ui-gadget-module.h>
30 #include "msg-ui-viewer-drm-utility.h"
32 /*==================================================================================================
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
41 #define VIEWER_FONT_STYLE_BUF_LEN 10
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)))
49 /*==================================================================================================
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
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;
71 /*==================================================================================================
73 *==================================================================================================*/
74 typedef struct viewer_tagRGBQUAD {
78 VIEWER_BYTE rgbReserved;
83 VIEWER_COLORREF rgbColor;
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.*/
91 typedef struct _SMIL_RENDERER_DATA_S {
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 */
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*/
117 int video_duration; /*video content's duration*/
122 Ecore_Idler *video_resize_idle;
123 Ecore_Idler *video_duration_idle;
124 Ecore_Idler *video_eos_idle;
129 int viewer_landscape_width;
130 int viewer_landscape_height;
132 int main_win_rotate; /*current rotation value of main window*/
134 pfnSMILHelpPageCb appSmilHelpPageCb;
135 pfnSMILFontSizeCb appSmilFontSizeCb;
139 VIEWER_COLORREF bgcolor;
140 MSG_BOOL ismute; /*sound, video mute mode when silent mode*/
143 } SMIL_RENDERER_DATA_S;
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);
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);
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.
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);
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);
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);
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);
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
197 MSG_BOOL _msg_smil_render_mgr_request_player_start(void *data);
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
205 MSG_BOOL _msg_smil_render_stop_playing_file(void *data);
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
212 void _msg_smil_render_rotate_video_window(void *data);