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

📄 camwin_style2.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
📖 第 1 页 / 共 3 页
字号:

    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 + -