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

📄 psl_screen_layout.cpp

📁 这是DVD中伺服部分的核心代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    {
        /* uninitialize the setup menu */
        UninitializeSetupMenu(pPSL->pSetupMenu);

        /* de-allocate setup menu */
        OS_MemFree(pPSL->pStatusDisplay);
        pPSL->pSetupMenu = NULL;
    }

    /* delete the timer */
    OS_TimerDelete(pPSL->Timer);

    /* delete deal */
    if (pPSL->hDeal != NULL)
    {
        DealCMDelete(pPSL->hDeal);
        pPSL->hDeal = NULL;
    }

    return (PSL_FAILURE);
}

/**
 * PslScreenLayoutUninitialize -- Delete all menus.
 *
 * @param
 *      pPSL    - handle to internal PSL data
 *
 * @retval
 *    PSL_SUCCESS if successful
 *    PSL_FAILURE if not successful
 */
PSL_STATUS  PslScreenLayoutUninitialize(PSL_HANDLE *pPSL)
{
    /* Check for a valid psl handle */
    if (pPSL == NULL)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslScreenLayoutUninitialize: NULL handle!\n"));
        return (PSL_FAILURE);
    }

    /* delete cdda gui */
    if (pPSL->pCddaGui != NULL)
    {
        /* uninitialize the cdda gui */
        UninitializeCDDAGui(pPSL->pCddaGui);

        /* de-allocate cdda gui */
        OS_MemFree(pPSL->pCddaGui);
        pPSL->pCddaGui = NULL;
    }

    /* delete parental control */
    if (pPSL->pParentalControl != NULL)
    {
        /* uninitialize the parental control */
        UninitializeParentalControl(pPSL);

        /* de-allocate parental control */
        OS_MemFree(pPSL->pParentalControl);
        pPSL->pParentalControl = NULL;
    }

    /* delete status menu */
    if (pPSL->pStatusMenu != NULL)
    {
        /* uninitialize the status menu */
        UninitializeStatusMenu(pPSL->pStatusMenu);

        /* de-allocate status menu */
        OS_MemFree(pPSL->pStatusMenu);
        pPSL->pStatusMenu = NULL;
    }

    /* delete icon data */
    if (pPSL->pIconData != NULL)
    {
        /* uninitialize the icon data */
        UninitializeIconData(pPSL->pIconData);

        /* de-allocate icon data */
        OS_MemFree(pPSL->pIconData);
        pPSL->pIconData = NULL;
    }

    /* delete status display */
    if (pPSL->pSetupMenu != NULL)
    {
        /* uninitialize the status display */
        UninitializeStatusDisplay(pPSL->pStatusDisplay);

        /* de-allocate status display */
        OS_MemFree(pPSL->pStatusDisplay);
        pPSL->pStatusDisplay = NULL;
    }

    /* delete setup menu */
    if (pPSL->pSetupMenu != NULL)
    {
        /* uninitialize the setup menu */
        UninitializeSetupMenu(pPSL->pSetupMenu);

        /* de-allocate setup menu */
        OS_MemFree(pPSL->pSetupMenu);
        pPSL->pSetupMenu = NULL;
    }

    /* delete the timer */
    OS_TimerDelete(pPSL->Timer);

    /* delete deal */
    if (pPSL->hDeal != NULL)
    {
        DealCMDelete(pPSL->hDeal);
        pPSL->hDeal = NULL;
    }

    return (PSL_FAILURE);
}

/**
 * PslScreenLayoutDrawSetupMenu -- Draw the setup menu
 *
 * @param
 *      pSetupMenu - pointer to setup menu to draw
 *
 * @retval
 *    PSL_SUCCESS if successful
 *    PSL_FAILURE if not successful
 */
PSL_STATUS  PslScreenLayoutDrawSetupMenu(PSL_HANDLE *pPSL)
{
    DEAL_RDRAW_STRUCT rect;
    USHORT            i, j, k;

    if ( (pPSL == NULL) || (pPSL->pSetupMenu == NULL) )
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslScreenLayoutDrawSetupMenu() -- NULL pointer!\n"));
        return (PSL_FAILURE);
    }

    /* 
     * If setup menu is not active, get the configuration settings.
     * Also, initialize active tab and button.
     */
    if (PslScreenLayoutIsSetupMenuActive(pPSL) == FALSE)
    {   
        PSL_BUTTON_DRAW_INFO    *pButtonDrawInfo = NULL;
        ULONG                   ulSetting;
    
        /* Get dvd menu language setting and set button text */
        ulSetting = PslDataGetMenuLanguage(pPSL);
        pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[0].pSubButton[1].pvButtonDrawInfo;
        strcpy(pButtonDrawInfo->cText, LANGUAGE_CONST[ulSetting - 1]);

        /* Get audio language setting and set button text */
        ulSetting = PslDataGetAudioLanguage(pPSL);
        pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[0].pSubButton[3].pvButtonDrawInfo;
        strcpy(pButtonDrawInfo->cText, LANGUAGE_CONST[ulSetting - 1]);

        /* Get subtitle language setting and set button text */
        ulSetting = PslDataGetSubtitleLanguage(pPSL);
        pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[0].pSubButton[5].pvButtonDrawInfo;
        strcpy(pButtonDrawInfo->cText, LANGUAGE_CONST[ulSetting - 1]);
        
        /* Get aspect ratio setting and set button text */
        ulSetting = PslDataGetAspectRatio(pPSL);
        pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[1].pSubButton[1].pvButtonDrawInfo;
        switch (ulSetting)
        {
        case VDVD_ASPECT_RATIO_4X3_PANSCAN:
            strcpy(pButtonDrawInfo->cText, "4:3 PS");
            break;
        case VDVD_ASPECT_RATIO_4X3_LETTERBOX:
            strcpy(pButtonDrawInfo->cText, "4:3 LT");
            break;
        case VDVD_ASPECT_RATIO_16X9:
            strcpy(pButtonDrawInfo->cText, "16:9");
            break;
        default:   
            strcpy(pButtonDrawInfo->cText, "---"); 
            break;
        }
        
        /* Get video format setting and set button text */
        ulSetting = PslDataGetVideoFormat(pPSL);
        pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[1].pSubButton[3].pvButtonDrawInfo;
        switch (ulSetting)
        {
        case VDVD_VIDEO_FORMAT_NTSC:
            strcpy(pButtonDrawInfo->cText, "NTSC");
            break;
        case VDVD_VIDEO_FORMAT_PAL:
            strcpy(pButtonDrawInfo->cText, "PAL");
            break;
        default:   
            strcpy(pButtonDrawInfo->cText, "---"); 
            break;
        }
        
        /* Get spdif setting and set button text */
        ulSetting = PslDataGetSPDIF(pPSL);
        pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[2].pSubButton[1].pvButtonDrawInfo;
        switch (ulSetting)
        {
        case VDVD_SPDIF_PCM:
            strcpy(pButtonDrawInfo->cText, "PCM");
            break;
        case VDVD_SPDIF_COMPRESSED:
            strcpy(pButtonDrawInfo->cText, "Compressed");
            break;
        default:   
            strcpy(pButtonDrawInfo->cText, "---"); 
            break;
        }
        
        /* Get country standard setting */
        ulSetting = PslDataGetCountryStandard(pPSL);
        pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[5].pvButtonDrawInfo;

        /* Set parental level settings based on country standard */
        if (ulSetting == 1)
        {
            /* Set country standard setting text */
            strcpy(pButtonDrawInfo->cText, "USA");

            /* Set parental level options for usa standard */
            pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[3].pSubButton[0].pvButtonDrawInfo;
            strcpy(pButtonDrawInfo->cText, "Off");
            pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[3].pSubButton[1].pvButtonDrawInfo;
            strcpy(pButtonDrawInfo->cText, "G");
            pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[3].pSubButton[2].pvButtonDrawInfo;
            strcpy(pButtonDrawInfo->cText, "2");
            pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[3].pSubButton[3].pvButtonDrawInfo;
            strcpy(pButtonDrawInfo->cText, "PG");
            pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[3].pSubButton[4].pvButtonDrawInfo;
            strcpy(pButtonDrawInfo->cText, "PG-13");
            pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[3].pSubButton[5].pvButtonDrawInfo;
            strcpy(pButtonDrawInfo->cText, "5");
            pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[3].pSubButton[6].pvButtonDrawInfo;
            strcpy(pButtonDrawInfo->cText, "R");
            pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[3].pSubButton[7].pvButtonDrawInfo;
            strcpy(pButtonDrawInfo->cText, "NC-17");
            pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[3].pSubButton[8].pvButtonDrawInfo;
            strcpy(pButtonDrawInfo->cText, "8");
            
            /* Get parental level setting and set button text */
            ulSetting = PslDataGetParentalLevel(pPSL);
            pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[3].pvButtonDrawInfo;
            switch (ulSetting)
            {
            case 1:
                strcpy(pButtonDrawInfo->cText, "G");
                break;
            case 2:
                strcpy(pButtonDrawInfo->cText, "2");
                break;
            case 3:
                strcpy(pButtonDrawInfo->cText, "PG");
                break;
            case 4:
                strcpy(pButtonDrawInfo->cText, "PG-13");
                break;
            case 5:
                strcpy(pButtonDrawInfo->cText, "5");
                break;
            case 6:
                strcpy(pButtonDrawInfo->cText, "R");
                break;
            case 7:
                strcpy(pButtonDrawInfo->cText, "NC-17");
                break;
            case 8:
                strcpy(pButtonDrawInfo->cText, "8");
                break;
            case 0:
            case 15:
            default:
                strcpy(pButtonDrawInfo->cText, "Off");
                break;
            }
        }
        else
        {
            /* Set country standard setting text */
            strcpy(pButtonDrawInfo->cText, "International");

            /* Set parental level options for international standard */
            pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[3].pSubButton[0].pvButtonDrawInfo;
            strcpy(pButtonDrawInfo->cText, "Off");
            pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[3].pSubButton[1].pvButtonDrawInfo;
            strcpy(pButtonDrawInfo->cText, "Kids");
            pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[3].pSubButton[2].pvButtonDrawInfo;
            strcpy(pButtonDrawInfo->cText, "2");
            pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[3].pSubButton[3].pvButtonDrawInfo;
            strcpy(pButtonDrawInfo->cText, "3");
            pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[3].pSubButton[4].pvButtonDrawInfo;
            strcpy(pButtonDrawInfo->cText, "4");
            pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[3].pSubButton[5].pvButtonDrawInfo;
            strcpy(pButtonDrawInfo->cText, "5");
            pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[3].pSubButton[6].pvButtonDrawInfo;
            strcpy(pButtonDrawInfo->cText, "6");
            pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[3].pSubButton[7].pvButtonDrawInfo;
            strcpy(pButtonDrawInfo->cText, "7");
            pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[3].pSubButton[8].pvButtonDrawInfo;
            strcpy(pButtonDrawInfo->cText, "Adults");
            
            /* Get parental level setting and set button text */
            ulSetting = PslDataGetParentalLevel(pPSL);
            pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[3].pvButtonDrawInfo;
            switch (ulSetting)
            {
            case 1:
                strcpy(pButtonDrawInfo->cText, "Kids");
                break;
            case 2:
                strcpy(pButtonDrawInfo->cText, "2");
                break;
            case 3:
                strcpy(pButtonDrawInfo->cText, "3");
                break;
            case 4:
                strcpy(pButtonDrawInfo->cText, "4");
                break;
            case 5:
                strcpy(pButtonDrawInfo->cText, "5");
                break;
            case 6:
                strcpy(pButtonDrawInfo->cText, "6");
                break;
            case 7:
                strcpy(pButtonDrawInfo->cText, "7");
                break;
            case 8:
                strcpy(pButtonDrawInfo->cText, "Adults");
                break;
            case 0:
            case 15:
            default:
                strcpy(pButtonDrawInfo->cText, "Off");
                break;
            }
        }
        
        /* Check if parental password is set.  If it is not, allow user to set it */
        ulSetting = PslDataGetParentalPassword(pPSL);
        pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pSetupMenu->pTab[3].pSubButton[0].pvButtonDrawInfo;
        if (ulSetting == 0xffffffff)
        {
            strcpy(pButtonDrawInfo->cText, "Create Password");
        }
        else

⌨️ 快捷键说明

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