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

📄 o_ge.c

📁 Zoran V966 DVD 解码 Soc芯片的源程序
💻 C
📖 第 1 页 / 共 2 页
字号:
{
	MSO_OBJECT __NEAR* pParent;

	MS_ASSERT(NULL != pEq);

	pParent = (MSO_OBJECT __NEAR*)((MSO_OBJECT __NEAR*)pEq)->mpParent;

	MS_SetInvisible(pEq);

	MS_DisplayAddObject(pParent);
	MS_ScreenSetFocusObject(MS_ContainerGetPrevFocusObject((MSO_CONTAINER __NEAR*)pParent));

	MS_SendOperation((MSO_OBJECT __NEAR*)pEq, MS_OP_EMPTY, 0);
	MS_RemoveObject((MSO_OBJECT __NEAR*)pEq);

    return;
}

/**************************************************************************
* 	Operation functions
***************************************************************************/

/**************************************************************************
*	Function 	: 	TimeSearchOperation
*
*	In		:
*
*	Out		:
*
*	Desc 	:
 ***************************************************************************/
MS_OP EqOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{
	// TODO : If neccessary handle operations here.

	return MS_ComponentBasicOperation(pThis, MsOp, lParam);
}

/**************************************************************************
* 	Display functions
***************************************************************************/

/**************************************************************************
*	Function 	: 	EqFillOSDSeg
*
*	In		:
*
*	Out		:
*
*	Desc 	:
 ***************************************************************************/
BOOL EqFillOSDSeg(MSO_OBJECT __NEAR* pThis, MS_AREA __NEAR* pAbsArea)
{
	FORMATED_UNICODE_STRING oFormUniStr;
	MS_DESCRIPTOR_EQ* pDescriptor = (MS_DESCRIPTOR_EQ*)pThis->mpDescriptor;

	OSDR_FillOsdSegBitmapFitArea(pDescriptor->mpBgBmp, pAbsArea);

	oFormUniStr.mtFontIndex = FONT_0;

	//EQ label
	OSDR_GetFormUniStr_OsdMessage((FORMATED_UNICODE_STRING __NEAR*)&oFormUniStr, S_GRAPHIC_EQUALIZER);

	OSDR_FillOsdSegUniString((FORMATED_UNICODE_STRING __NEAR*)&oFormUniStr,
							pAbsArea,
							EQ_COL_1_X,
							EQ_LINE_2_Y,
							ALIGN_H_LEFT,
                            			ALIGN_V_BOTTOM,
							pDescriptor->mwTextColor);



	// The MODE label
	OSDR_GetFormUniStr_OsdMessage((FORMATED_UNICODE_STRING __NEAR*)&oFormUniStr, S_MODE);

	OSDR_FillOsdSegUniString((FORMATED_UNICODE_STRING __NEAR*)&oFormUniStr,
							pAbsArea,
							EQ_COL_1_X,
							EQ_LINE_3_Y,
							ALIGN_H_LEFT,
                            			ALIGN_V_BOTTOM,
							pDescriptor->mwTextColor);

	return FALSE;
}

/**************************************************************************
*	Function : _ModeChoiceOperation
*	In		:
*	Out 	:
*	Desc	:
***************************************************************************/
static MS_OP _ModeChoiceOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{
	switch(MsOp)
	{
	case MS_OP_RIGHT:
		// If the choice is closed and the MS_ATTR_CHOICE_OPEN_ON_RIGHT_PRESS,
		// then open the choice by falling through to the next case.
		if(!MS_IS_CHOICE_OPEN_ON_RIGHT_PRESS(pThis))
		{
			break;
		}
		// else FALL THRU

	case MS_OP_ENTER:
		{
			MSO_OBJECT __NEAR* pObject;
			MSO_VLIST __NEAR* pValueListObject;
			// Get a pointer to the value list object
			pValueListObject = (MSO_VLIST __NEAR*)MS_FindObjectFromDescriptor((MSO_CONTAINER __NEAR*)(pThis->mpParent),
																		(MS_DESCRIPTOR*)&oValueVListDescriptor);
			MS_ASSERT(pValueListObject != NULL);

			// Set the object to be visible:
			MS_ClearInvisible(pValueListObject);

			// Clear the value list of anything it might have in it:
			MS_SendOperation((MSO_OBJECT __NEAR*)pValueListObject, MS_OP_EMPTY, 0);

			// Add the values required for this choice:
			pValueListObject->moParam.mdwData = (UINT32)pThis->mpDescriptor;
			OCHOICE_AddItemsToVList((MSO_CHOICE __NEAR*)pThis, pValueListObject);

			// Set focus to the selected item...
			// ... first find the focused item:
			pObject = ((MSO_CONTAINER __NEAR*)pValueListObject)->mpOlist;
			while((NULL != pObject) && !(MS_IsSelected(pObject)))
			{
				pObject = pObject->mpNext;
			}
			MS_ASSERT(pObject != NULL);
			// ... then set the focus to it:
			MS_ScreenSetFocusObject(pObject);

			// Extend the width of the choice object to run behind the list:
			pThis->moArea.mwW = pValueListObject->moContainer.moObject.moArea.msX + CHOICE_OVERLAP_VALUELIST_W;

			// Redisplay the choice:
			MS_DisplayAddObject((MSO_OBJECT __NEAR *)pThis->mpParent);

			// This operation has been processed fully:
			MsOp = MS_OP_NONE;
		}
		break;
	}

	return ChoiceOperation(pThis, MsOp, lParam);
}

/**************************************************************************
*	Function	:
*	In		:
*	Out 	:
*	Desc	:
***************************************************************************/
static void _UpdateEQSliders(void)
{
	UINT16 *eq_value;
	UINT8 index;
	MSO_HSLIDER __NEAR* pEQSlider1;
	MSO_HSLIDER __NEAR* pEQSlider2;
	MSO_HSLIDER __NEAR* pEQSlider3;
	MSO_HSLIDER __NEAR* pEQSlider4;
	MSO_HSLIDER __NEAR* pEQSlider5;
	MSO_HSLIDER __NEAR* pEQSlider6;

  	switch ( PS_Get_EQ_Mode() )
	{
		case GRAPHIC_EQUALIZER_CLASS:
	  		eq_value = (UINT16 *) EQUALIZER_BANDGAIN_CLASS;
	  		break;

		case GRAPHIC_EQUALIZER_ROCK:
  			eq_value = (UINT16 *) EQUALIZER_BANDGAIN_ROCK;
	  		break;

		case GRAPHIC_EQUALIZER_JAZZ:
	  		eq_value = (UINT16 *) EQUALIZER_BANDGAIN_JAZZ;
	  		break;

		case GRAPHIC_EQUALIZER_POP:
	  		eq_value = (UINT16 *) EQUALIZER_BANDGAIN_POP;
	  		break;

		case GRAPHIC_EQUALIZER_USER:
	  		eq_value = (UINT16 *) EQUALIZER_BANDGAIN_USER;
	  		break;

	  	case GRAPHIC_EQUALIZER_STD:
		case GRAPHIC_EQUALIZER_OFF:
	  		eq_value = (UINT16 *) EQUALIZER_BANDGAIN_STD;
		default:
			break;
	}

	pEQSlider1 = MS_FindObjectFromDescriptor((MSO_CONTAINER __NEAR*)gpScreen, (MS_DESCRIPTOR*)&oEQSlider1Descriptor);
	pEQSlider2 = MS_FindObjectFromDescriptor((MSO_CONTAINER __NEAR*)gpScreen, (MS_DESCRIPTOR*)&oEQSlider2Descriptor);
	pEQSlider3 = MS_FindObjectFromDescriptor((MSO_CONTAINER __NEAR*)gpScreen, (MS_DESCRIPTOR*)&oEQSlider3Descriptor);
	pEQSlider4 = MS_FindObjectFromDescriptor((MSO_CONTAINER __NEAR*)gpScreen, (MS_DESCRIPTOR*)&oEQSlider4Descriptor);
	pEQSlider5 = MS_FindObjectFromDescriptor((MSO_CONTAINER __NEAR*)gpScreen, (MS_DESCRIPTOR*)&oEQSlider5Descriptor);
	pEQSlider6 = MS_FindObjectFromDescriptor((MSO_CONTAINER __NEAR*)gpScreen, (MS_DESCRIPTOR*)&oEQSlider6Descriptor);

	pEQSlider1->moParam.mwCurrentValue = eq_value[EQ_SLIDER1];
	pEQSlider2->moParam.mwCurrentValue = eq_value[EQ_SLIDER2];
	pEQSlider3->moParam.mwCurrentValue = eq_value[EQ_SLIDER3];
	pEQSlider4->moParam.mwCurrentValue = eq_value[EQ_SLIDER4];
	pEQSlider5->moParam.mwCurrentValue = eq_value[EQ_SLIDER5];
	pEQSlider6->moParam.mwCurrentValue = eq_value[EQ_SLIDER6];

	for(index = 0; index<EQUALIZER_BANDGAIN_SZ; index++)
	{
		eq_slider_value[index] = eq_value[index];
	}

	// Using MS_DisplayAddObject causes problems on the screen
	//MS_DisplayAddObject((MSO_OBJECT __NEAR*)pEQSlider1);
	//MS_DisplayAddObject((MSO_OBJECT __NEAR*)pEQSlider2);
	//MS_DisplayAddObject((MSO_OBJECT __NEAR*)pEQSlider3);
	//MS_DisplayAddObject((MSO_OBJECT __NEAR*)pEQSlider4);
	//MS_DisplayAddObject((MSO_OBJECT __NEAR*)pEQSlider5);
	//MS_DisplayAddObject((MSO_OBJECT __NEAR*)pEQSlider6);

}

/**************************************************************************
*	Function	:
*	In		:
*	Out 	:
*	Desc	:
***************************************************************************/
static void _ModeChoiceAction(MSO_OBJECT __NEAR* pThis, enMutatorType eType, UINT16 wValue)
{
	MSO_CHOICE __NEAR* pChoice = (MSO_CHOICE __NEAR*)pThis;

	// Which action is required?
	if(eMutatorGet == eType)
		pChoice->moParam.mwCurrValIndex = OCHOICE_GetIndexFromValue(pThis, PS_Get_EQ_Mode());
	else
	{
		UINT8 cIndex = OCHOICE_GetIndexFromValue(pThis, wValue);

		UI_Core_API_UpdatePlayerSetting(PS_UPDATE_GRAPHIC_EQUALIZER_MODE, wValue);
		pChoice->moParam.mwCurrValIndex = cIndex;

		_UpdateEQSliders();
	}
}

/**************************************************************************
*	Function	:
*	In		:
*	Out 	:
*	Desc	:
***************************************************************************/
static void _AddValuesToVList(MSO_VLIST __NEAR* pList, MSO_CHOICE __NEAR* pChoice)
{
	OCHOICE_AddItemsToVList(pChoice, pList);
	return;
}

/**************************************************************************
*	Function	:	_EqOKButtonOperation
*
*	In		:
*
*	Out 		:
*
*	Return	:
*
*	Desc	:
*
 ***************************************************************************/
static MS_OP  _EqOKButtonOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{
	MSO_OBJECT __NEAR *pAdvEqButton;
    MSO_OBJECT __NEAR* pParent;
    MSO_PAGE __NEAR* pAudioPage;
    extern CONST MS_DESCRIPTOR_BUTTON oAdvEqButtonDescriptor;	// in setup_menu.c

	switch(MsOp)
	{
		case MS_OP_ENTER:
		{
			pParent = (MSO_OBJECT __NEAR*)((MSO_OBJECT __NEAR*)pThis->mpParent);
			pAudioPage = (MSO_PAGE __NEAR*)((MSO_OBJECT __NEAR*)((MSO_OBJECT __NEAR*)((MSO_OBJECT __NEAR*)((MSO_OBJECT __NEAR*)pThis->mpParent)->mpParent)->mpParent)->mpParent)->mpParent;

            Eq_Close((MSO_EQ __NEAR*)pParent);
			/* reload the audio page */
			_AddPageParams(pAudioPage);

			pAdvEqButton = MS_FindObjectFromDescriptor((MSO_CONTAINER __NEAR*)gpScreen,
														(MS_DESCRIPTOR*)&oAdvEqButtonDescriptor);

			MS_ScreenSetFocusObject(pAdvEqButton);
			MS_DisplayAddObject(pAudioPage);
			return MS_OP_NONE;
		}
	}
	return OBUTTON_Operation(pThis, MsOp, lParam);
}

#endif //D_GRAPHIC_EQUALIZER_MENU

⌨️ 快捷键说明

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