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.
19 #include "camera_utils.h"
21 #include "edc_string.h"
23 #include "cam_common_edc_callback.h"
24 #include "cam_toolbar_edc_callback.h"
25 #include "cam_indicator_edc_callback.h"
26 #include "cam_zoom_edc_callback.h"
27 #include "cam_ev_edc_callback.h"
28 #include "cam_face_detection_focus.h"
29 #include "cam_ui_effect_utils.h"
30 #include "cam_menu_composer.h"
31 #include "cam_capacity_type.h"
32 #include "cam_device_capacity.h"
36 #define ZOOM_THRESHOLD 0.02
38 static double prev_zoom = 0;
40 static Evas_Event_Flags __pinch_start(void *data, void *event_info)
42 struct appdata *ad = (struct appdata *)data;
43 cam_retvm_if(ad == NULL, EVAS_EVENT_FLAG_NONE, "appdata is NULL");
44 CamAppData *camapp = ad->camapp_handle;
45 cam_retvm_if(camapp == NULL, EVAS_EVENT_FLAG_NONE, "camapp_handle is NULL");
47 DEBUG_TRACE("__pinch_start");
49 if (camapp->touch_af_state == CAM_TOUCH_AF_STATE_DOING) {
50 DEBUG_TRACE("touch_af_state is [%d], do not zoom", camapp->touch_af_state);
51 return EVAS_EVENT_FLAG_NONE;
54 DEL_EVAS_OBJECT(ad->focus_edje);
55 cam_mm_stop_focusing();
59 if (ad->toolbar_setting_popup || ad->setting_ctxpopup) {
60 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
61 cam_toolbar_setting_popup_destroy(ad);
64 if (ad->edit_shortcuts_popup) {
65 toolbar_destroy_shortcuts_popup(ad);
74 cam_zoom_create_pinch_edje(ad);
76 return EVAS_EVENT_FLAG_NONE;
79 static Evas_Event_Flags __pinch_end(void *data, void *event_info)
81 struct appdata *ad = (struct appdata *)data;
82 cam_retvm_if(ad == NULL, EVAS_EVENT_FLAG_NONE, "appdata is NULL");
84 DEBUG_TRACE("__pinch_end");
86 DEL_EVAS_OBJECT(ad->pinch_edje)
87 cam_reset_focus_mode(ad);
89 return EVAS_EVENT_FLAG_NONE;
92 static Evas_Event_Flags __pinch_move(void *data, void *event_info)
94 Elm_Gesture_Zoom_Info *ev = (Elm_Gesture_Zoom_Info *)event_info;
95 cam_retvm_if(ev == NULL, EVAS_EVENT_FLAG_NONE, "event_info is NULL");
96 struct appdata *ad = (struct appdata *)data;
97 cam_retvm_if(ad == NULL, EVAS_EVENT_FLAG_NONE, "appdata is NULL");
98 CamAppData *camapp = ad->camapp_handle;
99 cam_retvm_if(camapp == NULL, EVAS_EVENT_FLAG_NONE, "camapp_handle is NULL");
101 if (camapp->touch_af_state == CAM_TOUCH_AF_STATE_DOING) {
102 DEBUG_TRACE("touch_af_state is [%d], do not zoom", camapp->touch_af_state);
103 return EVAS_EVENT_FLAG_NONE;
106 if (ad->pinch_edje == NULL)
107 __pinch_start(ad, NULL);
109 double diff = prev_zoom - ev->zoom;
110 if (ABS(diff) < ZOOM_THRESHOLD) {
111 return EVAS_EVENT_FLAG_NONE;
114 prev_zoom = ev->zoom;
116 gboolean is_zoom_in = FALSE;
123 state = cam_mm_get_state();
124 cam_debug(LOG_UI, " state = %d", state);
125 if (camapp->camera_mode == CAM_CAMERA_MODE) {
126 if (state == CAMERA_STATE_PREVIEW
127 || state == CAMERA_STATE_CAPTURED) {
128 if (!camapp->zoom_lock) {
129 cam_pinch_zoom_in(ad, is_zoom_in, 1);
130 return EVAS_EVENT_FLAG_NONE;
133 } else if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
134 if (state == RECORDER_STATE_READY
135 || state == RECORDER_STATE_RECORDING
136 || state == RECORDER_STATE_PAUSED) {
137 if (!camapp->zoom_lock
138 && camapp->recording_mode != CAM_RECORD_SLOW) {
139 cam_pinch_zoom_in(ad, is_zoom_in, 1);
140 return EVAS_EVENT_FLAG_NONE;
145 return EVAS_EVENT_FLAG_NONE;
148 static void __mouse_click(void *data)
150 struct appdata *ad = (struct appdata *)data;
151 cam_retm_if(ad == NULL, "appdata is NULL");
154 unload_zoom_edje(ad);
159 if (ad->setting_ctxpopup) {
160 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
161 cam_toolbar_setting_popup_destroy(ad);
162 } else if (ad->toolbar_setting_popup) {
163 cam_toolbar_setting_popup_destroy(ad);
164 } else if (ad->edit_shortcuts_popup) {
165 toolbar_destroy_shortcuts_popup(ad);
171 static void __mouse_up_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info)
173 Evas_Event_Mouse_Up *ev = (Evas_Event_Mouse_Up *)event_info;
174 cam_retm_if(ev == NULL, "event_info is NULL");
175 struct appdata *ad = (struct appdata *)data;
176 cam_retm_if(ad == NULL, "appdata is NULL");
178 if (ad->is_rotating) {
179 cam_critical(LOG_MM, "rotating...");
183 unsigned int focus_capacity = 0;
184 GetCamDevFocusCaps(&focus_capacity, ad);
186 if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK) {
187 DEBUG_TRACE("double click");
191 if (focus_capacity & CAM_CP_FOCUS_AUTO_FOCUS) {
192 CAM_UI_LOG("mouse up :[%d, %d]", ev->canvas.x, ev->canvas.y);
193 cam_mouse_button_up(ad, ev);
197 cam_app_timeout_checker_update();
202 static void __mouse_down_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info)
204 Evas_Event_Mouse_Down *ev = (Evas_Event_Mouse_Down *) event_info;
205 cam_retm_if(ev == NULL, "event_info is NULL");
206 struct appdata *ad = (struct appdata *)data;
207 cam_retm_if(ad == NULL, "appdata is NULL");
208 CamAppData *camapp = ad->camapp_handle;
209 cam_retm_if(camapp == NULL, "camapp is NULL");
211 unsigned int focus_capacity = 0;
212 GetCamDevFocusCaps(&focus_capacity, ad);
214 if (ad->is_rotating) {
215 cam_critical(LOG_MM, "rotating...");
219 if (ad->is_processing) {
220 cam_critical(LOG_MM, "bust shot popup is displaying...");
224 if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK) {
225 DEBUG_TRACE("double click");
227 if(camapp->af_mode == CAM_FOCUS_FACE){
228 cam_common_set_mouse_double_click_xy(ev->canvas.x, ev->canvas.y);
233 if (focus_capacity & CAM_CP_FOCUS_AUTO_FOCUS) {
234 CAM_UI_LOG("mouse down :[%d, %d]", ev->canvas.x, ev->canvas.y);
235 cam_mouse_button_down(ad, ev);
238 cam_app_timeout_checker_update();
243 static void __mouse_move_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info)
245 cam_app_timeout_checker_update();
249 void define_mouse_callback(void *data)
251 struct appdata *ad = (struct appdata *)data;
252 cam_retm_if(ad == NULL, "appdata is NULL");
254 unsigned int capacity = 0;
255 GetCamDevFuncCaps(&capacity, ad);
257 Evas_Object *eo = (Evas_Object *)edje_object_part_object_get(_EDJ(ad->ug_base), "mouse_event_layer");
259 evas_object_event_callback_add(eo, EVAS_CALLBACK_MOUSE_DOWN, __mouse_down_cb, ad);
260 evas_object_event_callback_add(eo, EVAS_CALLBACK_MOUSE_UP, __mouse_up_cb, ad);
261 evas_object_event_callback_add(eo, EVAS_CALLBACK_MOUSE_MOVE, __mouse_move_cb, ad);
263 if (capacity & CAM_CP_FUNC_ZOOM) {
264 if(ad->gesture == NULL)
265 ad->gesture = elm_gesture_layer_add(eo);
267 elm_gesture_layer_cb_set(ad->gesture, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_START, __pinch_start, ad);
268 elm_gesture_layer_cb_set(ad->gesture, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_MOVE, __pinch_move, ad);
269 elm_gesture_layer_cb_set(ad->gesture, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_END, __pinch_end, ad);
270 elm_gesture_layer_cb_set(ad->gesture, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_ABORT, __pinch_end, ad);
271 elm_gesture_layer_attach(ad->gesture, eo);
273 DEL_EVAS_OBJECT(ad->gesture);
277 void cam_layout_del_all(void *data)
280 struct appdata *ad = (struct appdata *)data;
281 cam_toolbar_destroy(ad);
283 if (ad->indicator_edje)
284 cam_indicator_destory(ad);
290 unload_zoom_edje(ad);
292 ad->displayed_setting_popup = DISPLAY_NONE_POPUP;
295 int cam_convert_shot_mode_to_menu_item(int mode)
299 case CAM_SINGLE_MODE:
300 return CAM_MENU_SHOOTING_SINGLE;
301 case CAM_SELF_SINGLE_MODE:
302 return CAM_MENU_SHOOTING_SELF_SINGLE;
304 return CAM_MENU_SHOOTING_SINGLE;
308 int cam_convert_flash_to_menu_item(int mode)
313 return CAM_MENU_FLASH_OFF;
315 return CAM_MENU_FLASH_ON;
317 return CAM_MENU_FLASH_AUTO;
319 return CAM_MENU_FLASH_OFF;
323 int cam_convert_recording_mode_to_menu_item(int mode)
327 case CAM_RECORD_NORMAL:
328 return CAM_MENU_RECORDING_MODE_NORMAL;
329 case CAM_RECORD_SELF:
330 return CAM_MENU_RECORDING_MODE_SELF_NORMAL;
332 return CAM_MENU_RECORDING_MODE_LIMIT;
333 case CAM_RECORD_SELF_MMS:
334 return CAM_MENU_RECORDING_MODE_SELF_LIMIT;
335 case CAM_RECORD_SLOW:
336 return CAM_MENU_RECORDING_MODE_SLOW;
337 case CAM_RECORD_FAST:
338 return CAM_MENU_RECORDING_MODE_FAST;
340 return CAM_MENU_RECORDING_MODE_NORMAL;
344 int cam_convert_video_resolution_to_menu_item(int mode)
349 case CAM_RESOLUTION_FULLHD:
350 return CAM_MENU_VIDEO_RESOLUTION_FULLHD;
351 case CAM_RESOLUTION_HD:
352 return CAM_MENU_VIDEO_RESOLUTION_HD;
353 case CAM_RESOLUTION_WVGA2:
354 return CAM_MENU_VIDEO_RESOLUTION_WVGA;
355 case CAM_RESOLUTION_VGA:
356 return CAM_MENU_VIDEO_RESOLUTION_VGA;
357 case CAM_RESOLUTION_QVGA:
358 return CAM_MENU_VIDEO_RESOLUTION_QVGA;
359 case CAM_RESOLUTION_QCIF:
360 return CAM_MENU_VIDEO_RESOLUTION_QCIF;
362 return CAM_MENU_VIDEO_RESOLUTION_QCIF;
366 int cam_convert_photo_resolution_to_menu_item(int mode)
370 case CAM_RESOLUTION_3264x2448:
371 return CAM_MENU_PHOTO_RESOLUTION_3264x2448;
372 case CAM_RESOLUTION_3264x1960:
373 return CAM_MENU_PHOTO_RESOLUTION_3264x1960;
374 case CAM_RESOLUTION_3264x1836:
375 return CAM_MENU_PHOTO_RESOLUTION_3264x1836;
376 case CAM_RESOLUTION_2800x1920:
377 return CAM_MENU_PHOTO_RESOLUTION_2800x1920;
378 case CAM_RESOLUTION_2560x1536:
379 return CAM_MENU_PHOTO_RESOLUTION_2560x1536;
380 case CAM_RESOLUTION_2560x1440:
381 return CAM_MENU_PHOTO_RESOLUTION_2560x1440;
382 case CAM_RESOLUTION_2048x1536:
383 return CAM_MENU_PHOTO_RESOLUTION_2048x1536;
384 case CAM_RESOLUTION_2048x1152:
385 return CAM_MENU_PHOTO_RESOLUTION_2048x1152;
386 case CAM_RESOLUTION_1920x1080:
387 return CAM_MENU_PHOTO_RESOLUTION_1920x1080;
388 case CAM_RESOLUTION_1600x1200:
389 return CAM_MENU_PHOTO_RESOLUTION_1600x1200;
390 case CAM_RESOLUTION_1392x1392:
391 return CAM_MENU_PHOTO_RESOLUTION_1392x1392;
392 case CAM_RESOLUTION_1280x960:
393 return CAM_MENU_PHOTO_RESOLUTION_1280x960;
394 case CAM_RESOLUTION_1280x720:
395 return CAM_MENU_PHOTO_RESOLUTION_1280x720;
396 case CAM_RESOLUTION_VGA:
397 return CAM_MENU_PHOTO_RESOLUTION_640x480;
399 return CAM_MENU_PHOTO_RESOLUTION_640x480;
403 int cam_convert_iso_to_menu_item(int mode)
408 return CAM_MENU_ISO_AUTO;
410 return CAM_MENU_ISO_50;
412 return CAM_MENU_ISO_100;
414 return CAM_MENU_ISO_200;
416 return CAM_MENU_ISO_400;
418 return CAM_MENU_ISO_80O;
420 return CAM_MENU_ISO_1600;
422 return CAM_MENU_ISO_320O;
424 return CAM_MENU_ISO_AUTO;
428 int cam_convert_focus_to_menu_item(int mode)
433 return CAM_MENU_FOCUS_AUTO;
434 case CAM_FOCUS_MACRO:
435 return CAM_MENU_FOCUS_MACRO;
437 return CAM_MENU_FOCUS_FACE_DETECTION;
439 return CAM_MENU_FOCUS_AUTO;
443 int cam_convert_timer_to_menu_item(int mode)
447 case CAM_SETTINGS_TIMER_OFF:
448 return CAM_MENU_TIMER_OFF;
449 case CAM_SETTINGS_TIMER_2SEC:
450 return CAM_MENU_TIMER_2SEC;
451 case CAM_SETTINGS_TIMER_5SEC:
452 return CAM_MENU_TIMER_5SEC;
453 case CAM_SETTINGS_TIMER_10SEC:
454 return CAM_MENU_TIMER_10SEC;
456 return CAM_MENU_TIMER_OFF;
460 int cam_convert_scene_mode_to_menu_item(int mode)
465 return CAM_MENU_SCENE_AUTO;
466 case CAM_SCENE_PORTRAIT:
467 return CAM_MENU_SCENE_PORTRAIT;
468 case CAM_SCENE_LANDSCAPE:
469 return CAM_MENU_SCENE_LANDSCAPE;
470 case CAM_SCENE_NIGHT:
471 return CAM_MENU_SCENE_NIGHT;
472 case CAM_SCENE_SPORTS:
473 return CAM_MENU_SCENE_SPORTS;
474 case CAM_SCENE_PARTY:
475 return CAM_MENU_SCENE_PARTY;
476 case CAM_SCENE_BEACHSNOW:
477 return CAM_MENU_SCENE_BEACHSNOW;
478 case CAM_SCENE_SUNSET:
479 return CAM_MENU_SCENE_SUNSET;
480 case CAM_SCENE_DUSKDAWN:
481 return CAM_MENU_SCENE_DUSKDAWN;
483 return CAM_MENU_SCENE_FALL;
484 case CAM_SCENE_FIREWORK:
485 return CAM_MENU_SCENE_FIREWORK;
487 return CAM_MENU_SCENE_TEXT;
488 case CAM_SCENE_CANDLELIGHT:
489 return CAM_MENU_SCENE_CANDLELIGHT;
490 case CAM_SCENE_BACKLIGHT:
491 return CAM_MENU_SCENE_BACKLIGHT;
493 return CAM_MENU_SCENE_AUTO;
497 int cam_convert_wb_to_menu_item(int mode)
501 case CAM_SETTINGS_WB_AWB:
502 return CAM_MENU_WB_AWB;
503 case CAM_SETTINGS_WB_INCANDESCENT:
504 return CAM_MENU_WB_INCANDESCENT;
505 case CAM_SETTINGS_WB_FLUORESCENT:
506 return CAM_MENU_WB_FLUORESCENT;
507 case CAM_SETTINGS_WB_DAYLIGHT:
508 return CAM_MENU_WB_DAYLIGHT;
509 case CAM_SETTINGS_WB_CLOUDY:
510 return CAM_MENU_WB_CLOUDY;
511 case CAM_SETTINGS_WB_SHADE:
512 return CAM_MENU_WB_SHADE;
513 case CAM_SETTINGS_WB_HORIZON:
514 return CAM_MENU_WB_HORIZON;
515 case CAM_SETTINGS_WB_FLASH:
516 return CAM_MENU_WB_FLASH;
517 case CAM_SETTINGS_WB_CUSTOM:
518 return CAM_MENU_WB_CLOUDY;
520 return CAM_MENU_WB_AWB;
524 int cam_convert_effect_to_menu_item(int mode)
528 case CAM_SETTINGS_EFFECTS_NOR:
529 return CAM_MENU_EFFECT_NONE;
530 case CAM_SETTINGS_EFFECTS_NEGATIVE:
531 return CAM_MENU_EFFECT_NEGATIVE;
532 case CAM_SETTINGS_EFFECTS_MONO:
533 return CAM_MENU_EFFECT_BLACKANDWHITE;
534 case CAM_SETTINGS_EFFECTS_SEPIA:
535 return CAM_MENU_EFFECT_SEPIA;
537 return CAM_MENU_EFFECT_NONE;
541 int cam_convert_metering_to_menu_item(int mode)
545 case CAM_METERING_MATRIX:
546 return CAM_MENU_METERING_MATRIX;
547 case CAM_METERING_CENTER_WEIGHTED:
548 return CAM_MENU_METERING_CENTER_WEIGHTED;
549 case CAM_METERING_SPOT:
550 return CAM_MENU_METERING_SPOT;
552 return CAM_MENU_METERING_MATRIX;
556 int cam_convert_storage_to_menu_item(int mode)
560 case CAM_STORAGE_INTERNAL:
561 return CAM_MENU_STORAGE_PHONE;
562 case CAM_STORAGE_EXTERNAL:
563 return CAM_MENU_STORAGE_MMC;
565 return CAM_MENU_STORAGE_PHONE;
569 int cam_convert_volume_key_to_menu_item(int mode)
573 case CAM_VOLUME_KEY_ZOOM:
574 return CAM_MENU_VOLUME_KEY_ZOOM;
575 case CAM_VOLUME_KEY_SHUTTER:
576 return CAM_MENU_VOLUME_KEY_SHUTTER;
578 return CAM_MENU_VOLUME_KEY_ZOOM;
582 int cam_convert_menu_item_to_mmfw_value(int mode)
586 case CAM_MENU_SCENE_AUTO:
587 return CAM_SCENE_NONE;
588 case CAM_MENU_SCENE_PORTRAIT:
589 return CAM_SCENE_PORTRAIT;
590 case CAM_MENU_SCENE_LANDSCAPE:
591 return CAM_SCENE_LANDSCAPE;
592 case CAM_MENU_SCENE_NIGHT:
593 return CAM_SCENE_NIGHT;
594 case CAM_MENU_SCENE_SPORTS:
595 return CAM_SCENE_SPORTS;
596 case CAM_MENU_SCENE_PARTY:
597 return CAM_SCENE_PARTY;
598 case CAM_MENU_SCENE_BEACHSNOW:
599 return CAM_SCENE_BEACHSNOW;
600 case CAM_MENU_SCENE_SUNSET:
601 return CAM_SCENE_SUNSET;
602 case CAM_MENU_SCENE_DUSKDAWN:
603 return CAM_SCENE_DUSKDAWN;
604 case CAM_MENU_SCENE_FALL:
605 return CAM_SCENE_FALL;
606 case CAM_MENU_SCENE_FIREWORK:
607 return CAM_SCENE_FIREWORK;
608 case CAM_MENU_SCENE_TEXT:
609 return CAM_SCENE_TEXT;
610 case CAM_MENU_SCENE_CANDLELIGHT:
611 return CAM_SCENE_CANDLELIGHT;
612 case CAM_MENU_SCENE_BACKLIGHT:
613 return CAM_SCENE_BACKLIGHT;
614 case CAM_MENU_SHOOTING_SINGLE:
615 return CAM_SINGLE_MODE;
616 case CAM_MENU_SHOOTING_SELF_SINGLE:
617 return CAM_SELF_SINGLE_MODE;
618 case CAM_MENU_PHOTO_RESOLUTION_3264x2448:
619 return CAM_RESOLUTION_3264x2448;
620 case CAM_MENU_PHOTO_RESOLUTION_3264x1960:
621 return CAM_RESOLUTION_3264x1960;
622 case CAM_MENU_PHOTO_RESOLUTION_3264x1836:
623 return CAM_RESOLUTION_3264x1836;
624 case CAM_MENU_PHOTO_RESOLUTION_2800x1920:
625 return CAM_RESOLUTION_2800x1920;
626 case CAM_MENU_PHOTO_RESOLUTION_2560x1920:
627 return CAM_RESOLUTION_2560x1920;
628 case CAM_MENU_PHOTO_RESOLUTION_2560x1536:
629 return CAM_RESOLUTION_2560x1536;
630 case CAM_MENU_PHOTO_RESOLUTION_2560x1440:
631 return CAM_RESOLUTION_2560x1440;
632 case CAM_MENU_PHOTO_RESOLUTION_2048x1536:
633 return CAM_RESOLUTION_2048x1536;
634 case CAM_MENU_PHOTO_RESOLUTION_2048x1152:
635 return CAM_RESOLUTION_2048x1152;
636 case CAM_MENU_PHOTO_RESOLUTION_1920x1080:
637 return CAM_RESOLUTION_1920x1080;
638 case CAM_MENU_PHOTO_RESOLUTION_1600x1200:
639 return CAM_RESOLUTION_1600x1200;
640 case CAM_MENU_PHOTO_RESOLUTION_1392x1392:
641 return CAM_RESOLUTION_1392x1392;
642 case CAM_MENU_PHOTO_RESOLUTION_1280x960:
643 return CAM_RESOLUTION_1280x960;
644 case CAM_MENU_PHOTO_RESOLUTION_1280x720:
645 return CAM_RESOLUTION_1280x720;
646 case CAM_MENU_PHOTO_RESOLUTION_640x480:
647 return CAM_RESOLUTION_VGA;
648 case CAM_MENU_VIDEO_RESOLUTION_FULLHD:
649 return CAM_RESOLUTION_FULLHD;
650 case CAM_MENU_VIDEO_RESOLUTION_HD:
651 return CAM_RESOLUTION_HD;
652 case CAM_MENU_VIDEO_RESOLUTION_WVGA:
653 return CAM_RESOLUTION_WVGA2;
654 case CAM_MENU_VIDEO_RESOLUTION_VGA:
655 return CAM_RESOLUTION_VGA;
656 case CAM_MENU_VIDEO_RESOLUTION_QVGA:
657 return CAM_RESOLUTION_QVGA;
658 case CAM_MENU_VIDEO_RESOLUTION_QCIF:
659 return CAM_RESOLUTION_QCIF;
660 case CAM_MENU_WB_AWB:
661 return CAM_SETTINGS_WB_AWB;
662 case CAM_MENU_WB_INCANDESCENT:
663 return CAM_SETTINGS_WB_INCANDESCENT;
664 case CAM_MENU_WB_FLUORESCENT:
665 return CAM_SETTINGS_WB_FLUORESCENT;
666 case CAM_MENU_WB_DAYLIGHT:
667 return CAM_SETTINGS_WB_DAYLIGHT;
668 case CAM_MENU_WB_CLOUDY:
669 return CAM_SETTINGS_WB_CLOUDY;
670 case CAM_MENU_WB_SHADE:
671 return CAM_SETTINGS_WB_SHADE;
672 case CAM_MENU_WB_HORIZON:
673 return CAM_SETTINGS_WB_HORIZON;
674 case CAM_MENU_WB_FLASH:
675 return CAM_SETTINGS_WB_FLASH;
676 case CAM_MENU_WB_CUSTOM:
677 return CAM_SETTINGS_WB_CUSTOM;
678 case CAM_MENU_EFFECT_NONE:
679 return CAM_SETTINGS_EFFECTS_NOR;
680 case CAM_MENU_EFFECT_NEGATIVE:
681 return CAM_SETTINGS_EFFECTS_NEGATIVE;
682 case CAM_MENU_EFFECT_BLACKANDWHITE:
683 return CAM_SETTINGS_EFFECTS_GRAY;
684 case CAM_MENU_EFFECT_SEPIA:
685 return CAM_SETTINGS_EFFECTS_SEPIA;
686 case CAM_MENU_FOCUS_AUTO:
687 return CAM_FOCUS_AUTO;
688 case CAM_MENU_FOCUS_MACRO:
689 return CAM_FOCUS_MACRO;
690 case CAM_MENU_FOCUS_FACE_DETECTION:
691 return CAM_FOCUS_FACE;
692 case CAM_MENU_RECORDING_MODE_NORMAL:
693 return CAM_RECORD_NORMAL;
694 case CAM_MENU_RECORDING_MODE_LIMIT:
695 return CAM_RECORD_MMS;
696 case CAM_MENU_RECORDING_MODE_SLOW:
697 return CAM_RECORD_SLOW;
698 case CAM_MENU_RECORDING_MODE_FAST:
699 return CAM_RECORD_FAST;
700 case CAM_MENU_RECORDING_MODE_SELF_NORMAL:
701 return CAM_RECORD_SELF;
702 case CAM_MENU_RECORDING_MODE_SELF_LIMIT:
703 return CAM_RECORD_SELF_MMS;
704 case CAM_MENU_FLASH_OFF:
705 return CAM_FLASH_OFF;
706 case CAM_MENU_FLASH_ON:
708 case CAM_MENU_FLASH_AUTO:
709 return CAM_FLASH_AUTO;
710 case CAM_MENU_METERING_MATRIX:
711 return CAM_METERING_MATRIX;
712 case CAM_MENU_METERING_CENTER_WEIGHTED:
713 return CAM_METERING_CENTER_WEIGHTED;
714 case CAM_MENU_METERING_SPOT:
715 return CAM_METERING_SPOT;
716 case CAM_MENU_ISO_AUTO:
718 case CAM_MENU_ISO_50:
720 case CAM_MENU_ISO_100:
722 case CAM_MENU_ISO_200:
724 case CAM_MENU_ISO_400:
726 case CAM_MENU_ISO_80O:
728 case CAM_MENU_ISO_1600:
730 case CAM_MENU_ISO_320O:
739 int cam_get_menu_item_to_index(void* data, int menu_type, int item)
741 cam_menu_composer* menu_composer = NULL;
742 menu_composer = calloc(1, sizeof(cam_menu_composer));
744 switch((CAM_MENU_ITEM)menu_type)
746 case CAM_MENU_SHOOTING_MODE:
747 cam_compose_menu_shooting_mode(data, menu_composer);
751 cam_compose_menu_flash(data, menu_composer);
754 case CAM_MENU_RECORDING_MODE:
755 cam_compose_menu_recording_mode(data, menu_composer);
758 case CAM_MENU_PHOTO_RESOLUTION:
759 cam_compose_menu_photo_resolution(data, menu_composer);
762 case CAM_MENU_VIDEO_RESOLUTION:
763 cam_compose_menu_video_resolution(data, menu_composer);
767 cam_compose_menu_iso(data, menu_composer);
770 case CAM_MENU_FOCUS_MODE:
771 cam_compose_menu_focus_mode(data, menu_composer);
774 case CAM_MENU_SCENE_MODE:
775 cam_compose_menu_scene_mode(data, menu_composer);
778 case CAM_MENU_WHITE_BALANCE:
779 cam_compose_menu_wb(data, menu_composer);
782 case CAM_MENU_EFFECTS:
783 cam_compose_menu_effect(data, menu_composer);
786 case CAM_MENU_METERING:
787 cam_compose_menu_metering(data, menu_composer);
790 case CAM_MENU_STORAGE:
791 cam_compose_menu_storage(data, menu_composer);
794 case CAM_MENU_VOLUME_KEY:
795 cam_compose_menu_volume_key(data, menu_composer);
802 CAM_MENU_ITEM* menu_item = NULL;
803 int size = eina_array_count(menu_composer->array);
807 for (index = 0; index < size; index++) {
808 menu_item = (CAM_MENU_ITEM*)eina_array_data_get(menu_composer->array, index);
810 if((CAM_MENU_ITEM)item == *menu_item) {
811 cam_compose_free(menu_composer);
816 cam_compose_free(menu_composer);
817 return INVALID_INDEX;
821 int cam_get_value_to_index(void* data, int menu_type, int value)
823 cam_menu_composer* menu_composer = NULL;
824 menu_composer = calloc(1, sizeof(cam_menu_composer));
830 case CAM_MENU_SHOOTING_MODE:
831 cam_compose_menu_shooting_mode(data, menu_composer);
832 item = cam_convert_shot_mode_to_menu_item(value);
836 cam_compose_menu_flash(data, menu_composer);
837 item = cam_convert_flash_to_menu_item(value);
840 case CAM_MENU_RECORDING_MODE:
841 cam_compose_menu_recording_mode(data, menu_composer);
842 item = cam_convert_recording_mode_to_menu_item(value);
845 case CAM_MENU_PHOTO_RESOLUTION:
846 cam_compose_menu_photo_resolution(data, menu_composer);
847 item = cam_convert_photo_resolution_to_menu_item(value);
850 case CAM_MENU_VIDEO_RESOLUTION:
851 cam_compose_menu_video_resolution(data, menu_composer);
852 item = cam_convert_video_resolution_to_menu_item(value);
856 cam_compose_menu_iso(data, menu_composer);
857 item = cam_convert_iso_to_menu_item(value);
860 case CAM_MENU_FOCUS_MODE:
861 cam_compose_menu_focus_mode(data, menu_composer);
862 item = cam_convert_focus_to_menu_item(value);
866 cam_compose_menu_timer_mode(data, menu_composer);
867 item = cam_convert_timer_to_menu_item(value);
870 case CAM_MENU_SCENE_MODE:
871 cam_compose_menu_scene_mode(data, menu_composer);
872 item = cam_convert_scene_mode_to_menu_item(value);
875 case CAM_MENU_WHITE_BALANCE:
876 cam_compose_menu_wb(data, menu_composer);
877 item = cam_convert_wb_to_menu_item(value);
880 case CAM_MENU_EFFECTS:
881 cam_compose_menu_effect(data, menu_composer);
882 item = cam_convert_effect_to_menu_item(value);
885 case CAM_MENU_METERING:
886 cam_compose_menu_metering(data, menu_composer);
887 item = cam_convert_metering_to_menu_item(value);
890 case CAM_MENU_STORAGE:
891 cam_compose_menu_storage(data, menu_composer);
892 item = cam_convert_storage_to_menu_item(value);
895 case CAM_MENU_VOLUME_KEY:
896 cam_compose_menu_volume_key(data, menu_composer);
897 item = cam_convert_volume_key_to_menu_item(value);
904 CAM_MENU_ITEM* menu_item = NULL;
905 int size = eina_array_count(menu_composer->array);
908 for (index = 0; index < size; index++) {
909 menu_item = (CAM_MENU_ITEM*)eina_array_data_get(menu_composer->array, index);
911 if((CAM_MENU_ITEM)item == *menu_item) {
912 cam_compose_free(menu_composer);
917 cam_compose_free(menu_composer);
918 return INVALID_INDEX;
921 int cam_get_sound_index(int sound)
926 int shot_mode_set(void *data, int mode)
928 CAM_UI_LOG("%d", mode);
929 struct appdata *ad = (struct appdata *)data;
930 CamAppData *camapp = NULL;
931 cam_retvm_if(ad == NULL, -1, "appdata is NULL");
932 camapp = ad->camapp_handle;
933 cam_retvm_if(camapp == NULL, -1, "camapp_handle is NULL");
935 GValue value = { 0 };
936 if (mode == CAM_SINGLE_MODE)
937 camapp->enable_touch_af = TRUE;
939 camapp->enable_touch_af = FALSE;
941 CAM_GVALUE_SET_INT(value, mode);
942 if (mode != camapp->shooting_mode) {
943 cam_handle_value_set(ad, PROP_SHOT_MODE, &value);