2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.1 (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.
18 #ifndef __DEF_cam_app_H_
19 #define __DEF_cam_app_H_
23 #include <Elementary.h>
28 #include <glib-object.h>
32 #include <aul_service.h>
35 #include "cam_property.h"
36 #include "cam_debug.h"
38 #include <media_content.h>
40 #define USE_FIFO_THREAD
42 #define REG_THREAD_EXIT "REG_THREAD_EXIT"
43 #define RUN_IMAGE_HANDLE "RUN_IMAGE_HANDLE"
44 #define UPDATE_THUMBNAIL "UPDATE_THUMBNAIL"
45 #define UPDATE_THUMBNAIL_NO_ANI "UPDATE_THUMBNAIL_NO_ANI"
46 #define REC_FILE_SAVE_REG "REC_FILE_SAVE_REG"
49 #define USE_VCONF_CAMERA_KEY
51 /* next define statement will be deleted */
60 CAM_GVALUE_SET_INT(value, 10);
63 #define CAM_GVALUE_SET_INT(g_value/*GValue */, n_value) \
65 g_value_init(&g_value, G_TYPE_INT); \
66 g_value_set_int(&g_value, n_value); \
69 #define CAM_GVALUE_SET_UINT(g_value/*GValue */, n_value) \
71 g_value_init(&g_value, G_TYPE_UINT); \
72 g_value_set_uint(&g_value, n_value); \
75 #define CAM_GVALUE_SET_BOOLEAN(g_value/*GValue */, n_value) \
77 g_value_init(&g_value, G_TYPE_BOOLEAN); \
78 g_value_set_boolean(&g_value, n_value); \
81 #define CAM_GVALUE_SET_STRING(g_value/*GValue */, n_value) \
83 g_value_init(&g_value, G_TYPE_STRING); \
84 g_value_set_string(&g_value, n_value); \
87 #define _EDJ(x) (Evas_Object *)elm_layout_edje_get(x)
88 /* guide rect color of panorama shot & smile shot */
89 #define UYVY_GUIDE_RECT_GREEN (unsigned long)0xC262C212;
90 #define UYVY_GUIDE_RECT_ORANGE (unsigned long)0xA6BAA621;
91 #define UYVY_GUIDE_RECT_RED (unsigned long)0x52FA5270;
92 #define UYVY_GUIDE_RECT_WHITE (unsigned long)0xFE7FFE80;
93 #define YUYV_GUIDE_RECT_GREEN (unsigned long)0x62C212C2;
94 #define YUYV_GUIDE_RECT_ORANGE (unsigned long)0xBAA621A6;
95 #define YUYV_GUIDE_RECT_RED (unsigned long)0xFA527052;
96 #define YUYV_GUIDE_RECT_WHITE (unsigned long)0x7FFE80FE;
99 NORMAL_BATTERY_STATUS = 0,
100 LOW_BATTERY_WARNING_STATUS,
101 LOW_BATTERY_CRITICAL_STATUS,
105 DISPLAY_NONE_POPUP = 0,
106 DISPLAY_EDIT_SHOTCUTS_POPUP,
107 DISPLAY_BURST_SHOT_MODE_POPUP,
108 DISPLAY_VOLUME_KEY_POPUP,
109 DISPLAY_SELF_PORTRAIT_POPUP,
111 DISPLAY_SHOOTING_MODE_POPUP,
112 DISPLAY_RECORDING_MODE_POPUP,
113 DISPLAY_SCENE_MODE_POPUP,
114 DISPLAY_FOCUS_MODE_POPUP,
116 DISPLAY_EFFECTS_POPUP,
117 DISPLAY_PHOTO_RESOLUTION_POPUP,
118 DISPLAY_VIDEO_RESOLUTION_POPUP,
119 DISPLAY_WHITE_BALANCE_POPUP,
121 DISPLAY_METERING_POPUP,
122 DISPLAY_ANTI_SHAKE_POPUP,
123 DISPLAY_OUTDOOR_VISIBILITY_POPUP,
124 DISPLAY_AUTO_CONTRAST_POPUP,
125 DISPLAY_GUIDELINES_POPUP,
126 DISPLAY_CAPTURE_VOICE_POPUP,
127 DISPLAY_GPS_TAG_POPUP,
128 DISPLAY_SAVE_AS_FLIP,
129 DISPLAY_STORAGE_POPUP,
134 CAM_POPUP_RESPONSE_NONE = 0,
135 CAM_POPUP_RESPONSE_TIMEOUT,
136 CAM_POPUP_RESPONSE_OK,
137 CAM_POPUP_RESPONSE_CANCEL,
138 CAM_POPUP_RESPONSE_CLOSE,
141 typedef enum _CamCaptureMode{
142 CAM_CAPTURE_DEFAULT = 0,
143 CAM_CAPTURE_SINGLE = CAM_CAPTURE_DEFAULT,
148 typedef enum _CamFileExtention{
149 CAM_FILE_EXTENTION_IMAGE =0,
150 CAM_FILE_EXTENTION_VIDEO,
153 typedef void (*cam_update_view_cb)(void *data);
156 typedef struct _CamApp CamAppData;
164 gint photo_resolution;
165 gint video_resolution;
181 gint default_preview_width;
182 gint default_preview_height;
184 gint battery_charging;
195 gboolean self_portrait;
196 gboolean outdoor_visibility;
198 gboolean audio_recording;
200 gboolean capture_by_voice;
201 gboolean auto_contrast;
205 gboolean save_as_flip;
206 gboolean enable_touch_af;
207 CamTouchAFState touch_af_state;
215 gint size_limit_type;
224 gdouble start_time; /* setting toolbar */
227 Evas_Object *conti_image;
228 int conti_capture_cnt;
230 /* guide rect for px & smile shot */
231 gulong guide_rect_color;
233 /* continuous shot */
234 CamContinuousShotData *continuous_shot_data;
236 /* post processing */
237 gboolean post_processing;
241 char *thumbnail_name;
248 /*set guide rect color */
249 gulong guide_rect_green;
250 gulong guide_rect_orange;
251 gulong guide_rect_red;
252 gulong guide_rect_white; /*store white color of yuyv or uvuv*/
255 camera_state_changed_cb state_cb;
256 camera_focus_changed_cb focus_cb;
257 camera_error_cb error_cb;
258 camera_capturing_cb capture_cb;
259 camera_capture_completed_cb capture_completed_cb;
260 camera_preview_cb preview_cb;
261 camera_interrupted_cb cam_interrupted_cb;
262 cam_update_view_cb update_view_cb;
265 recorder_recording_status_cb recording_status_cb;
266 recorder_state_changed_cb recording_state_changed_cb;
267 recorder_recording_limit_reached_cb recording_limit_reached_cb;
268 recorder_interrupted_cb rec_interrupted_cb;
270 /*face detect callback*/
271 camera_face_detected_cb face_detect_cb;
273 CamCaptureMode default_capture_mode;
275 /* reserved setting data*/
276 cam_reserved_setting_data reserved_setting_data;
279 typedef struct _CamVideoRectangle CamVideoRectangle;
280 struct _CamVideoRectangle {
289 * Structure of Idler item
296 gboolean __cam_single_shot_reg_file(char *file_path);
298 /* Idler of capture callback management. wh01.cho@samsung.com. 2010-12-15. */
299 Eina_Bool cam_image_capture_handle_idler(void *item);
300 Eina_Bool cam_image_capture_handle(void *data);
301 Eina_Bool cam_capture_on_recording_handle(void *data);
303 /* gboolean cam_xwin_create(void *data); */
304 void *cam_appdata_get(void);
305 int cam_appdata_init(void *data);
306 int cam_appdata_fini(void *data);
307 CamAppData *cam_handle_get(void);
309 gboolean cam_app_start(void *data);
310 gboolean cam_app_stop(void *data);
311 gboolean cam_app_resume(void *data);
312 gboolean cam_app_pause(void *data);
314 gboolean cam_app_init(void *data);
316 gboolean cam_handle_create(void *data);
317 gboolean cam_handle_free(void *data);
318 gboolean cam_handle_init(void *data, int mode);
319 /* auto shot for smile , panorama, action shot and etc. */
320 Eina_Bool _auto_shot_idle_cb(void *data);
322 gboolean cam_app_preview_start(void *data);
323 gboolean cam_app_preview_stop(void);
325 gboolean cam_camera_touch_af_press(void *data);
326 gboolean cam_camera_key_press(void *data);
327 gboolean cam_camera_key_half_press(void *data);
328 gboolean cam_camera_key_release(void *data);
329 gboolean cam_camera_key_half_release(void *data);
330 Eina_Bool cam_volume_key_press(void *data);
332 Eina_Bool cam_hard_key_up(void *data, int type, void *event_info);
333 Eina_Bool cam_hard_key_down(void *data, int type, void *event_info);
335 Eina_Bool cam_mouse_button_down(void *data, void *event_info);
336 Eina_Bool cam_mouse_button_up(void *data, void *event_info);
338 gboolean cam_handle_value_set(void *data, int type, const GValue *value);
340 int cam_app_get_latest_mode(void);
341 void cam_app_set_config_group(gint mode);
343 const gchar *cam_app_get_target_path(void);
344 gchar *cam_app_get_next_filename(CamFileExtention extention);
345 gchar *cam_app_get_last_filename(void);
347 gboolean cam_callback_init(void *data);
349 gboolean cam_app_run_media_browser(void *data, gchar *filename);
350 /* int cam_quick_waiter(void * data); */
352 gboolean cam_app_clear_engine_data(void *data, gboolean release);
354 gboolean cam_app_check_wide_resolution(int id);
356 gboolean cam_app_is_skip_video_stream(); /* if true , must finish function in stream callback function */
358 void cam_app_stop_video_stream(); /* This function set skip flag to true, so cam_app_skip_video_stream will be returned true, */
360 void cam_app_run_video_stream(); /* This function set skip flag to false, for frame process in px or smile shot */
362 Eina_Bool cam_app_capture_idle_cb(void *yuvdata);
365 gboolean cam_app_create_progressbar(void *data);
366 gboolean cam_app_set_progressbar_value(void *data, double value);
367 gboolean cam_app_set_progressbar_text(void *data, const char *text);
368 gboolean cam_app_destroy_progressbar(void *data);
371 gboolean cam_app_timeout_checker_init(void *data);
372 gboolean cam_app_timeout_checker_remove(void);
374 #ifdef USE_FIFO_THREAD
375 void *cam_app_FIFO_thread_run(void *data);
376 void cam_app_FIFO_thread_exit();
379 gboolean cam_app_create_file_register_thread(void *data);
380 void *cam_app_file_register_thread_run(void *data);
381 void cam_app_file_register_thread_exit(void *data);
382 gboolean cam_app_set_args(void *data, char *args[]);
383 gboolean cam_app_init_with_args(void *data);
385 /* gboolean cam_app_wait_target_state(int target, int wait_time); */
387 gboolean cam_app_exit(void *data);
389 gboolean cam_key_grab_init(void *data);
390 gboolean cam_key_grab_deinit(void *data);
392 gboolean cam_app_key_event_init(void *data);
393 gboolean cam_app_key_event_deinit(void *data);
395 gboolean cam_layout_init(void *data);
396 gboolean cam_mode_change(void *data, int to_mode);
397 gboolean cam_shooting_mode_change(void *data);
398 gboolean cam_recording_mode_change(void *data, int rec_mode);
400 void cam_app_set_progress_value(Evas_Object *pb, double value,
401 const char *message);
402 gboolean cam_app_set_vconf_state(int vconf_state);
403 gboolean cam_app_get_vconf_state(int *vconf_state);
405 void cam_app_reset_settings(void *data);
406 gboolean cam_toolbar_menu_config_update(void *data);
408 gboolean cam_app_set_resolution(void *data, int width, int height);
409 gboolean cam_app_get_photo_resolution(int *width, int *height);
410 gboolean cam_app_reset_resolution(void *data, int width, int height, gboolean force_set);
411 int cam_app_get_aenc_bitrate(void *data);
412 int cam_app_get_venc_bitrate(void *data, int quality);
413 gboolean cam_app_set_video_quality(void *data, int quality);
414 gboolean cam_app_set_recording_mode(void *data, int mode);
415 gboolean cam_app_set_size_limit(int max_val, int size_limit_type);
416 gboolean cam_app_init_attribute(void *data, CamMode mode);
420 void cam_app_toggle_indicator(void *data, gboolean hide);
421 void cam_app_toggle_toolbar(void *data, gboolean hide);
422 void cam_app_get_preview_offset_coordinate(void *data);
423 void cam_app_draw_af_box(void *data);
425 void cam_app_set_blocking_popup();
426 void cam_app_free_blocking_popup();
427 void cam_app_popup_response_cb(void *data, Evas_Object *obj, void *event_info);
428 void cam_app_gps_popup_response_cb(void *data, Evas_Object *obj, void *event_info);
430 Evas_Object *cam_app_create_win(Evas_Object *parent, const char *name);
432 Evas_Object *cam_app_load_edj(Evas_Object *parent, const char *file, const char *group);
434 void cam_app_update_thumbnail();
436 void cam_set_orient_value(void *data);
439 gboolean cam_app_parse_args(CamExeArgs *args, service_h service);
442 void cam_win_transparent_set(void *data);
445 void cam_app_gps_enable_popup(void *data, const char *msg,
446 Eina_Bool (*func) (void *data));
447 void cam_app_notice_popup(void *data, const char *msg,
448 void (*func) (void *data,
452 void cam_app_timeout_notice_response_cb(void *data,
455 void cam_app_lowbattery_close_flash_cb(void *data, Evas_Object *obj,
457 gboolean cam_app_run_image_viewer_ug(void *data, char *file_path, gboolean launch_special_view);
458 gboolean cam_app_run_location_ug(void *data);
459 gboolean cam_image_capture_start(void *data);
460 /* update thumbnail to quickview after first launching or return from image viewer */
461 void cam_app_update_quickview_icon(void *data);
462 /* Idler of capture callback management. wh01.cho@samsung.com. 2010-12-15. */
463 void cam_utils_remove_idler_all(void *data);
464 gdouble _get_current_time(void);
465 void cam_remove_tmp_file();
466 Eina_Bool cam_continuous_af_start(void *data);
468 Eina_Bool cam_elm_cache_flush();
469 void cam_app_mdm_syspopup(void *data);
470 gboolean cam_app_lbs_start(void *data);
471 gboolean cam_app_lbs_stop(void *data);
473 Eina_Bool cam_app_focus_guide_create(void *data);
474 Eina_Bool cam_app_focus_guide_update(void *data);
476 Eina_Bool cam_screen_rotate(void *data);
477 void cam_app_screen_rotate(void *data);
479 void cam_app_cancel_timer(void *data);
481 gboolean cam_condition_check_to_start_camera(void *data);
483 void cam_app_get_win_size(void* data);
485 gboolean cam_do_record(void* data);
486 gboolean cam_do_capture(void* data);
488 void cam_reset_focus_mode(void *data);
490 gboolean cam_set_default_capture_mode(void *data, CamCaptureMode type);
492 gboolean cam_app_timeout_checker_update();
493 gboolean cam_app_hide_progressbar(void *data);
494 gint cam_app_get_max_image_size_by_ratio(void *data, int resolution);
495 void cam_app_stop_capture(void* data);
496 void cam_create_error_popup(void* data);