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

📄 ui_flow_menu.c

📁 其乐达(Cheertek)LCD驱动芯片(CT675)的C51源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
    gbFocusItemIdx = 0;

    for(i = 0; i < MENU_PICTURE_ITEM_MAX; i++)
        UI_FL_PictureDrawItem(i, ( (i == 0) ? FOCUS_COLOR : UNFOCUS_COLOR ) );
}

/***************************************************************************/
void UI_FL_PictureProc(BYTE bKey)
{
#if(UART_DEBUG_MSG)
    printf("...main_menu_proc(%02X)\n", (int)bKey);
#endif // UART_DEBUG_MSG

    switch(bKey)
    {
        case KEY_LEFT:
        case KEY_EXIT:
            API_OSD_ClearArea(0, MENU_PICTURE_ITEM_MAX + 1, 0, 11, OSD_BLACK);
            UI_FLC_ReturnLastState();
            break;

        case KEY_UP:
            UI_FL_PictureDrawItem(gbFocusItemIdx, UNFOCUS_COLOR);

            if(gbFocusItemIdx)  gbFocusItemIdx--;
            else                gbFocusItemIdx = MENU_PICTURE_ITEM_MAX - 1;

            UI_FL_PictureDrawItem(gbFocusItemIdx, FOCUS_COLOR);
            break;

        case KEY_DOWN:
            UI_FL_PictureDrawItem(gbFocusItemIdx, UNFOCUS_COLOR);

            gbFocusItemIdx++;
            if(gbFocusItemIdx == MENU_PICTURE_ITEM_MAX) gbFocusItemIdx = 0;

            UI_FL_PictureDrawItem(gbFocusItemIdx, FOCUS_COLOR);
            break;

        case KEY_RIGHT:
        case KEY_MENU:
            UI_FLC_EnterNewState(FS_PICTURE_BRIGHTNESS + gbFocusItemIdx);
            break;

        default:
            break;
    }
}

/***************************************************************************/
void UI_FL_PicBrightnessInit(void)
{
    BYTE bval;

#if(UART_DEBUG_MSG)
    printf("......picture_brightness_init\n");
#endif // UART_DEBUG_MSG

    // 2's complement
    bval = gScalerPara.bBrightness + 0x80;
    _AdjItemWindowInit(MPictureItemStr1, bval);
}

void UI_FL_PicBrightnessProc(BYTE bKey)
{
    BYTE bval;
#if(UART_DEBUG_MSG)
    printf("......picture_brightness_proc(%02X)\n", (int)bKey);
#endif // UART_DEBUG_MSG

    if(bKey == KEY_LEFT || bKey == KEY_RIGHT)
    {
        // 2's complement
        bval = gScalerPara.bBrightness + 0x80;
        bval = _AdjItemWindowProc(bKey, 4, bval) + 0x80;
        gScalerPara.bBrightness = bval;
        API_CTRL_ScalerColorEnhance();
    }
    else if(bKey == KEY_EXIT)
    {
        // Save parameter
        _ItemWindowExit();
    }
}

/***************************************************************************/
void UI_FL_PicContrastInit(void)
{
#if(UART_DEBUG_MSG)
    printf("......picture_contrast_init\n");
#endif // UART_DEBUG_MSG

    _AdjItemWindowInit(MPictureItemStr2, gScalerPara.bContrast);
}

void UI_FL_PicContrastProc(BYTE bKey)
{
#if(UART_DEBUG_MSG)
    printf("......picture_contrast_proc(%02X)\n", (int)bKey);
#endif // UART_DEBUG_MSG

    if(bKey == KEY_LEFT || bKey == KEY_RIGHT)
    {
        gScalerPara.bContrast = _AdjItemWindowProc(bKey, 4, gScalerPara.bContrast);
        API_CTRL_ScalerColorEnhance();
    }
    else if(bKey == KEY_EXIT)
    {
        // Save parameter
        _ItemWindowExit();
    }
}

/***************************************************************************/
void UI_FL_PicHueInit(void)
{
    BYTE bval;

#if(UART_DEBUG_MSG)
    printf("......picture_hue_init\n");
#endif // UART_DEBUG_MSG

    // 2's complement
    bval = (BYTE)(((WORD)(gScalerPara.bHue) << 7) / 30) + 0x80;
    _AdjItemWindowInit(MPictureItemStr3, bval);
}

void UI_FL_PicHueProc(BYTE bKey)
{
    BYTE bval;

#if(UART_DEBUG_MSG)
    printf("......picture_hue_proc(%02X)\n", (int)bKey);
#endif // UART_DEBUG_MSG

    if(bKey == KEY_LEFT || bKey == KEY_RIGHT)
    {
        // 2's complement
        bval = gScalerPara.bHue;

        if(bval > 0x80)
            bval = (BYTE)(((WORD)(bval - 0xE0) << 8) / 64);
        else
            bval = (BYTE)(((WORD)bval << 8) / 64) + 0x80;

        bval = _AdjItemWindowProc(bKey, 4, bval);

        if(bval > 0x80)
            bval = (BYTE)(((WORD)(bval - 0x80) * 64) >> 8);
        else
            bval = (BYTE)((WORD)(bval * 64) >> 8) + 0xE0;

        gScalerPara.bHue = bval;
        API_CTRL_ScalerColorEnhance();
    }
    else if(bKey == KEY_EXIT)
    {
        // Save parameter
        _ItemWindowExit();
    }
}

/***************************************************************************/
void UI_FL_PicSaturationInit(void)
{
#if(UART_DEBUG_MSG)
    printf("......picture_saturation_init\n");
#endif // UART_DEBUG_MSG

    _AdjItemWindowInit(MPictureItemStr4, gScalerPara.bSaturation);
}

void UI_FL_PicSaturationProc(BYTE bKey)
{
#if(UART_DEBUG_MSG)
    printf("......picture_saturation_proc(%02X)\n", (int)bKey);
#endif // UART_DEBUG_MSG

    if(bKey == KEY_LEFT || bKey == KEY_RIGHT)
    {
        gScalerPara.bSaturation = _AdjItemWindowProc(bKey, 8, gScalerPara.bSaturation);
        API_CTRL_ScalerColorEnhance();
    }
    else if(bKey == KEY_EXIT)
    {
        // Save parameter
        _ItemWindowExit();
    }
}

/***************************************************************************/
void UI_FL_PicSharpnessInit(void)
{
#if(UART_DEBUG_MSG)
    printf("......picture_sharpness_init\n");
#endif // UART_DEBUG_MSG

    _AdjItemWindowInit(MPictureItemStr5, gScalerPara.bSharpness);
}

void UI_FL_PicSharpnessProc(BYTE bKey)
{
#if(UART_DEBUG_MSG)
    printf("......picture_sharpness_proc(%02X)\n", (int)bKey);
#endif // UART_DEBUG_MSG

    if(bKey == KEY_LEFT || bKey == KEY_RIGHT)
    {
        gScalerPara.bSharpness = _AdjItemWindowProc(bKey, 37, gScalerPara.bSharpness * 37) / 37;
        API_CTRL_ScalerColorEnhance();
    }
    else if(bKey == KEY_EXIT)
    {
        // Save parameter
        _ItemWindowExit();
    }
}

/***************************************************************************/
BYTE code IZoomItemStr1[] = {_1, _6, _MINUS, _9, _EOF};
BYTE code IZoomItemStr2[] = {_4, _MINUS, _3, _EOF};

void UI_FL_PicZoomInit(void)
{
#if(UART_DEBUG_MSG)
    printf("......picture_zoom_init\n");
#endif // UART_DEBUG_MSG
    _ItemWindowInit(MPictureItemStr6);

    API_OSD_PrintString(1, 15, (gScalerPara.fAspectType == 0) ? OSD_BLUE : OSD_GRAY_2, IZoomItemStr1);
    API_OSD_PrintString(1, 20, (gScalerPara.fAspectType == 1) ? OSD_BLUE : OSD_GRAY_2, IZoomItemStr2);
}

void UI_FL_PicZoomProc(BYTE bKey)
{
#if(UART_DEBUG_MSG)
    printf("......picture_zoom_proc(%02X)\n", (int)bKey);
#endif // UART_DEBUG_MSG

    switch(bKey)
    {
        case KEY_EXIT:
            _ItemWindowExit();
            // Save parameters
            break;

        case KEY_LEFT:
        case KEY_RIGHT:
            gScalerPara.fAspectType = ~(gScalerPara.fAspectType);
            API_OSD_PrintString(1, 15, (gScalerPara.fAspectType == 0) ? OSD_BLUE : OSD_GRAY_2, IZoomItemStr1);
            API_OSD_PrintString(1, 20, (gScalerPara.fAspectType == 1) ? OSD_BLUE : OSD_GRAY_2, IZoomItemStr2);

            API_OSD_Enable(0);

            _PositionCtrl(1);
            API_PANEL_SetAspectRatio(gScalerPara.fAspectType);

            API_OSD_Enable(1);
            break;

        default:
            break;
    }
}

/***************************************************************************/
BYTE code IFlipItemStr1[] = {_S, _T, _D, _EOF};
BYTE code IFlipItemStr2[] = {_L, _2, _R, _EOF};
BYTE code IFlipItemStr3[] = {_U, _2, _D, _EOF};
BYTE code IFlipItemStr4[] = {_I, _N, _V, _EOF};

void UI_FL_PicFlipInit(void)
{
#if(UART_DEBUG_MSG)
    printf("......picture_flip_init\n");
#endif // UART_DEBUG_MSG
    _ItemWindowInit(MPictureItemStr7);

    API_OSD_PrintString(1, 15, (gScalerPara.bFlipMode == 0) ? OSD_BLUE : OSD_GRAY_2, IFlipItemStr1);
    API_OSD_PrintString(1, 19, (gScalerPara.bFlipMode == 1) ? OSD_BLUE : OSD_GRAY_2, IFlipItemStr2);
    API_OSD_PrintString(1, 23, (gScalerPara.bFlipMode == 2) ? OSD_BLUE : OSD_GRAY_2, IFlipItemStr3);
    API_OSD_PrintString(1, 27, (gScalerPara.bFlipMode == 3) ? OSD_BLUE : OSD_GRAY_2, IFlipItemStr4);
}

void UI_FL_PicFlipProc(BYTE bKey)
{
#if(UART_DEBUG_MSG)
    printf("......picture_flip_proc(%02X)\n", (int)bKey);
#endif // UART_DEBUG_MSG

    switch(bKey)
    {
        case KEY_EXIT:
            _ItemWindowExit();
            // Save parameters
            break;

        case KEY_LEFT:
        case KEY_RIGHT:
            if(bKey == KEY_LEFT)
                gScalerPara.bFlipMode = (gScalerPara.bFlipMode > 0) ? (gScalerPara.bFlipMode - 1) : 3;
            else // (bKey == KEY_RIGHT)
                gScalerPara.bFlipMode = (gScalerPara.bFlipMode < 3) ? (gScalerPara.bFlipMode + 1) : 0;

            API_OSD_PrintString(1, 15, (gScalerPara.bFlipMode == 0) ? OSD_BLUE : OSD_GRAY_2, IFlipItemStr1);
            API_OSD_PrintString(1, 19, (gScalerPara.bFlipMode == 1) ? OSD_BLUE : OSD_GRAY_2, IFlipItemStr2);
            API_OSD_PrintString(1, 23, (gScalerPara.bFlipMode == 2) ? OSD_BLUE : OSD_GRAY_2, IFlipItemStr3);
            API_OSD_PrintString(1, 27, (gScalerPara.bFlipMode == 3) ? OSD_BLUE : OSD_GRAY_2, IFlipItemStr4);

            SYS_BacklightPower(0);
            API_PANEL_Flip(gScalerPara.bFlipMode);
            SYS_Delay_mS(20);
            SYS_BacklightPower(1);
            break;

        default:
            break;
    }
}

/****************************************************************************
 * UI Menu function - Input sub-menu
 ****************************************************************************/
BYTE code MInputItemStr1[] = { _C, _V, _B, _S, __, __, __, __, _EOF };
BYTE code MInputItemStr2[] = { _S, _MINUS, _V, _I, _D, _E, _O, __, _EOF };
//BYTE code MInputItemStr3[] = { _T, _V, __, __, __, __, __, __, _EOF };
//BYTE code MInputItemStr4[] = { _C, _C, _I, _R, _MINUS, _6, _5, _6, _EOF };

BYTE code * code MInputItemStr[] =
{
    MInputItemStr1,
    MInputItemStr2//,
    //MInputItemStr3,
    //MInputItemStr4
};

/***************************************************************************/
void UI_FL_InputDrawItem(BYTE bIndex, BYTE bColor)
{
    API_OSD_PrintString(bIndex+1, 1, bColor, MInputItemStr[bIndex]);
}

/***************************************************************************/
void UI_FL_InputInit(void)
{
    BYTE i;

#if(UART_DEBUG_MSG)
    printf("...menu_input_init\n");
#endif // UART_DEBUG_MSG

#if(MAIN_MENU_ITEM_MAX < MENU_INPUT_ITEM_MAX)
    UI_OSD_SetAreaRowAttr(0, MENU_INPUT_ITEM_MAX + 1, 0x00, 0x14);
#endif // MAIN_MENU_ITEM_MAX < MENU_INPUT_ITEM_MAX

    API_OSD_ClearRow(0, 15, OSD_BLACK);
    UI_OSD_DrawFrame(0, MENU_INPUT_ITEM_MAX + 1, 0, 9);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -