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

📄 o_search_display.c

📁 Zoran V966 DVD 解码 Soc芯片的源程序
💻 C
📖 第 1 页 / 共 4 页
字号:
						pSearchDisplayContainer->moParam.mwComponentType = eComponentTypeTitleChapterOrTrack;
						break;

					default://Clips
						if (DeviceManager_IsDiscCDDA())
						{
							MS_ComponentOpen(	(MS_DESCRIPTOR_COMPONENT*)&oSearchDisplayTrackDescriptor, 
																				(MSO_CONTAINER __NEAR*)pThis);
							pSearchDisplayContainer->moParam.mwComponentType = eComponentTypeTitleChapterOrTrack;
						}
						else 
						{
							switch (CoreAPI_GetCurrentClipType())
							{
								case eClipType_JPEG:
								case eClipType_MPEG:
								case eClipType_AVI:
									MS_ComponentOpen(	(MS_DESCRIPTOR_COMPONENT*)&oSearchDisplayTrackDescriptor, 
																				(MSO_CONTAINER __NEAR*)pThis);
									pSearchDisplayContainer->moParam.mwComponentType = eComponentTypeTitleChapterOrTrack;
									break;

								default:
									MS_ComponentOpen(	(MS_DESCRIPTOR_COMPONENT*)&oSearchDisplayTimeDescriptor, 
																				(MSO_CONTAINER __NEAR*)pThis);
									pSearchDisplayContainer->moParam.mwComponentType = eComponentTypeTime;
									break;
							}
						}
						break;
				}
				if (!_IsTrackComponentFocusable())
					MS_ScreenSetFocusObject(pThis);
			}
			break;

#ifdef D_CLOSE_SEARCH_DISPLAY_WHEN_NO_USER_INPUT
		case MS_OP_LEFT:
		case MS_OP_RIGHT:
		case MS_OP_ENTER:
			{
				MSO_SEARCH_DISPLAY_CONTAINER __NEAR* pSearchDisplayContainer = (MSO_SEARCH_DISPLAY_CONTAINER __NEAR*)pThis;
				pSearchDisplayContainer->moParam.mwCloseSearchDisplayTimeOut = CLOSE_SEARCH_DISPLAY_TIMEOUT_SECONDS * 10;
			}
			break;

		case MS_OP_TICK:
			{
				MSO_SEARCH_DISPLAY_CONTAINER __NEAR* pSearchDisplayContainer = (MSO_SEARCH_DISPLAY_CONTAINER __NEAR*)pThis;

				if (pSearchDisplayContainer->moParam.mwCloseSearchDisplayTimeOut)
				{
					pSearchDisplayContainer->moParam.mwCloseSearchDisplayTimeOut--;
					if (0 == pSearchDisplayContainer->moParam.mwCloseSearchDisplayTimeOut)
					{
						MS_SendOperation(pThis, MS_OP_CLOSE_PARENT, 0);
					}
				}
			}
			break;
#endif

		case MS_OP_DISPLAY:
			{
				MSO_SEARCH_DISPLAY_CONTAINER __NEAR* pSearchDisplayContainer = (MSO_SEARCH_DISPLAY_CONTAINER __NEAR*)pThis;
				
				switch (pSearchDisplayContainer->moParam.mwComponentType)
				{
					case eComponentTypeTitleChapterOrTrack:
						switch (CoreAPI_GetCurrentMediaType())
						{
							case MEDIA_TYPE_DVD_VIDEO:
								MS_ComponentClose((MS_DESCRIPTOR_COMPONENT*)&oSearchDisplayTitleChapterDescriptor, FALSE);
								break;
									
							default:
								MS_ComponentClose((MS_DESCRIPTOR_COMPONENT*)&oSearchDisplayTrackDescriptor, FALSE);
								break;
						}
						if (_IsTimeComponentExist())
						{
							MS_ComponentOpen(	(MS_DESCRIPTOR_COMPONENT*)&oSearchDisplayTimeDescriptor, 
																				(MSO_CONTAINER __NEAR*)pThis);
							pSearchDisplayContainer->moParam.mwComponentType = eComponentTypeTime;
						}
						else if (_IsAngleRepeatComponentExist())
						{
							MS_ComponentOpen(	(MS_DESCRIPTOR_COMPONENT*)&oAngleRepeatDescriptor, 
																				(MSO_CONTAINER __NEAR*)pThis);
							pSearchDisplayContainer->moParam.mwComponentType = eComponentTypeAngleRepeat;
						}
						else
						{
							MS_SendOperation(pThis, MS_OP_CLOSE_PARENT, 0);
						}
						break;

					case eComponentTypeTime:
						if (_IsAngleRepeatComponentExist())
						{
							MS_ComponentClose((MS_DESCRIPTOR_COMPONENT*)&oSearchDisplayTimeDescriptor, FALSE);
							MS_ComponentOpen(	(MS_DESCRIPTOR_COMPONENT*)&oAngleRepeatDescriptor, 
																				(MSO_CONTAINER __NEAR*)pThis);
							pSearchDisplayContainer->moParam.mwComponentType = eComponentTypeAngleRepeat;
						}
						else
						{
							MS_SendOperation(pThis, MS_OP_CLOSE_PARENT, 0);
						}
						break;

					case eComponentTypeAngleRepeat:
						MS_SendOperation(pThis, MS_OP_CLOSE_PARENT, 0);
						break;
				}
				return MS_OP_NONE;
			}
			
		case MS_OP_EJECT:			// Fall through !!!
		case MS_OP_MENU:			// Fall through !!!
		case MS_OP_PBC:				// Fall through !!!
		case MS_OP_STOP:
			MS_SendOperation(pThis, MS_OP_CLOSE_PARENT, 0);
			break;
	}
	return MS_ComponentBasicOperation(pThis, MsOp, lParam);
}

/***************************************************************************************
*	Function 	: 	_SearchDisplayOperation
*
*	In		:
*
*	Out		:
*
*	Desc 	:	The component user operation function.
****************************************************************************************/
STATIC MS_OP _SearchDisplayTrackComponentOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{
	switch(MsOp)
	{	
	case MS_OP_INIT:
		{
			if (_IsTrackComponentFocusable())
				MS_ComponentInitFocus((MSO_COMPONENT __NEAR*)pThis);
		}
		break;
	}

	//Frank: Important, we shouldn't use MS_ComponentBasicOperation.
	MsOp = MS_BasicContainerOperation(pThis, MsOp, lParam);

	switch(MsOp)
	{	
	case MS_OP_0: // Fall Through
	case MS_OP_1: // Fall Through
	case MS_OP_2: // Fall Through
	case MS_OP_3: // Fall Through
	case MS_OP_4: // Fall Through
	case MS_OP_5: // Fall Through
	case MS_OP_6: // Fall Through
	case MS_OP_7: // Fall Through
	case MS_OP_8: // Fall Through
	case MS_OP_9:
		return MS_OP_NONE;

	default:
		return MsOp;
	}
}

/***************************************************************************************
*	Function 	: 	_SearchDisplayOperation
*
*	In		:
*
*	Out		:
*
*	Desc 	:	The component user operation function.
****************************************************************************************/
STATIC MS_OP _SearchDisplayComponentOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{
	switch(MsOp)
	{	
	case MS_OP_INIT:
		{
			MS_ComponentInitFocus((MSO_COMPONENT __NEAR*)pThis);
		}
		break;
	}

	//Frank: Important, we shouldn't use MS_ComponentBasicOperation.
	MsOp = MS_BasicContainerOperation(pThis, MsOp, lParam);

	switch(MsOp)
	{	
	case MS_OP_0: // Fall Through
	case MS_OP_1: // Fall Through
	case MS_OP_2: // Fall Through
	case MS_OP_3: // Fall Through
	case MS_OP_4: // Fall Through
	case MS_OP_5: // Fall Through
	case MS_OP_6: // Fall Through
	case MS_OP_7: // Fall Through
	case MS_OP_8: // Fall Through
	case MS_OP_9:
		return MS_OP_NONE;

	default:
		return MsOp;
	}
}

/***************************************************************************************
*	Function 	: 	_BasicTrackEditOperation
*
*	In		:
*
*	Out		:
*
*	Desc 	:	Basic operation for Title, chapter and track objects.
****************************************************************************************/
#pragma argsused
STATIC MS_OP _BasicTrackEditOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{
	switch(MsOp)
	{	
	case MS_OP_FOCUS_CHANGE:
		{
			if (MS_IsFocused(pThis))
			{
				MSO_TRACK __NEAR* pTrack = (MSO_TRACK __NEAR*)pThis;
			
				pTrack->moParam.mwTrack = INVALID_TRACK;
			}
			MS_DisplayAddObject(pThis);
		}
		break;
		
	case MS_OP_0: // Fall Through
	case MS_OP_1: // Fall Through
	case MS_OP_2: // Fall Through
	case MS_OP_3: // Fall Through
	case MS_OP_4: // Fall Through
	case MS_OP_5: // Fall Through
	case MS_OP_6: // Fall Through
	case MS_OP_7: // Fall Through
	case MS_OP_8: // Fall Through
	case MS_OP_9:
		{
			MSO_TRACK __NEAR* pTrack = (MSO_TRACK __NEAR*)pThis;
			
			UINT8 cValue = MsOp - MS_OP_0;

			if(INVALID_TRACK == pTrack->moParam.mwTrack )
			{
				pTrack->moParam.mwTrack  = cValue;
				MS_DisplayAddObject(pThis);
			}
			else
			{
				pTrack->moParam.mwTrack = (pTrack->moParam.mwTrack  * 10) + cValue;
				pTrack->moParam.mwTrack = (pTrack->moParam.mwTrack) % 1000;
				MS_DisplayAddObject(pThis);
			}
		}
		return MS_OP_NONE;
		
	case MS_OP_CLEAR:
		{
			MSO_TRACK __NEAR* pTrack = (MSO_TRACK __NEAR*)pThis;
			
			if(INVALID_TRACK != pTrack->moParam.mwTrack)
			{
				pTrack->moParam.mwTrack = INVALID_TRACK;
				MS_DisplayAddObject(pThis);
			}
		}
		return MS_OP_NONE;
	}
	return MsOp;
}

/***************************************************************************************
*	Function 	: 	_TitleOperation
*
*	In		:
*
*	Out		:
*
*	Desc 	:	The Title operation function.
****************************************************************************************/
#pragma argsused
STATIC MS_OP _TitleOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{
	switch(MsOp)
	{
	case MS_OP_INIT:
		{
			MSO_TRACK __NEAR* pTrack = (MSO_TRACK __NEAR*)pThis;

			pTrack->moParam.mwTrack = CoreAPI_GetCurrentTitleGroupNum();
			pTrack->moParam.mwTotalTrack = CoreAPI_GetTotalTitleGroupNum();
		}
		break;
		
	case MS_OP_TICK:
		{
			MSO_CONTAINER __NEAR* pParent = pThis->mpParent;
			MSO_TEXT __NEAR* pTitleText = (MSO_TEXT __NEAR*)MS_FindObjectFromDescriptor(pParent, (MS_DESCRIPTOR*)&oTitleTextDescriptor);

			if (MS_IsFocused(pTitleText))
			{
				MSO_TRACK __NEAR* pTitle = (MSO_TRACK __NEAR*)pThis;
				BOOL bTitleChanged = FALSE;
				UINT16 wTitle;
				
				wTitle = CoreAPI_GetCurrentTitleGroupNum();
				if (pTitle->moParam.mwTrack != wTitle)
				{
					pTitle->moParam.mwTrack = wTitle;
					bTitleChanged = TRUE;
				}
				wTitle = CoreAPI_GetTotalTitleGroupNum();
				if (pTitle->moParam.mwTotalTrack != wTitle)
				{
					pTitle->moParam.mwTotalTrack = wTitle;
					bTitleChanged = TRUE;
				}
				if (bTitleChanged)
					MS_DisplayAddObject(pThis);
			}
		}
		break;

	case MS_OP_FOCUS_CHANGE:
		{
			MSO_CONTAINER __NEAR* pParent = pThis->mpParent;
			MSO_TRACK __NEAR* pChapter = (MSO_TRACK __NEAR*)MS_FindObjectFromDescriptor(pParent, (MS_DESCRIPTOR*)&oChapterDescriptor);
				
			if ((!MS_IsFocused(pThis)) && MS_IsFocused(pChapter))
			{
				MSO_TRACK __NEAR* pTitle = (MSO_TRACK __NEAR*)pThis;
				UINT16 wTitleNum = pTitle->moParam.mwTrack;
				UINT16 wAvailableChapterNum = 0;

				if (wTitleNum > CoreAPI_GetTotalTitleGroupNum())
				{
					pTitle->moParam.mwTrack = INVALID_TRACK;
					MS_DisplayAddObject(pThis);
					wTitleNum = CoreAPI_GetCurrentTitleGroupNum();
				}	
				wAvailableChapterNum = CoreAPI_GetTotalChapterTrackNum(wTitleNum);
				if ( pChapter->moParam.mwTotalTrack != wAvailableChapterNum)
				{
					pChapter->moParam.mwTotalTrack = (UINT16)wAvailableChapterNum;
					MS_DisplayAddObject((MSO_OBJECT __NEAR*)pChapter);
				}
			}
		}
		break;
		
	case MS_OP_ENTER:
		{
			MSO_TRACK __NEAR* pTitle = (MSO_TRACK __NEAR*)pThis;
			MSO_CONTAINER __NEAR* pParent = pThis->mpParent;
			MSO_TRACK __NEAR* pChapter = (MSO_TRACK __NEAR*)MS_FindObjectFromDescriptor(pParent, (MS_DESCRIPTOR*)&oChapterDescriptor);
			
			UINT16 wTitle = pTitle->moParam.mwTrack;			
			UINT16 wChapter = pChapter->moParam.mwTrack;	

			if(INVALID_TRACK == wChapter)
				wChapter = 1;
			
			if(!_IsTitleChapterValid(wTitle, wChapter))
			{			
				pTitle->moParam.mwTrack = INVALID_TRACK;
				pChapter->moParam.mwTrack = INVALID_TRACK;
				MS_DisplayAddObject(pThis);
				MS_DisplayAddObject((MSO_OBJECT __NEAR* )pChapter);
			}
			else if(CoreAPI_GotoEntry(wTitle, wChapter))
			{	
				return MS_OP_CLOSE_PARENT;
			}
			else
			{
				PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_BY_DISC);
				return MS_OP_CLOSE_PARENT;
			}
		}
		return MS_OP_NONE;
	}

	return _BasicTrackEditOperation(pThis, MsOp, lParam);
}

/***************************************************************************************
*	Function 	: 	_ChapterOperation
*
*	In		:
*
*	Out		:
*
*	Desc 	:	The Chapter operation function.
****************************************************************************************/
#pragma argsused
STATIC MS_OP _ChapterOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{
	switch(MsOp)
	{
	case MS_OP_INIT:
		{
			MSO_TRACK __NEAR* pTrack = (MSO_TRACK __NEAR*)pThis;
			
			pTrack->moParam.mwTrack = CoreAPI_GetCurrentChapterTrackNum();
			pTrack->moParam.mwTotalTrack = CoreAPI_GetTotalChapterTrackNum(0);
		}
		break;
		
	case MS_OP_TICK:
		{
			MSO_CONTAINER __NEAR* pParent = pThis->mpParent;
			MSO_TEXT __NEAR* pTitleText = (MSO_TEXT __NEAR*)MS_FindObjectFromDescriptor(pParent, (MS_DESCRIPTOR*)&oTitleTextDescriptor);

			if (MS_IsFocused(pTitleText))
			{
				MSO_TRACK __NEAR* pChapter = (MSO_TRACK __NEAR*)pThis;
				BOOL bChapterChanged = FALSE;
				UINT16 wChapter;
			
				wChapter = CoreAPI_GetCurrentChapterTrackNum();
				if (pChapter->moParam.mwTrack != wChapter)
				{
					pChapter->moParam.mwTrack = wChapter;
					bChapterChanged = TRUE;
				}
				wChapter = CoreAPI_GetTotalChapterTrackNum(0);
				if (pChapter->moParam.mwTotalTrack != wChapter)
				{
					pChapter->moParam.mwTotalTrack = wChapter;
					bChapterChanged = TRUE;
				}
				if (bChapterChanged)
					MS_DisplayAddObject(pThis);
			}
		}
		break;
		

⌨️ 快捷键说明

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