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

📄 mmidc_capture_wintab.c

📁 手机Camera部分上层软件代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/*****************************************************************************
** File Name:      mmidc_capture_wintab.c                                    *
** Author:                                                                   *
** Date:           2005-8	                                                 *
** Copyright:      2003 Spreadtrum, Incorporated. All Rights Reserved.         *
** Description:    This file is used to describe dc capture window table     *
*****************************************************************************
**                         Important Edit History                            *
** --------------------------------------------------------------------------*
** DATE           NAME             DESCRIPTION                               *
** 08/2005       Bruce.Chi           Create									 *
*****************************************************************************/
#ifndef _MMIDC_CAPTURE_WINTAB_C_
#define _MMIDC_CAPTURE_WINTAB_C_

/**--------------------------------------------------------------------------*
 **                         Include Files                                    *
 **--------------------------------------------------------------------------*/
#include "mmidc_internal.h"
#include "mmidisplay_data.h"
#include "mmi_id.h"
#include "window_parse.h"
#include "mmi_menutable.h"
#include "mmi_pubwin.h"
#include "mmi_common.h"
#include "mmi_default.h"
#include "mmi_subwintab.h"
#include "dal_lcd.h"
#ifdef _MMI_OCR
    #include "mmiocr_internal.h"
    #include "mmiocr_id.h"
#ifdef WIN32
    #include "mmiocr_win32_simu.h"
#else
    #include "ocr_driver.h"
    #include "thocr_lib.h" 
#endif
#endif

/**--------------------------------------------------------------------------*
 **                         MACRO DEFINITION                                 *
 **--------------------------------------------------------------------------*/
#ifdef LCD_176_220
#define MMIDC_CAPTURE_OK_TEXT_WIDTH  32      
#define MMIDC_CAPTURE_CANCEL_TEXT_WIDTH  32 
#define MMIDC_CAPTURE_OK_TEXT_HEIGHT 16
#define MMIDC_CAPTURE_CANCEL_TEXT_HEIGHT 16
#elif defined(_LCD_QVGA_)
#define MMIDC_CAPTURE_OK_TEXT_WIDTH  32      
#define MMIDC_CAPTURE_CANCEL_TEXT_WIDTH  32 
#define MMIDC_CAPTURE_OK_TEXT_HEIGHT 16
#define MMIDC_CAPTURE_CANCEL_TEXT_HEIGHT 16
#elif defined LCD_128_160
#define MMIDC_CAPTURE_OK_TEXT_WIDTH  32      
#define MMIDC_CAPTURE_CANCEL_TEXT_WIDTH  32 
#define MMIDC_CAPTURE_OK_TEXT_HEIGHT 16
#define MMIDC_CAPTURE_CANCEL_TEXT_HEIGHT 16
#endif


/**--------------------------------------------------------------------------*
 **                         STATIC DEFINITION                                *
 **--------------------------------------------------------------------------*/


/*---------------------------------------------------------------------------*/
/*                          TYPE AND CONSTANT                                */
/*---------------------------------------------------------------------------*/


/**--------------------------------------------------------------------------*
 **                         EXTERNAL DECLARE                                 *
 **--------------------------------------------------------------------------*/
extern RECT_T                           s_osd_char_disp_rect;

 
 /**-------------------------------------------------------------------------*
 **                         GLOBAL DEFINITION                                *
 **--------------------------------------------------------------------------*/


/*---------------------------------------------------------------------------*/
/*                          LOCAL FUNCTION DECLARE                           */
/*---------------------------------------------------------------------------*/

/*****************************************************************************/
// 	Description : handle the message of shoot window
//	Global resource dependence : g_mmidc_jpeg
//  Author: figo.feng
//	Note:
/*****************************************************************************/
LOCAL MMI_RESULT_E HandleCaptureWinMsg(
									 MMI_WIN_ID_T	win_id, 
									 MMI_MESSAGE_ID_E	msg_id, 
									 DPARAM				param
									 );

/*****************************************************************************/
// 	Description : Handle_TP_Button_Register
//         
//	Global resource dependence : 
//   Author:        bown.zhang
//	Note:   
/*****************************************************************************/
LOCAL void Handle_TP_Button_Register(MMI_WIN_ID_T	win_id);

/*****************************************************************************/
// 	Description : capture one photo
//	Global resource dependence : 
//  Author: bruce.chi
//	Note:
/*****************************************************************************/
LOCAL BOOLEAN CaptureOnePhoto(uint8 **jpg_ptr_ptr,
							  uint32 *jpg_len_ptr
							  );





//the window for shoot
WINDOW_TABLE(MMIDC_SHOOTWIN_TAB) = 
{
    CLEAR_LCD,
    WIN_PRIO(WIN_ONE_LEVEL),
    WIN_FUNC((uint32)HandleCaptureWinMsg),    
    WIN_ID(MMIDC_SHOOT_WIN_ID),
    END_WIN
};


/*****************************************************************************/
// 	Description : handle the message of shoot window
//	Global resource dependence : g_mmidc_jpeg
//  Author: figo.feng
//	Note:
/*****************************************************************************/
LOCAL MMI_RESULT_E HandleCaptureWinMsg(
											 MMI_WIN_ID_T	win_id, 
											 MMI_MESSAGE_ID_E	msg_id, 
											 DPARAM				param
											 )
{
	MMI_RESULT_E	recode = MMI_RESULT_TRUE;
	
	static uint8	*s_jpg_ptr = PNULL;
	static uint32	s_jpg_len = 0;

	MMIDC_REVIEW_PHOTO_INFO_T	st_review_info = {0};

	MMIDC_SETTING_INFO_T		*setting_ptr = PNULL;
	BOOLEAN	 is_flip_up	= FALSE;

	switch(msg_id)
    {
	case MSG_OPEN_WINDOW:
		s_jpg_ptr = PNULL;
		s_jpg_len = 0;

		//display waiting on LCD
		setting_ptr = MMIDC_GetSettingInfo();
		DisplayCaptureWaitingStr(setting_ptr->e_lcd);
       	Handle_TP_Button_Register(win_id);

		if ( !CaptureOnePhoto(&s_jpg_ptr, &s_jpg_len))
		{
			PUBWIN_OpenPromptAlertWin(PUBWIN_SOFTKEY_ONE, TXT_BROWSER_DATA_ERROR, IMAGE_PROMPT_ICON_FAIL, MMI_3SECONDS, PNULL);
			MMK_CloseWin(win_id);
		}
        DCAdap_DCClose();
			break;

    case MSG_FULL_PAINT: 
        MMIDEFAULT_SetBackLight(TRUE);		//点亮背光
        MMIDEFAULT_AllowBackLight(FALSE);	//背光常开
       
		
		break;

	case MSG_KEYUP_FLIP:
		SCI_TRACE_LOW("MMIDC_capture: flip MMIDEFAULT_GetFlipStatus=%d", MMIDEFAULT_GetFlipStatus());
		//DC Close
		DCAdap_DCClose();

		//allow sublcd to update and update sublcd 
		MMISUB_IsPermitUpdate(TRUE);
		MMISUB_UpdateDisplaySubLcd();

		//flip sound
		MMIDEFAULT_HandleFlipKey(TRUE);

		//review
		if (s_jpg_ptr != PNULL)
		{

			//draw background in mainlcd
			DrawDefaultBackGroud(MAIN_LCD_ID);

			//DC Open
			DCAdap_DCOpen();

			if(DCAdap_GetZoomLevel() > 0)
			{
				setting_ptr = MMIDC_GetSettingInfo();
				GetCapZoomTrimRect(setting_ptr->e_photo_size,&st_review_info.width,&st_review_info.height);
				SCI_TRACE_LOW("HandleCaptureWinMsg: %d, %d", st_review_info.width,\
																	st_review_info.height);
			}
			
			st_review_info.i_lcd			= MAIN_LCD_ID;
			st_review_info.photo_ptr		= s_jpg_ptr;
			st_review_info.photo_len		= s_jpg_len;
			st_review_info.e_review_from	= PHOTO_REVIEW_FROM_CAPTURE;
			st_review_info.e_review_type	= REVIEW_WHOLE_PHOTO;
			st_review_info.x_start			= 0;
			st_review_info.y_start			= 0;

			if (!MMIDC_ReviewPhoto(&st_review_info))
			{
				SCI_TRACE_LOW("mmidc_capture_wintab.c:HandleCaptureWinMsg, review failed");
			}

			//DC Close
			DCAdap_DCClose();
		}
		break;
		
    case MSG_GET_FOCUS:
		//review
		if (s_jpg_ptr != PNULL)
		{
                    //display waiting on LCD
                    is_flip_up = MMIDEFAULT_GetFlipStatus();
			//forbid sub lcd to update
			MMISUB_IsPermitUpdate(FALSE);

			//draw background in mainlcd
                    if (is_flip_up)
                    {
                        DrawDefaultBackGroud(MAIN_LCD_ID);
                        //DC Open
                        DCAdap_DCOpen();
                        
                        if(DCAdap_GetZoomLevel() > 0)
                        {
                             setting_ptr = MMIDC_GetSettingInfo();
                             GetCapZoomTrimRect(setting_ptr->e_photo_size,&st_review_info.width,&st_review_info.height);
                             SCI_TRACE_LOW("HandleCaptureWinMsg: %d, %d", st_review_info.width,\
                        												st_review_info.height);
                        }
						
                        st_review_info.i_lcd = MAIN_LCD_ID;
                        st_review_info.photo_ptr		= s_jpg_ptr;
                        st_review_info.photo_len		= s_jpg_len;
                        st_review_info.e_review_from	= PHOTO_REVIEW_FROM_CAPTURE;
                        st_review_info.e_review_type	= REVIEW_WHOLE_PHOTO;
                        st_review_info.x_start			= 0;
                        st_review_info.y_start			= 0;

                        if (!MMIDC_ReviewPhoto(&st_review_info))
                        {
                            SCI_TRACE_LOW("mmidc_capture_wintab.c:HandleCaptureWinMsg, review failed");
                        }
                    }
                    else
                    {
                        DrawDefaultBackGroud(SUB_LCD_ID);
                        //DC Open
                        DCAdap_DCOpen();
                        
                        if(DCAdap_GetZoomLevel() > 0)
                        {
							setting_ptr = MMIDC_GetSettingInfo();
							GetCapZoomTrimRect(setting_ptr->e_photo_size,&st_review_info.width,&st_review_info.height);
							SCI_TRACE_LOW("HandleCaptureWinMsg: %d, %d", st_review_info.width,\
																		st_review_info.height);
                        }
                        st_review_info.i_lcd = SUB_LCD_ID;
                        st_review_info.photo_ptr		= s_jpg_ptr;
                        st_review_info.photo_len		= s_jpg_len;
                        st_review_info.e_review_from	= PHOTO_REVIEW_FROM_CAPTURE;
                        st_review_info.e_review_type	= REVIEW_WHOLE_PHOTO;
                        st_review_info.x_start			= 0;
                        st_review_info.y_start			= 0;

                        if (!MMIDC_ReviewPhoto(&st_review_info))
                        {
                            SCI_TRACE_LOW("mmidc_capture_wintab.c:HandleCaptureWinMsg, review failed");
                        }

                        SCI_Sleep(100);

                        DrawDefaultBackGroud(MAIN_LCD_ID);

                        st_review_info.i_lcd = MAIN_LCD_ID;
                        st_review_info.photo_ptr		= s_jpg_ptr;
                        st_review_info.photo_len		= s_jpg_len;
                        st_review_info.e_review_from	= PHOTO_REVIEW_FROM_CAPTURE;
                        st_review_info.e_review_type	= REVIEW_WHOLE_PHOTO;
                        st_review_info.x_start			= 0;
                        st_review_info.y_start			= 0;

                        if (!MMIDC_ReviewPhoto(&st_review_info))
                        {
                            SCI_TRACE_LOW("mmidc_capture_wintab.c:HandleCaptureWinMsg, review failed");
                        }
                    }
			//DC Close
			DCAdap_DCClose();
		}
        break;
	
    case MSG_LOSE_FOCUS:
		//DC Close
		DCAdap_DCClose();

		//allow sublcd to update and update sublcd 
		MMISUB_IsPermitUpdate(TRUE);
		MMISUB_UpdateDisplaySubLcd();
        break;

    case MSG_APP_OK:
			if(!MMI_GetSDStatus()&&!MMI_GetUdiskStatus())
			{
				PUBWIN_OpenPromptAlertWin(PUBWIN_SOFTKEY_ONE, TXT_SDCARD_NO_EXIST, IMAGE_PROMPT_ICON_WRONG, MMI_3SECONDS, PNULL);
			}
			else
			{
				MMIDC_OpenInputNameWin(MMIDC_INVALID_PHOTO_INDEX);
			}
        break;

    case MSG_APP_CANCEL:
		//close this win
		MMK_CloseWin(win_id);
        break;

    case MSG_CLOSE_WINDOW:
//		if(MMIDC_GetIsShutterVoice())//有快门声音
//		{
//            MMISET_StopRing(MMISET_RING_TYPE_DC);
//		}

		//query DCAM status, if decode has not finished , do not allow user to close this window
// 		dc_status = DC_QueryStatus(); LATER
//		if ((dc_status & DC_STATUS_REVIEWING) != 0)
//		{
//			//this means it is decoding
//		}
//		else
		{
			//free snap shot data
			if (s_jpg_ptr != PNULL)
			{
				DCAdap_FreeSnapshotData();
				s_jpg_ptr = PNULL;
				s_jpg_len = 0;
			}
                    MMK_FreeSpecialButtonAction(win_id);

			MMIDEFAULT_AllowBackLight(TRUE);
		}
        break;

	default:
		recode = MMI_RESULT_FALSE;
		break;
	}
	return recode;
}


/*****************************************************************************/
// 	Description : open capture window
//	Global resource dependence : 
//  Author: bruce.chi
//	Note:
/*****************************************************************************/

⌨️ 快捷键说明

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