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

📄 mmidc_capture.c

📁 手机Camera部分上层软件代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/*****************************************************************************
** 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 + -