📄 mmidc_capture_wintab.c
字号:
/*****************************************************************************
** 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 + -