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*/
116 int video_duration; /*video content's duration*/
121 Ecore_Idler *video_resize_idle;
122 Ecore_Idler *video_duration_idle;
123 Ecore_Idler *video_eos_idle;
128 int viewer_landscape_width;
129 int viewer_landscape_height;
131 int main_win_rotate; /*current rotation value of main window*/
133 pfnSMILHelpPageCb appSmilHelpPageCb;
134 pfnSMILFontSizeCb appSmilFontSizeCb;
138 VIEWER_COLORREF bgcolor;
139 MSG_BOOL ismute; /*sound, video mute mode when silent mode*/
142 } SMIL_RENDERER_DATA_S;
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);
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);
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.
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);
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);
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);
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);
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
194 MSG_BOOL _msg_smil_render_stop_playing_file(void *data);
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
201 void _msg_smil_render_rotate_video_window(void *data);