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

📄 o_display.c

📁 Zoran V966 DVD 解码 Soc芯片的源程序
💻 C
📖 第 1 页 / 共 4 页
字号:
 				MS_SetInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&oCurrentTimeTxtDescriptor));
 				MS_SetInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&oElapseTimeTitleDescriptor));
 			 	MS_SetInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&TEXT_OBJECT_DESCRIPTOR(1)));
 				MS_SetInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&VALUE_OBJECT_DESCRIPTOR(1)));
 				MS_SetInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&TEXT_OBJECT_DESCRIPTOR(2)));
 				MS_SetInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&VALUE_OBJECT_DESCRIPTOR(2)));
 				MS_SetInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&TEXT_OBJECT_DESCRIPTOR(3)));
 				MS_SetInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&VALUE_OBJECT_DESCRIPTOR(3)));
 				MS_SetInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&TEXT_OBJECT_DESCRIPTOR(4)));
 				MS_SetInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&VALUE_OBJECT_DESCRIPTOR(4)));
 				MS_ClearInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&TEXT_OBJECT_DESCRIPTOR(5)));
 				MS_ClearInvisible(MS_FindObjectFromDescriptor( (MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&VALUE_OBJECT_DESCRIPTOR(5)));
 			
 				break;
 			}
 		default:
 			return FALSE;
 	 }
 	return TRUE;
 #else
 	return FALSE;	
 #endif //D_GUI_SINGLE_LINE_COMPONENT
 }
 
 /**************************************************************************
 *	Function	: 			_IsAudioEmpty
 *	In		:
 *	Out 	:
 *	Desc	:
 ***************************************************************************/
 #ifdef D_GUI_SINGLE_LINE_COMPONENT
 BOOL _IsAudioEmpty(void)
 {
 	if ((0 == CoreAPI_GetTotalAudioNum() || ERROR_AUDIO_NUM == CoreAPI_GetTotalAudioNum())  ||
 	    ( eClipType_JPEG == CoreAPI_GetCurrentClipType()))
 	 	return TRUE;
 	else
 		return FALSE;
 }
 #endif //D_GUI_SINGLE_LINE_COMPONENT
 /**************************************************************************
 *	Function	: 			_IsSubTitleEmpty
 *	In		:
 *	Out 	:
 *	Desc	:
 ***************************************************************************/
 #ifdef D_GUI_SINGLE_LINE_COMPONENT
 BOOL _IsSubTitleEmpty(void)
 {
 		if ((0 == CoreAPI_GetTotalSubtitleNum() || ERROR_SUBTITLE_NUM == CoreAPI_GetTotalSubtitleNum()) 
 		 ||( eClipType_JPEG == CoreAPI_GetCurrentClipType()))
 		 	return TRUE;
 		else
 			return FALSE;
 }
 #endif //D_GUI_SINGLE_LINE_COMPONENT
  /**************************************************************************
 *	Function	: 			_IsAngleEmpty
 *	In		:
 *	Out 	:
 *	Desc	:
 ***************************************************************************/
 #ifdef D_GUI_SINGLE_LINE_COMPONENT
 BOOL _IsAngleEmpty(void)
 {
 		if ((0 == CoreAPI_GetTotalAngleNum() ||ERROR_ANGLE_NUM == CoreAPI_GetTotalAngleNum()) ||
 		( eClipType_JPEG == CoreAPI_GetCurrentClipType()))
 		 	return TRUE;
 		else
 			return FALSE;
 }
 #endif //D_GUI_SINGLE_LINE_COMPONENT
 /**************************************************************************
 *	Function	:
 *	In		:
 *	Out 	:
 *	Desc	:
 ***************************************************************************/
 static MS_OP _PPTextTickOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
 {
 	switch(MsOp)
 	{
 
 		case MS_OP_TICK:
 				// Update the refresh count:
 				pThis->mwAttr = (pThis->mwAttr & ~MS_ATTR_TICK_MASK) |((pThis->mwAttr & MS_ATTR_TICK_MASK) << 1);
			if((pThis->mwAttr & MS_ATTR_TICK_MASK) >= NUMBER_OF_TICKS_PER_UPDATE)
 				{
 					// Reset the refresh count:
 					pThis->mwAttr = ((pThis->mwAttr & ~MS_ATTR_TICK_MASK) | MS_ATTR_UPDATE_TICK_START_COUNT);
	  			if ((!MS_IsInvisible(pThis->mpParent)) && _IsDisplayRefreshAllowed())
	 			{
 					// Refresh:
 					MS_SendOperation(pThis, MS_OP_BUILD_TEXT_STRING, (UINT32)((MS_DESCRIPTOR_TEXT*)(pThis->mpDescriptor))->mText->mParam);
				#if (defined( D_GUI_SINGLE_LINE_COMPONENT) &&defined ( D_GUI_OSD_2BPP))
					if(!MS_IsInvisible(pThis) && pThis->moArea.msX > COL_A_LINE_X_POS)
					{
	      					FORMATED_UNICODE_STRING  oFormUniStr;
						// TODO: write func get the width of str
	      					OSDR_GetFormUniStr_ScFormatted((FORMATED_UNICODE_STRING __NEAR*)&oFormUniStr, (UINT32)(((MSO_TEXT __NEAR*)pThis)->moParam.wScFormUniStr));
	      					if(COL_B_WIDTH < oFormUniStr.mwPixelWidth)
	      					{
	      						MS_ObjectResize(((MSO_OBJECT __NEAR*) MS_GetParentPtr(pThis)), OSD_LAYOUT_AREA_POPUP_W_MAX,  ((MSO_OBJECT __NEAR*) MS_GetParentPtr(pThis))->moArea.mwH);
	      						MS_ObjectResize(pThis,oFormUniStr.mwPixelWidth,pThis->moArea.mwH);
							MS_DisplayAddObject(((MSO_OBJECT __NEAR*) MS_GetParentPtr(pThis)));
	      					}
	      					else
	      					{
	      						MS_DisplayAddObject(((MSO_OBJECT __NEAR*) MS_GetParentPtr(pThis)));
	      						MS_ObjectResize(((MSO_OBJECT __NEAR*) MS_GetParentPtr(pThis)), OSD_LAYOUT_AREA_POPUP_W,  ((MSO_OBJECT __NEAR*) MS_GetParentPtr(pThis))->moArea.mwH);
	      						MS_ObjectRestorePosition(pThis);
							
	      					}
	      				}
				#endif//( D_GUI_SINGLE_LINE_COMPONENT && D_GUI_OSD_2BPP)
 					MS_SendOperation(pThis, MS_OP_REFRESH, lParam);
 				}
 			}
 			break;
 	}
 	// Now call the generic preproctext op handler:
 	return(OTEXT_Operation(pThis, MsOp, lParam));
 }
 
 /**************************************************************************
 *	Function	:
 *	In		:
 *	Out 	:
 *	Desc	:
 ***************************************************************************/
 #pragma argsused
 static void _GetPos1Str(FORMATED_UNICODE_STRING __NEAR* pFormUniStr, UINT32 lParam)
 {
 	// Determine the disc type:
 	switch(CoreAPI_GetCurrentMediaType())
 	{
#ifdef DVD_VR_SUPPORT
		case MEDIA_TYPE_DVDVR:
#endif		
 		case MEDIA_TYPE_DVD_VIDEO:
 			// Pos 1 is the title for a DVDV
 			OSDR_GetFormUniStr_OsdMessage(pFormUniStr, (UINT32)S_TITLE);
 			break;
 		
 #ifdef DVD_AUDIO_SUPPORT
 		case MEDIA_TYPE_DVD_AUDIO:
 			// Pos 1 is the group for a DVDA
 			OSDR_GetFormUniStr_OsdMessage(pFormUniStr, (UINT32)S_GROUP);
 			break;
 #endif
 		case MEDIA_TYPE_VCD:
		case MEDIA_TYPE_SVCD:
			if(CoreAPI_IsPBCOn())
			{
				OSDR_GetFormUniStr_OsdMessage(pFormUniStr, (UINT32)S_PBC_ON);
			}
			else
			{
	 			OSDR_GetFormUniStr_OsdMessage(pFormUniStr, (UINT32)S_TRACK);
			}
 				break;
 		case MEDIA_TYPE_CLIPS:
 			{
 #ifdef D_DIVX6_SUPPORT
 				//for DivX and Avi , only DivX6 need Title
  				 if (CoreAPI_IsCurrItemDivX6())
 				{
 					OSDR_GetFormUniStr_OsdMessage(pFormUniStr, (UINT32)S_TITLE);
 					break;
 				}
 #endif//D_DIVX6_SUPPORT
 #ifdef IS_ASF_CAPABLE
 				if ( eClipType_ASF ==  CoreAPI_GetCurrentClipType() )
 				{
 					OSDR_GetFormUniStr_OsdMessage(pFormUniStr, (UINT32)S_TITLE);
 					break;
 				}
 #endif //#ifdef IS_ASF_CAPABLE
 			}
 
 		default:
 			OSDR_GetFormUniStr_OsdMessage(pFormUniStr, (UINT32)S_TRACK);
 			break;
 	}
 
 	return;
 }
 
 /**************************************************************************
 *	Function	:
 *	In		:
 *	Out 	:
 *	Desc	:
 ***************************************************************************/
 #pragma argsused
 static void _GetPos1ValueStr(FORMATED_UNICODE_STRING __NEAR* pFormUniStr, UINT32 lParam)
 {
 	// Determine the disc type:
 	switch(CoreAPI_GetCurrentMediaType())
 	{
 #ifdef DVD_AUDIO_SUPPORT
 		case MEDIA_TYPE_DVD_AUDIO:
	         	// FALL THRU
 #endif
#ifdef DVD_VR_SUPPORT
		case MEDIA_TYPE_DVDVR:
#endif
 		case MEDIA_TYPE_DVD_VIDEO:
 			// Display the current and total title values.
 			STR_GenerateNumericAndTotalNumeric(	CoreAPI_GetCurrentTitleGroupNum(),
 												CoreAPI_GetTotalTitleGroupNum(),
 												(UINT16*)&(pFormUniStr->mszUniStr),
 												0,
 												UNISTR_LENGTH_MAX+1);
 			OSDR_FormatUniString(pFormUniStr);
 			break;
		
 		case MEDIA_TYPE_VCD:
		case MEDIA_TYPE_SVCD:
			if(CoreAPI_IsPBCOn())
			{
				OSDR_GetFormUniStr_OsdMessage(pFormUniStr, (UINT32)S_NULL);
			}
			else
			{
	 			STR_GenerateNumericAndTotalNumeric(CoreAPI_GetCurrentChapterTrackNum(),
												CoreAPI_GetTotalChapterTrackNum(0),
												(UINT16*)&(pFormUniStr->mszUniStr),
												0,
												UNISTR_LENGTH_MAX+1);		
	 			OSDR_FormatUniString(pFormUniStr);
			}
 				break;
			
 		case MEDIA_TYPE_CLIPS:
 			{
 #ifdef D_DIVX6_SUPPORT
 				//For all avi and DivX ,only DivX6 need Title
 				if (CoreAPI_IsCurrItemDivX6())
 				{
 					if (CoreAPI_IsMPEG4TitleAvailable())
 					{
 						STR_GenerateNumericAndTotalNumeric(	CoreAPI_GetCurrentTitleGroupNum(),
 													CoreAPI_GetTotalTitleGroupNum(),
 													(UINT16*)&(pFormUniStr->mszUniStr),
 													0,
 													UNISTR_LENGTH_MAX+1);
						OSDR_FormatUniString(pFormUniStr);
					       break; 
 					}
					else//if is Divx6 , be sure not reach default .
					{
						OSDR_GetFormUniStr_OsdMessage(pFormUniStr, S_NULL);
						 break; 
					}
					
 				}
 #endif//D_DIVX6_SUPPORT
  #ifdef IS_MP4_CAPABLE
 				if (eClipType_MP4 == CoreAPI_GetCurrentClipType() )
				{

 // TODO: this condition should be set after API update this func to support MP4
 //					if (CoreAPI_IsMPEG4TitleAvailable())
 //					{
 						STR_GenerateNumericAndTotalNumeric(	CoreAPI_GetCurrentTitleGroupNum(),
 													CoreAPI_GetTotalTitleGroupNum(),
 													(UINT16*)&(pFormUniStr->mszUniStr),
 													0,
 													UNISTR_LENGTH_MAX+1);	
						OSDR_FormatUniString(pFormUniStr);
						break;
//					}
//					else//be sure not reach default . 
//					{
//						OSDR_GetFormUniStr_OsdMessage(pFormUniStr, S_NULL);
//						break;
//					}
				 
					
 				}
 #endif //IS_MP4_CAPABLE
 #ifdef D_GUI_ITEM_ACCESS
				{
					UINT16 wCurrentItemNum = CoreAPI_GetUiItemIndexCurrent();
					UINT16 wTotalItemNum = CoreAPI_GetUiItemIndexTotal();
					if (NULL_INDEX == wCurrentItemNum)
						wCurrentItemNum = 0;
					if (NULL_INDEX == wTotalItemNum)
						wTotalItemNum = 0;
					
					STR_GenerateNumericAndTotalNumeric(wCurrentItemNum, wTotalItemNum, (UINT16*)&(pFormUniStr->mszUniStr), 0, UNISTR_LENGTH_MAX+1);		
		 			OSDR_FormatUniString(pFormUniStr);
					break;
				}
 #endif //D_GUI_ITEM_ACCESS
 			}
 
 		default:			
 			STR_GenerateNumericAndTotalNumeric(CoreAPI_GetCurrentChapterTrackNum(),
											CoreAPI_GetTotalChapterTrackNum(0),
											(UINT16*)&(pFormUniStr->mszUniStr),
											0,
											UNISTR_LENGTH_MAX+1);		
 			OSDR_FormatUniString(pFormUniStr);
 			break;
 	}
 
 	return;
 }
 
 /**************************************************************************
 *	Function	:
 *	In		:
 *	Out 	:
 *	Desc	:
 ***************************************************************************/
 #pragma argsused
 static void _GetPos2Str(FORMATED_UNICODE_STRING __NEAR* pFormUniStr, UINT32 lParam)
 {
 	// Determine the disc type:
 	switch(CoreAPI_GetCurrentMediaType())
 	{
#ifdef DVD_VR_SUPPORT
		case MEDIA_TYPE_DVDVR:
			// FALL THRU
#endif
 		case MEDIA_TYPE_DVD_VIDEO:
 			OSDR_GetFormUniStr_OsdMessage(pFormUniStr, S_CHAPTER);
 			break;
 
 #ifdef DVD_AUDIO_SUPPORT
 		case MEDIA_TYPE_DVD_AUDIO:
 			OSDR_GetFormUniStr_OsdMessage(pFormUniStr, S_TRACK);
 			break;
 #endif
 		case MEDIA_TYPE_CLIPS:
 #ifdef D_DIVX6_SUPPORT
			 //For all avi and DivX ,only DivX6 need Chapter
 			if( CoreAPI_IsCurrItemDivX6())
 			{
  				if (CoreAPI_IsMPEG4ChapterAvailable())
 				{
 					OSDR_GetFormUniStr_OsdMessage(pFormUniStr, S_CHAPTER);
 					break;
 				}
 			}
 #endif//D_DIVX6_SUPPORT
  #ifdef IS_MP4_CAPABLE
 			if( eClipType_MP4 == CoreAPI_GetCurrentClipType() )
 			{
 
 				if (CoreAPI_IsMPEG4ChapterAvailable())
 				{
 					OSDR_GetFormUniStr_OsdMessage(pFormUniStr, S_CHAPTER);
 					break;
 				}
 			}
 #endif //IS_MP4_CAPABLE
 		default:	// nothing to display in this position
 			OSDR_GetFormUniStr_OsdMessage(pFormUniStr, S_NULL);
 			break;
 	}
 	return;
 }
 
 /**************************************************************************
 *	Function	:
 *	In		:
 *	Out 	:
 *	Desc	:
 ***************************************************************************/
 #pragma argsused
 static void _GetPos2ValueStr(FORMATED_UNICODE_STRING __NEAR* pFormUniStr, UINT32 lParam)
 {
 	// Determine the disc type:
 	switch(CoreAPI_GetCurrentMediaType())
 	{
 #ifdef DVD_AUDIO_SUPPORT
 		case MEDIA_TYPE_DVD_AUDIO:
         	// FALL THRU
 #endif
#ifdef DVD_VR_SUPPORT
		case MEDIA_TYPE_DVDVR:
#endif
 		case MEDIA_TYPE_DVD_VIDEO:
			if (0 == CoreAPI_GetCurrentChapterTrackNum())
			{
				STR_GenerateOSDMESSAGEString(S_EMPTY_CHAPTER, 
												(UINT16*)&(pFormUniStr->mszUniStr),
												0, 
												UNISTR_LENGTH_MAX+1);
			}
			else
			{
	 			// Display the current and total chapter values.
	 			STR_GenerateNumericAndTotalNumeric(CoreAPI_GetCurrentChapterTrackNum(),
	 											CoreAPI_GetTotalChapterTrackNum(CoreAPI_GetCurrentTitleGroupNum()),
	 											(UINT16*)&(pFormUniStr->mszUniStr),
	 											0,
	 											UNISTR_LENGTH_MAX+1);
			}
 			OSDR_FormatUniString(pFormUniStr);
 			break;
			
		case MEDIA_TYPE_CLIPS:
#ifdef D_DIVX6_SUPPORT
 			if (eClipType_AVI == CoreAPI_GetCurrentClipType())
			{
 				if (CoreAPI_IsMPEG4ChapterAvailable())
 				{
					if (0 == CoreAPI_GetCurrentChapterTrackNum())
					{
						STR_GenerateOSDMESSAGEString(S_EMPTY_CHAPTER, 
												(UINT16*)&(pFormUniStr->mszUniStr),
												0, 
												UNISTR_LENGTH_MAX+1);
					}
					else
					{
	 					STR_GenerateNumericAndTotalNumeric(CoreAPI_GetCurrentChapterTrackNum(),
	 											CoreAPI_GetTotalChapterTrackNum(CoreAPI_GetCurrentChapterTrackNum()),
	 											(UINT16*)&(pFormUniStr->mszUniStr),
	 											0,
	 											UNISTR_LENGTH_MAX+1);
					}
 					OSDR_FormatUniString(pFormUniStr);
 					break;
 				}
 			}
 #endif//D_DIVX6_SUPPORT

  #ifdef IS_MP4_CAPABLE
 			if (eClipType_MP4 == CoreAPI_GetCurrentClipType() )
			{
 				if (CoreAPI_IsMPEG4ChapterAvailable())
 				{
					if (0 == CoreAPI_GetCurrentChapterTrackNum())
					{
						STR_GenerateOSDMESSAGEString(S_EMPTY_CHAPTER, 
												(UINT16*)&(pFormUniStr->mszUniStr),
												0, 
												UNISTR_LENGTH_MAX+1);
					}
					else
					{
	 					STR_GenerateNumericAndTotalNumeric(CoreAPI_GetCurrentChapterTrackNum(),
	 											CoreAPI_GetTotalChapterTrackNum(CoreAPI_GetCurrentChapterTrackNum()),
	 											(UINT16*)&(pFormUniStr->mszUniStr),
	 											0,
	 											UNISTR_LENGTH_MAX+1);
					}
 					OSDR_FormatUniString(pFormUniStr);
 					break;
 				}
 			}
 #endif //IS_MP4_CAPABLE

 		default:	// nothing to display in this position
  			OSDR_GetFormUniStr_OsdMessage(pFormUniStr, (UINT32)S_NULL);
 			break;
 	}
 
 	return;
 }
 
 /**************************************************************************
 *	Function	:
 *	In		:
 *	Out 	:
 *	Desc	:
 ***************************************************************************/
 #pragma argsused
 static void _GetPos3Str(FORMATED_UNICODE_STRING __NEAR* pFormUniStr, UINT32 lParam)
 {
 	// Determine the disc type:
 	switch(CoreAPI_GetCurrentMediaType())
 	{
 		case MEDIA_TYPE_CLIPS:

⌨️ 快捷键说明

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