📄 mmidc_capture.c
字号:
/*****************************************************************************
** File Name: mmidc_capture.c *
** Author: *
** Date: 2005-8 *
** Copyright: 2003 Spreadtrum, Incorporated. All Rights Reserved. *
** Description: This file is used to describe dc capture *
*****************************************************************************
** Important Edit History *
** --------------------------------------------------------------------------*
** DATE NAME DESCRIPTION *
** 08/2005 Bruce.Chi Create *
*****************************************************************************/
#ifndef _MMIDC_CAPTURE_C_
#define _MMIDC_CAPTURE_C_
/**--------------------------------------------------------------------------*
** Include Files *
**--------------------------------------------------------------------------*/
#include "mmidc_internal.h"
#include "mmidisplay_data.h"
#include "mmi_id.h"
#ifdef _MMI_OCR
#ifdef WIN32
#include "mmiocr_win32_simu.h"
#else
#include "ocr_driver.h"
#include "thocr_lib.h"
#endif
#endif
/**--------------------------------------------------------------------------*
** MACRO DEFINITION *
**--------------------------------------------------------------------------*/
/**--------------------------------------------------------------------------*
** STATIC DEFINITION *
**--------------------------------------------------------------------------*/
static uint8 *s_jpg_buffer_ptr;
static uint32 s_jpg_buffer_len = 0;
/*---------------------------------------------------------------------------*/
/* TYPE AND CONSTANT */
/*---------------------------------------------------------------------------*/
/**--------------------------------------------------------------------------*
** EXTERNAL DECLARE *
**--------------------------------------------------------------------------*/
/**-------------------------------------------------------------------------*
** GLOBAL DEFINITION *
**--------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* LOCAL FUNCTION DECLARE */
/*---------------------------------------------------------------------------*/
/*****************************************************************************/
// Description : set capture param according to setting info
// Global resource dependence :
// Author: bruce.chi
// Note:
/*****************************************************************************/
LOCAL BOOLEAN DCAdap_SetCaptureParam(const MMIDC_SETTING_INFO_T *setting_ptr);
/*****************************************************************************/
// Description : set capture OSD
// Global resource dependence :
// Author: bruce.chi
// Note:
/*****************************************************************************/
LOCAL BOOLEAN DCAdap_SetCaptureOSD(MMIDC_SETTING_INFO_T *setting_ptr);
/*****************************************************************************/
// Description : set capture character OSD
// Global resource dependence :
// Author: bruce.chi
// Note:
/*****************************************************************************/
LOCAL int OSD_SetCharacterCapOSD(
int i_zone,
uint8 *str_ptr,
uint16 str_len,
BOOLEAN is_ucs2,
RECT_T *valid_rect_ptr
);
/*****************************************************************************/
// Description : use DC Driver interface to set sensor capture effect
// Global resource dependence :
// Author: bruce.chi
// Note: 顺序可以根据客户开发来调节
/*****************************************************************************/
LOCAL BOOLEAN DCAdap_SetALLSensorCaptureEffect(MMIDC_SETTING_INFO_T *setting_ptr);
/*****************************************************************************/
// Description : set capture param according to setting info
// Global resource dependence :
// Author: bruce.chi
// Note:
/*****************************************************************************/
LOCAL BOOLEAN DCAdap_SetCaptureParam(const MMIDC_SETTING_INFO_T *setting_ptr)
{
DC_CAPTURE_PARAM_T cap_param = {0};
RECT_T disp_rect = {0};
int32 i_target_width = 0;
int32 i_target_height = 0;
cap_param.i_sensor_sequence = DCAdap_GetSensorModeSequence(setting_ptr, MMIDC_CAPTURE_NO_AF);
DCSetting_GetTrimRect(&cap_param.st_trim_rect, &disp_rect, setting_ptr, MMIDC_CAPTURE_NO_AF);
cap_param.b_prefilter = setting_ptr->b_prefilter;
cap_param.i_smooth = setting_ptr->i_sooth;
switch(setting_ptr->e_quality)
{
case MMIDC_QUALITY_NORMAL:
cap_param.i_quality = PHOTO_LOW_QULITY;
break;
case MMIDC_QUALITY_HIGH:
cap_param.i_quality = PHOTO_HIGH_QULITY;
break;
default:
cap_param.i_quality = PHOTO_LOW_QULITY;
break;
}
GetCapTargetRect(setting_ptr->e_photo_size, &i_target_width, &i_target_height);
cap_param.w_target_width = (uint16)i_target_width;
cap_param.w_target_height = (uint16)i_target_height;
#ifndef _MMI_OCR
DC_SetCaptureParam(&cap_param);
#else
if (MMIOCR_Is_From_OCR())
{
OCR_SetCaptureParam(&cap_param);
}
else
{
DC_SetCaptureParam(&cap_param);
}
#endif
DCAdap_SetALLSensorCaptureEffect((MMIDC_SETTING_INFO_T *)setting_ptr);
return TRUE;
}
/*****************************************************************************/
// Description : use DC Driver interface to set sensor capture effect
// Global resource dependence :
// Author: bruce.chi
// Note: 顺序可以根据客户开发来调节
/*****************************************************************************/
LOCAL BOOLEAN DCAdap_SetALLSensorCaptureEffect(MMIDC_SETTING_INFO_T *setting_ptr)
{
DC_SENSOR_MODE_E e_sensor_sequence = 0;
//i_contrast、e_effect 和 i_brightness先后起作用
e_sensor_sequence = DCAdap_GetSensorBrightnessSequence(setting_ptr);
DC_SetImageEffect(e_sensor_sequence);
e_sensor_sequence = DCAdap_GetSensorContrastSequence(setting_ptr);
DC_SetImageEffect(e_sensor_sequence);
e_sensor_sequence = DCAdap_GetSensorSepiaSequence(setting_ptr);
DC_SetImageEffect(e_sensor_sequence);
return TRUE;
}
/*****************************************************************************/
// Description : set capture OSD
// Global resource dependence :
// Author: bruce.chi
// Note:
/*****************************************************************************/
LOCAL BOOLEAN DCAdap_SetCaptureOSD(MMIDC_SETTING_INFO_T *setting_ptr)
{
uint8 osd_enable_flag = 0;
int i = 0;
int char_number = 0;
RECT_T disp_rect = {0};
RECT_T trim_rect = {0};
SCI_DATE_T cur_date = {0};
char date_str[MAX_OSD_STRING_NUM + 1] = {0};
if (setting_ptr->st_preview_osd_info.e_circle_osd_index != MMIDC_CIRCLE_NONE)
{
//osd circle enabled, osd character will not take effect
//get rect
DCSetting_GetTrimRect(&trim_rect, &disp_rect, setting_ptr, MMIDC_CAPTURE_OSD);
//enable osd
DrawImgOSDCircle(setting_ptr->st_preview_osd_info.e_circle_osd_index, &trim_rect);
}
else
{
switch(setting_ptr->st_cap_osd_info.e_osd_type)
{
case CAPTURE_OSD_NONE:
//disable all osd slot
DC_SetOsdEnableMode(0x00);
break;
case CAPTURE_OSD_TIME:
//get current date and make string
TM_GetSysDate(&cur_date);
sprintf(date_str, "%02d.%02d", cur_date.mon, cur_date.mday);
char_number = strlen(date_str);
DC_ASSERT_LOW(char_number < sizeof(date_str));
osd_enable_flag = 0;
for(i = 0; i < char_number; i++)
{
osd_enable_flag |= (1 << i);
}
DC_SetOsdEnableMode(osd_enable_flag);
MMIDC_SetCharacterOSDPallete();
//set osd string image
DCSetting_GetTrimRect(&trim_rect, &disp_rect, setting_ptr, MMIDC_CAPTURE_OSD);
OSD_SetCharacterCapOSD(
0,
(uint8 *)date_str,
char_number,
FALSE,
&trim_rect
);
break;
case CAPTURE_OSD_CHARACTER:
SCI_ASSERT(setting_ptr->st_cap_osd_info.str_len <= (MAX_OSD_STRING_NUM * 2));
//set osd enable mode
if (setting_ptr->st_cap_osd_info.is_ucs2)
{
char_number = setting_ptr->st_cap_osd_info.str_len / 2;
}
else
{
char_number = setting_ptr->st_cap_osd_info.str_len;
}
osd_enable_flag = 0;
for(i = 0; i < char_number; i++)
{
osd_enable_flag |= (1 << i);
}
DC_SetOsdEnableMode(osd_enable_flag);
MMIDC_SetCharacterOSDPallete();
//set osd string image
DCSetting_GetTrimRect(&trim_rect, &disp_rect, setting_ptr, MMIDC_CAPTURE_OSD);
OSD_SetCharacterCapOSD(
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -