📄 camwin_style2.c
字号:
DialogTick = tick;
#if (CAM_DIALOG_METHOD == CAM_DIALOG_PIC)
AlphaDraw16bitBmpId(CAM_DIALOG_X, CAM_DIALOG_Y, dialog_pic[dialogtype],NULL,DSPM_Transp);
#elif (CAM_DIALOG_METHOD == CAM_DIALOG_STR)
AlphaDrawStringIdEx(CAM_DIALOG_X, CAM_DIALOG_Y,CAM_DIALOG_W,SID_Cam_SaveSuccess+dialogtype, Font16X16, &gCamStrColorSel, 0);
#endif
Cam_WinOSDPaint(TRUE);
DialogTimerHandle = RockStartTimerEx(200*tick, Cam_WinDialogDestroy, NULL, INVALID_PHANDLE );
}
/*----------------------------------------------------------
*Name : Cam_WinProcessTick
*Desc : 进度条回调函数
*Params:
*return:
-----------------------------------------------------------*/
void Cam_WinProcessTick(void* arg)
{
#if (CAM_DIALOG_METHOD == CAM_DIALOG_PIC)
if ( ++gCamProcess.curPoint >= CAM_PROCESS_STEP )
{
gCamProcess.curPoint = 0;
}
AlphaDraw16bitBmpId(gCamProcess.rect.x, gCamProcess.rect.y, BID_Cam_DialogWait0+gCamProcess.curPoint,NULL,DSPM_Transp);
Cam_WinOSDPaint(TRUE);
#endif
}
/*----------------------------------------------------------
*Name : Cam_WinProcessStart
*Desc : 进度条显示开始
*Params:
*return:
-----------------------------------------------------------*/
void Cam_WinProcessStart(INT16U x, INT16U y)
{
#if (CAM_DIALOG_METHOD == CAM_DIALOG_PIC)
if ( !gCamProcess.processHandle )
{
gCamProcess.curPoint = 0;
gCamProcess.rect.x = x;
gCamProcess.rect.y = y;
gCamProcess.rect.h =CAM_PROCESSBAR_H;
gCamProcess.rect.w = CAM_PROCESSBAR_W;
Cam_WinDialogDestroy(NULL);
AlphaDraw16bitBmpId(gCamProcess.rect.x, gCamProcess.rect.y, BID_Cam_DialogWait0,NULL,DSPM_Transp);
gCamProcess.processHandle = RockStartTimerEx(60, Cam_WinProcessTick, NULL, INVALID_PHANDLE );
Cam_WinOSDPaint(TRUE);
}
#elif (CAM_DIALOG_METHOD == CAM_DIALOG_STR)
Cam_WinDialogDestroy(NULL);
AlphaDrawStringIdEx(CAM_DIALOG_X, CAM_DIALOG_Y, CAM_DIALOG_W, SID_Cam_Wait, Font16X16, &gCamStrColorSel, 0);
Cam_WinOSDPaint(TRUE);
#endif
}
/*----------------------------------------------------------
*Name : Cam_WinProcessStop
*Desc : 进度条显示结束
*Params:
*return:
-----------------------------------------------------------*/
void Cam_WinProcessStop(void)
{
#if (CAM_DIALOG_METHOD == CAM_DIALOG_PIC)
if ( gCamProcess.processHandle )
{
RockStopTimer(gCamProcess.processHandle);
AlphaClearGui(&gCamProcess.rect, 0);
Cam_WinOSDPaint(TRUE);
gCamProcess.processHandle = NULL;
}
#elif (CAM_DIALOG_METHOD == CAM_DIALOG_STR)
UHRECT rect;
rect.x = CAM_DIALOG_X;
rect.y = CAM_DIALOG_Y;
rect.w = CAM_DIALOG_W;
rect.h = CAM_DIALOG_H;
AlphaClearGui(&rect, 0);
Cam_WinOSDPaint(TRUE);
#endif
}
/*****************************************************************************/
//OSD MENU 相关接口
/*----------------------------------------------------------
*Name : Cam_WinCreateMenu
*Desc : 创建一个子菜单OSD
*Params:
*return: 是否成功
-----------------------------------------------------------*/
void Cam_WinCreateMenu( CAM_MENU * menu, INT16U itemRes, char curItem, char itemCnt, ITEMSELHOOK hook )
{
menu->curItem = curItem;
menu->preItem = menu->curItem;
menu->itemCnt = itemCnt;
menu->itemSelectHook = hook;
menu->menuItemsRes = itemRes;
}
/*----------------------------------------------------------
*Name : Cam_WinOSDMenuCreate
*Desc : OSD 菜单的生成
*Params:
*return: 是否成功
-----------------------------------------------------------*/
void Cam_WinOSDMenuCreate(void)
{
/*先建子菜单*/
Cam_WinCreateMenu( &gCamMenuSub[eCamPixel], SID_Cam_Pixel_320240,pgCameraConfig->DcImagePixel,
CAM_PIXEL_CNT, Cam_WinSettingPixelHook );
Cam_WinCreateMenu( &gCamMenuSub[eCamBrightness], SID_Cam_BL_Low,pgCameraConfig->backlight,
CAM_BLIGHT_CNT, Cam_WinSettingBlightHook );
Cam_WinCreateMenu( &gCamMenuSub[eCamZoom], SID_Cam_Zoom_0,pgCameraConfig->zoom,
CAM_ZOOM_CNT, Cam_WinSettingZoomHook );
Cam_WinCreateMenu( &gCamMenuSub[eCamMode], SID_Cam_Effect_Normal,pgCameraConfig->mode,
CAM_MODE_CNT, Cam_WinSettingEffectHook );
Cam_WinCreateMenu( &gCamMenuSub[eCamSaturation], SID_Cam_staturation0,pgCameraConfig->staturation,
CAM_SATURATION_CNT, Cam_WinSettingSaturationHook );
Cam_WinCreateMenu( &gCamMenuSub[eCamBw], SID_Cam_BW_Auto,pgCameraConfig->bw,
CAM_BW_CNT, NULL );
Cam_WinCreateMenu( &gCamMenuSub[eCamScenMode], SID_Cam_Scenery0 ,pgCameraConfig->ScenMode,
CAM_SCENMODE_CNT, Cam_WinSettingModeHook );
Cam_WinCreateMenu( &gCamMenuSub[eCamStorage], SID_Cam_Storage_Flash,pgCameraConfig->Storage,
CAM_STORAGE_CNT, Cam_WinSettingFilePathHook);
/*创建主菜单*/
Cam_WinCreateMenu( &gCamMenuRoot, BID_Cam_OSD_0_Pixel_0, eCamPixel, eCamMax, NULL );
}
/*----------------------------------------------------------
*Name : Cam_WinDrawTime
*Desc : 显示时间,参数单位 s
*Params:
*return:
-----------------------------------------------------------*/
void Cam_WinDrawTime(INT16U x, INT16U y, INT32U sTime )
{
static char tr_str[9];
UHRECT rect;
rect.x = x;
rect.y = y;
rect.w = CAM_OSD_STATEBAR_DVTIME_W;
rect.h = CAM_OSD_STATEBAR_DVTIME_H;
AlphaClearGui(&rect,0); /* 清屏操作 */
tr_str[0] = sTime/3600;
tr_str[3] = (sTime%3600)/60;
tr_str[6] = sTime%60;
tr_str[1] = tr_str[0]%10 + 0x30;
tr_str[0] = tr_str[0]/10 + 0x30;
tr_str[4] = tr_str[3]%10 + 0x30;
tr_str[3] = tr_str[3]/10 + 0x30;
tr_str[7] = tr_str[6]%10 + 0x30;
tr_str[6] = tr_str[6]/10 + 0x30;
if (sTime == 0)
{
tr_str[2] = ':';
tr_str[5] = ':';
}
tr_str[8] = '\0';
AlphaDrawStringAsii( x, y, CAM_OSD_STATEBAR_DVTIME_W,tr_str, Font16X16,&gCamStrColorSel,0); //always update
Cam_WinOSDPaint(TRUE);
}
/*----------------------------------------------------------
*Name : Cam_WinMenuKeyUp
*Desc : OSD菜单项的Keyup消息处理
*Params:
*return:
-----------------------------------------------------------*/
void Cam_WinMenuKeyUp(void)
{
CAM_MENU * menu = &gCamMenuSub[gCamMenuRoot.curItem];
menu->preItem = menu->curItem;
if ( menu->curItem >= menu->itemCnt - 1 )
menu->curItem = 0;
else
menu->curItem ++;
Cam_WinRootItemSelect();
}
/*----------------------------------------------------------
*Name : Cam_WinMenuKeyDown
*Desc : OSD菜单项的KeyDown消息处理
*Params:
*return:
-----------------------------------------------------------*/
void Cam_WinMenuKeyDown(void)
{
CAM_MENU * menu = &gCamMenuSub[gCamMenuRoot.curItem];
menu->preItem = menu->curItem;
if ( menu->curItem )
menu->curItem--;
else
menu->curItem = menu->itemCnt-1;
Cam_WinRootItemSelect();
}
/*----------------------------------------------------------
*Name : Cam_WinMenuKeyPre
*Desc : OSD菜单项的KeyPre消息处理
*Params:
*return:
-----------------------------------------------------------*/
void Cam_WinMenuKeyPre(void)
{
CAM_MENU * menu = &gCamMenuRoot;
menu->preItem = menu->curItem;
if ( menu->curItem )
menu->curItem --;
else
menu->curItem = menu->itemCnt-1;
Cam_WinRootItemSelect( );
}
/*----------------------------------------------------------
*Name : Cam_WinMenuKeyNext
*Desc : OSD菜单项的KeyNext消息处理
*Params:
*return:
-----------------------------------------------------------*/
void Cam_WinMenuKeyNext(void)
{
CAM_MENU * menu = &gCamMenuRoot;
menu->preItem = menu->curItem;
if ( menu->curItem >= menu->itemCnt - 1)
menu->curItem = 0;
else
menu->curItem ++;
Cam_WinRootItemSelect( );
}
/*----------------------------------------------------------
*Name : Cam_WinSettingFilePathHook
*Desc :
*Params:
*return:
-----------------------------------------------------------*/
int Cam_WinSettingFilePathHook( INT8U patch )
{
CAM_MENU * menu = &gCamMenuSub[7];
#if 0
if ((FALSE == SDCardInsert) && (eCamCard == patch))
{
menu->curItem = eCamFlash;
}
else
{
return Cam_FilePathSetup((CAM_STORAGE_TYPE)(patch));
}
#endif
menu->curItem = eCamFlash;
return 0;
}
/*----------------------------------------------------------
*Name : Cam_WinSettingPixelHook
*Desc : OSD菜单项的KeyNext消息处理
*Params:
*return:
-----------------------------------------------------------*/
int Cam_WinSettingPixelHook( INT8U pixel )
{
return 0;
}
int Cam_WinSettingZoomHook( INT8U level )
{
int ret = 1;
Cam_PreviewPause();
if (gCamera.sensorIf.Sensor_Set_Zoom)
ret = gCamera.sensorIf.Sensor_Set_Zoom(level);
Cam_PreviewStart(eSensor);
return ret;
}
int Cam_WinSettingBlightHook( INT8U level )
{
int ret = 1;
if (gCamera.sensorIf.Sensor_Set_Brightness)
ret = gCamera.sensorIf.Sensor_Set_Brightness(level);
return ret;
}
int Cam_WinSettingContrastHook( INT8U level )
{
int ret = 1;
if (gCamera.sensorIf.Sensor_Set_Contrast)
ret = gCamera.sensorIf.Sensor_Set_Contrast(level);
return ret;
}
int Cam_WinSettingSaturationHook( INT8U level )
{
int ret = 1;
if (gCamera.sensorIf.Sensor_Set_Saturation)
ret = gCamera.sensorIf.Sensor_Set_Saturation(level);
return ret;
}
int Cam_WinSettingModeHook( INT8U level )
{
int ret = 1;
if (gCamera.sensorIf.Sensor_Set_SceneryMode)
ret = gCamera.sensorIf.Sensor_Set_SceneryMode(level);
return ret;
}
int Cam_WinSettingEffectHook( INT8U level )
{
int ret = 1;
if (gCamera.sensorIf.Sensor_Set_Effect)
ret = gCamera.sensorIf.Sensor_Set_Effect(level);
return ret;
}
int Cam_WinSettingQualityHook( INT8U level )
{
return 0;
}
/*----------------------------------------------------------
*Name : Cam_WinOSDItemSelect
*Desc : OSD菜单项的选种操作
*Params:
*return:
-----------------------------------------------------------*/
void Cam_WinOSDItemSelect(CAM_MENU * menu)
{
INT8U *pConfig = (INT8U *)(pgCameraConfig);
#if (REGISTER_METHOD == eRegisterNew)
pConfig += 36;
#endif
if ( *(pConfig+gCamMenuRoot.curItem) != menu->curItem )
{
#if CAM_SENSOR
if ( menu->itemSelectHook )
menu->itemSelectHook(menu->curItem);
#endif
*(pConfig+gCamMenuRoot.curItem) = menu->curItem;
}
}
/*----------------------------------------------------------
*Name : Cam_WinRootItemSelect
*Desc : OSD菜单项的选种操作
*Params:
*return:
-----------------------------------------------------------*/
void Cam_WinRootItemSelect(void)
{
CAM_MENU * menu = &gCamMenuSub[gCamMenuRoot.curItem];
Cam_WinSubMenuUpdate( menu, TRUE );
Cam_WinOSDItemSelect( menu );
}
/*----------------------------------------------------------
*Name : Cam_WinRootMenuUpdate
*Desc : 一级菜单刷新
*Params:
*return:
-----------------------------------------------------------*/
void Cam_WinRootMenuUpdate( CAM_MENU * menu, BOOLEAN bFullUpdate )
{
int i;
if ((menu->curItem == (eCamMax-1)) && (menu->preItem < menu->curItem))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -