⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmidc_preview_wintab.c

📁 手机Camera部分上层软件代码
💻 C
📖 第 1 页 / 共 5 页
字号:
            e_preview_win_mode = DCSetting_GetPreviewWinMode();
            break;

	case MSG_TP_PRESS_DOWN:
		{
			uint16			pos_x = MMK_GET_TP_X(param);
			uint16			pos_y = MMK_GET_TP_Y(param);
			uint16			i = 0;
			MMI_POINT_T		point = {0};
			GUI_RECT_T		rect = {0};
			
			point.x = pos_x;
			point.y = pos_y;
			
			e_preview_win_mode = DCSetting_GetPreviewWinMode();
			DCSetting_GetTrimRect(&trim_rect, &disp_rect, &s_mmidc_setting_info, MMIDC_PREVIEW_NO_AF);

			switch(e_preview_win_mode)
			{
			case PREVIEW_WIN_FULLSCREEN_IMAGE_OSDMENU:
				{			
					DCSetting_GetPreviewImgOSDMenuIndex(&img_osd_menu_cur_index, &img_osd_menu_left_index);
					
					while (i < MAX_TOOLBAR_NUM)
					{
						uint16			osd_menu_left = disp_rect.w_start_x + OSD_MENU_CHAR_LEFT_MARGIN + i * (OSD_IMG_WIDTH + OSD_MENU_IMG_INTERVAL);
						uint16			osd_menu_top = (disp_rect.w_start_y + disp_rect.w_height)  - OSD_IMG_HEIGHT;
						uint16			osd_menu_right = osd_menu_left + OSD_IMG_WIDTH - 1;
						uint16			osd_menu_bottom = (disp_rect.w_start_y + disp_rect.w_height - 1);
						uint16			osd_menu_max_right = disp_rect.w_start_x + disp_rect.w_width - 1;
						GUI_RECT_T		osd_image_rect = {0};

						osd_image_rect.left = osd_menu_left;
						osd_image_rect.top = osd_menu_top;
						osd_image_rect.right = osd_menu_right;
						osd_image_rect.bottom = osd_menu_bottom;

						if (GUI_PointIsInRect(point, osd_image_rect) && (osd_menu_right < osd_menu_max_right))
						{
							img_osd_menu_cur_index = i + img_osd_menu_left_index;
							is_from_dc = (int)MMK_GetWinAddDataPtr(win_id);
							
							DCSetting_GetTrimRect(&trim_rect, &disp_rect, MMIDC_GetSettingInfo(), MMIDC_PREVIEW_NO_AF);
							
							DCAdap_StopPreview();
							DrawImgOSDMenu(is_from_dc, img_osd_menu_cur_index, img_osd_menu_left_index, &disp_rect);
							
							SCI_Sleep(MMIDC_PREVIEW_OSD_PROTECT_TIME);
							DCAdap_StartPreview();
							
							DCSetting_SetPreviewImgOSDMenuIndex(img_osd_menu_cur_index, img_osd_menu_left_index);
							
							MMK_SendMessage(NULL, MSG_APP_OK, param);
							
							break;
						}	
						i++;
					}
					break;
				}
			case PREVIEW_WIN_PARTSCREEN_CIRCLE_OSD:
			case PREVIEW_WIN_FULLSCREEN_CHAR_OSDMENU:
				//decrease brightness
				DC_DecreaseBrightness();
				break;
					
			default:
				break;
			}

			rect.left = disp_rect.w_start_x;
			rect.top = disp_rect.w_start_y;
			rect.right = disp_rect.w_start_x + disp_rect.w_width - 1;
			rect.bottom = disp_rect.w_start_y + disp_rect.w_height - 1 - OSD_IMG_WIDTH;

			SCI_TRACE_LOW("[mmi dc]: msg_tp_press_down rect.bottom = %d, rect.left = %d", rect.bottom, rect.left);
			SCI_TRACE_LOW("[mmi dc]: msg_tp_press_down rect.right = %d, rect.top = %d", rect.right, rect.top);	
			
			if (GUI_PointIsInRect(point, rect))
			{
				MMK_SendMessage(NULL, MSG_APP_WEB, param);
			}
		}
		break;

#ifdef _MMI_OCR
	case MSG_OCR_AF_OVER: //receive the af_over msg after ocr lib process @annie
		SCI_TRACE_LOW("DC window have received MSG_OCR_AF_OVER Msg");
		//MMIDC_SetAFTaskStatus(TRUE);
		//DC_CloseSingleModeAF();
		//DCAdap_StopPreview();
		//OCR_SetOsdEnableMode(0x00);
		s_lose_focus_reason |= LOSE_FOCUS_APP_CAMERA;
		MMIOCR_OpenCaptureWin();

		//MMK_CloseWin(win_id);
		break;
#endif

    case MSG_APP_CAMERA:
    case MSG_APP_WEB:
#ifdef WIN32
    case MSG_APP_GREEN:
#endif
            //if dc is not opend
            if (!s_has_dc_opened)
            {
                SCI_TRACE_LOW("MMIDC_HandlePreviewWinMsg, MSG_APP_CAMERA dc has not opend");
                break;
            }

#ifdef _MMI_OCR
            if(MMIOCR_Is_From_OCR())   //confirm if come from ocr @annie.
            {
                if (s_timer_id == 0)
                {
                        i_overtime_cnt = DCSetting_GetOverTimeCount();
                        if (i_overtime_cnt == 0)
                        {
                        // begin to do focus and wait for the focus ready signal  
                        if(OCR_NONE_ERROR != OCR_DoFocus()) 
                        {
                            SCI_TRACE_LOW("mmiocr_dofocus fail");
                            MMIOCR_AlertDCAFWrong();
                            MMIOCR_OpenPreviewWin(TRUE);
                        }
                        else
                        {   SCI_TRACE_LOW("LOSE_FOCUS_APP_CAMERA:%d",s_lose_focus_reason);
                            //s_lose_focus_reason |= LOSE_FOCUS_APP_CAMERA;					
                            SCI_TRACE_LOW("MMIOCR_DoFocus:waiting for the focus finish msg");
                        }
                    }
                }
                break;
            }
		else
#endif
        {
            if (s_timer_id == 0)
            {
                i_overtime_cnt = DCSetting_GetOverTimeCount();

                if (i_overtime_cnt == 0)
                {
                    //stop preview
                    DCAdap_StopPreview();	
                    //set flash
                    //				is_from_dc = (int)MMK_GetWinAddDataPtr(win_id);
                    if (DCSetting_IsFlashEnable())
                    {
                        SetFlash(TRUE);
                    }

                    //set shutter voice
                    if (DCSetting_IsShutterVoiceEnable())
                    {
                        if(MMI_GetUdiskStatus()||MMI_GetSDStatus())
                        {
                            PlayShutterVoice(TRUE);
                        }
                    }

                    //save lose focus reason
                    s_lose_focus_reason |= LOSE_FOCUS_APP_CAMERA;

                    //open capture window
                    MMITHEME_SetUpdateDelayCount(1);
                    is_from_dc = (int)MMK_GetWinAddDataPtr(win_id);
                    if (is_from_dc)
                    {
                        if(!MMI_GetUdiskStatus()&&!MMI_GetSDStatus())
                        {
                            PUBWIN_OpenPromptAlertWin(PUBWIN_SOFTKEY_ONE, TXT_SDCARD_NO_EXIST, IMAGE_PROMPT_ICON_WRONG, MMI_3SECONDS, PNULL);
                        }
                        else
                        {
                            MMIDC_OpenCaptureWin();
                        }
                    }
                    else
                    {
                        if(!MMI_GetUdiskStatus()&&!MMI_GetSDStatus())
                        {
                            PUBWIN_OpenPromptAlertWin(PUBWIN_SOFTKEY_ONE, TXT_SDCARD_NO_EXIST, IMAGE_PROMPT_ICON_WRONG, MMI_3SECONDS, PNULL);
                        }
                        else
                        {
                            MMIDV_OpenRecordWin();
                        }
                    }

                    //stop flash
                    if (DCSetting_IsFlashEnable())
                    {
                        SetFlash(FALSE);
                    }

                }
                else
                {
                    s_timer_id = MMK_CreateWinTimer(win_id, i_overtime_cnt, FALSE);
                }
            }
            else
            {
                //timer has started, wait for timer event.
            }
        }
        break;

#ifdef MMI_ENABLE_AUTO_FOCUS
	case MSG_APP_HASH:
		DCAdap_StopPreview();
		DCAdap_SetAFSinglePreviewParam(MMIDC_GetSettingInfo());
    //SCI_TRACE_LOW("LW TRACE:MMIDC_HandlePreviewWinMsg1__BBBBBBBBBBBBBBBBBBBB");
		DCAdap_SetAllPreviewParam();
		DCAdap_StartPreview();
		break;
#endif
		
	case MSG_TIMER:
		if (s_timer_id == *((uint8 *) param))
		{
			//stop preview
			DCAdap_StopPreview();

			//set flash
			if (DCSetting_IsFlashEnable())
			{
				SetFlash(TRUE);
			}

			//set shutter voice
			if (DCSetting_IsShutterVoiceEnable())
			{
				PlayShutterVoice(TRUE);
			}

			//save lose focus reason
			s_lose_focus_reason |= LOSE_FOCUS_APP_CAMERA;

			//open capture window
			MMITHEME_SetUpdateDelayCount(1);
			is_from_dc = (int)MMK_GetWinAddDataPtr(win_id);
			if (is_from_dc)
			{
#ifdef _MMI_OCR
                        if (MMIOCR_Is_From_OCR())
                        {
                            MMIOCR_OpenCaptureWin();
                        }
                        else
#endif
                        {
                            MMIDC_OpenCaptureWin();
                        }
			}
			else
			{
				MMIDV_OpenRecordWin();
			}

			//stop flash
			if (DCSetting_IsFlashEnable())
			{
				SetFlash(FALSE);
			}

			s_timer_id = 0;
		}
		break;
	
	case MSG_APP_OK:
#ifdef _MMI_OCR
            if(MMIOCR_Is_From_OCR())
            {
                if (!s_has_dc_opened)
                {
                    SCI_TRACE_LOW("MMIDC_HandlePreviewWinMsg, MSG_APP_CAMERA dc has not opend");
                    break;
                }
                if (s_timer_id == 0)
                {
                    i_overtime_cnt = DCSetting_GetOverTimeCount();
                    if (i_overtime_cnt == 0)
                    {
                        // begin to do focus and wait for the focus ready signal  
                        if(OCR_NONE_ERROR != OCR_DoFocus()) 
                        {
                            SCI_TRACE_LOW("mmiocr_dofocus fail");
                            MMIOCR_AlertDCAFWrong();
                            MMIOCR_OpenPreviewWin(TRUE);
                        }
                        else
                        {  
                            //	s_lose_focus_reason |= LOSE_FOCUS_APP_CAMERA;
                            SCI_TRACE_LOW("MMIOCR_DoFocus:waiting for the focus finish msg");
                        }

                    }
                }
                break;
            }
            else
#endif
            {
                e_preview_win_mode = DCSetting_GetPreviewWinMode();
                switch(e_preview_win_mode)
                {
                    case PREVIEW_WIN_FULLSCREEN_CHAR_OSDMENU://预览主屏全屏、文字OSD MENU
                        //去掉OSD文字菜单,改为OSD图片菜单

                        //save the status
                        DCSetting_SetPreviewWinMode(PREVIEW_WIN_FULLSCREEN_IMAGE_OSDMENU);

                        //draw the osd menu. stop preview -> draw osd menu -> start preview
                        DCSetting_GetPreviewImgOSDMenuIndex(&img_osd_menu_cur_index, &img_osd_menu_left_index);
                        is_from_dc = (int)MMK_GetWinAddDataPtr(win_id);

                        DCAdap_StopPreview();

                        //释放左右软键行的注册,切换到设置栏
                        MMK_FreeSpecialButtonAction(win_id);

                        DCSetting_GetTrimRect(&trim_rect, &disp_rect, MMIDC_GetSettingInfo(), MMIDC_PREVIEW_NO_AF);

                        DrawImgOSDMenu(is_from_dc, img_osd_menu_cur_index, img_osd_menu_left_index, &disp_rect);

                        SCI_Sleep(MMIDC_PREVIEW_OSD_PROTECT_TIME);
                             
                        DCAdap_StartPreview();
                        break;

                    case PREVIEW_WIN_FULLSCREEN_IMAGE_OSDMENU://预览主屏全屏、图片OSD MENU
                        osd_menu_type = OSD_GetCurOSDMenuID();
                        switch(osd_menu_type)
                        {
                            case OSD_MENU_CONTRAST:
                                //do nothing
                                break;

                            case OSD_MENU_EFFECT:
                                Dc_OpenEffectSettingWin();
                                break;

                            case OSD_MENU_BRIGHTNESS:
                                //do nothing
                                break;

                            case OSD_MENU_MODE:
                                Dc_OpenModeSettingWin();
                                break;

                            case OSD_MENU_QUALITY:
                                Dc_OpenQualitySettingWin();
                                break;

                            case OSD_MENU_PHOTO_SIZE:
                                Dc_OpenSizeSettingWin();
                                break;

                            case OSD_MENU_VIDEO_SIZE:
                                Dc_OpenVideoSizeSettingWin();
                                break;

                            case OSD_MENU_SHUTTER_VOICE:
                                Dc_OpenShutterVoiceSettingWin();
                                break;

                            case OSD_MENU_OVERTIME:
                                Dc_OpenOverTimeSettingWin();
                                break;

                            case OSD_MENU_CIRCLE:
                                Dc_OpenCircleSettingWin();
                                break;

                            case OSD_MENU_FOCUS:
                                break;

                            case OSD_MENU_FLASH_ENABLED:
                                Dc_OpenFlashSettingWin();
                                break;

                            case OSD_MENU_CHARACTER:
                                Dc_OpenCaptureOSDSettingWin();
                                break;

                            case OSD_MENU_REC_SPEED:
                                Dc_OpenRecordSpeedSettingWin();
                                break;

                            case OSD_MENU_VOICE_REC_EN:
                                Dc_OpenVoiceRecSettingWin();
                                break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -