亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mso_choice.c

?? ZORAN 962/966 SOURCE CODE,DVD chip
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* **************************************************************************************
*  Copyright (c) 2004 ZORAN Corporation, All Rights Reserved
*  THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ZORAN CORPORATION
*
*  File: $Workfile: o_choice.c $
*
* Description:
* ============
* Project definition of the MSO_CHOICE functions
*
****************************************************************************************/
#include "Config.h"		// Global Configuration - do not remove!

#ifdef DEBUG_UI_TRACE
#undef IFTRACE
#define IFTRACE if (gTraceUI)
#include "Debug\DbgMain.h"
#endif //DEBUG_UI_TRACE

#include "Include\SysDefs.h"

/***************************************************************************************
* Include files
****************************************************************************************/
#include <stdio.h>
#include <string.h>
#include "include\math-macro.h"
#include "Playcore\ScPad\SCMGR.h"

#include "GUI\Menu_system\ms_object.h"
#include "GUI\menu_system\osd_rendering.h"
#include "GUI\menu_system\ms_display.h"
#include "GUI\Menu_system\ms_screen.h"
#include "GUI\Menu_system\ms_send_op.h"
#include "GUI\Object_class\Choice\mso_choice.h"
#include "GUI\Object_class\Vlist\mso_vlist.h"

//#include "Menu\menu_operation_def.h"
#include "GUI\Resource\Bitmap\bitmap.h"

// Include configuration header file: named constants, macros and typedefs.
#include "GUI\Object_class\Choice\mso_choice_config.h"
// Include custom header file: customer specific definitions, over-writing common ones.
#include "GUI\Object_class\Choice\mso_choice_custom.h"

#ifndef DEBUG_UI_TRACE
#undef dbg_printf(sMsg)
#define dbg_printf(sMsg)
#undef	dbgm_printf(sMsg, mode)
#define dbgm_printf(sMsg, mode)
#endif

/***************************************************************************************
* 	Named Constants
****************************************************************************************/
/***************************************************************************************
* 	Private Macros
****************************************************************************************/
#define COLON						L":"

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

/***************************************************************************************
*	Function	: 	ListItemOperation
*
*	In		: 	pThis	=	Pointer to the list item (MSO_LISTITEM) object.
*
*				MsOp	=	Operation ID.
*
*				lParam	=	Parameter associated with an MS_OP if any.
*
*	Out		: 	None.
*
*	Return	:	ID of the operation that is to be propagated once processing is done,
*				otherwise MS_OP_NONE.
*
*	Desc 	:	This function default operation function of MSO_LISTITEM objects.
****************************************************************************************/
#pragma argsused
MS_OP ListItemOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{
	 switch(MsOp)
	{
	case MS_OP_FOCUS_CHANGE:
		// We have gained or lost focus. Ask for a redisplay.
		if (!MS_IsInvisible(pThis))
			MS_DisplayAddObject(pThis);
		break;

	// This code is the generic behaviour for closing a VLIST. It is enough to get you started, and will work in most cases.
	// If you want different behaviour, or are using a VSCROLL LIST, you will need to override this behaviour.
	case MS_OP_LEFT:	// FALL THRU
	case MS_OP_ENTER:
		{
			MSO_LISTITEM __NEAR* pListItem 		= (MSO_LISTITEM __NEAR*)pThis;
			MSO_VLIST __NEAR* pList	 		= (MSO_VLIST __NEAR*)pThis->mpParent;
			MSO_OBJECT __NEAR* pParamVList 	= (MSO_OBJECT __NEAR*)((MSO_OBJECT __NEAR*)((MSO_OBJECT __NEAR*)pList)->mpParent)->mpParent;
			MS_DESCRIPTOR_CHOICE* pDescriptorChoice = (MS_DESCRIPTOR_CHOICE*)pList->moParam.mdwData;

			MSO_CHOICE __NEAR* pChoice = (MSO_CHOICE __NEAR*)MS_FindObjectFromDescriptor((MSO_CONTAINER __NEAR*)pParamVList,
																							(MS_DESCRIPTOR*)pDescriptorChoice);

			// Is the selected value different to the current value of this choice?
			if(mpfMutatorNull != pDescriptorChoice->mpfMutator)
				pDescriptorChoice->mpfMutator((MSO_OBJECT __NEAR*)pChoice, eMutatorSet, pListItem->moParam.mwValue);

			// Remove the vertical list from the screen:
			MS_SetInvisible(pList);

			// Restore size and layer information of the concerned MSO_CHOICE object.
			pChoice->moObject.moArea.mwW = pChoice->moObject.mpDescriptor->moArea.mwW;
			MS_ScreenSetFocusObject((MSO_OBJECT __NEAR*)pChoice);
			MS_CHOICE_DISPLAY_NORMAL(pChoice);
			MS_DisplayAddObject(pParamVList);
		}
		return MS_OP_NONE;

	default:
		break;
	}
	return MsOp;
}

/***************************************************************************************
*	Function	: 	ChoiceOperation
*
*	In		: 	pThis	=	Pointer to the Choice (MSO_CHOICE) object.
*
*				MsOp	=	Operation ID.
*
*				lParam	=	Parameter associated with an MS_OP if any.
*
*	Out		: 	None.
*
*	Return	:	ID of the operation that is to be propagated once processing is done,
*				otherwise MS_OP_NONE.
*
*	Desc 	:	This function default operation function of MSO_CHOICE objects.
****************************************************************************************/
#pragma argsused
MS_OP ChoiceOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{
	switch(MsOp)
	{
	// Initialise the choice with the correct starting value.
	case MS_OP_INIT:
	case MS_OP_ON_DEFROST:
	case MS_OP_REFRESH:
		if(mpfMutatorNull != ((MS_DESCRIPTOR_CHOICE*)pThis->mpDescriptor)->mpfMutator)
			((MS_DESCRIPTOR_CHOICE*)pThis->mpDescriptor)->mpfMutator(pThis, eMutatorGet, 0);
		
		if (MS_OP_REFRESH == MsOp)
			MS_DisplayAddObject(pThis);
		
		break;

	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:
		return MS_OP_NONE;

	case MS_OP_FOCUS_CHANGE:
		// We have gained or lost focus. Ask for a redisplay.
		MS_DisplayAddObject(pThis);
		break;

	default:
		break;
	}
	return MsOp;
}

/***************************************************************************************
*	Function 	: 	ChoiceOperation
*
*	In		:
*
*	Out		:
*
*	Desc 	:	The Repeat mode choice operation function.
****************************************************************************************/
MS_OP ChoiceNoExpandingOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{
	// Pre-processing
	switch(MsOp)
	{
	case MS_OP_ENTER:
		if (mpfMutatorNull == ((MS_DESCRIPTOR_CHOICE*)(pThis->mpDescriptor))->mpfMutator)
			break;
		
		if (!MS_IS_CHOICE_DISABLED(pThis))
		{
			UINT16 wValueIndex;
			UINT16 wValueIndexMax;
			UINT16 wValue;
			UINT16 wLoop;

			wValueIndex = ((MSO_CHOICE __NEAR*)pThis)->moParam.mwCurrValIndex;
			MS_ASSERT(((MS_DESCRIPTOR_CHOICE*)(pThis->mpDescriptor))->mcTotalValues > 0);
			wValueIndexMax =  ((MS_DESCRIPTOR_CHOICE*)(pThis->mpDescriptor))->mcTotalValues - 1;
			
			wLoop = 0;

			// Avoid infinite loop
			while (wLoop++ < wValueIndexMax)
			{
				// Increase the index in table of possible values
				 wValueIndex++;
				if (wValueIndex > wValueIndexMax)
					wValueIndex = 0;

				// Get the value to set from the new index
				wValue = OCHOICE_GetValueFromIndex(pThis, wValueIndex);
				((MS_DESCRIPTOR_CHOICE*)(pThis->mpDescriptor))->mpfMutator(pThis, eMutatorSet, wValue);
				// Mutator doesn't return a result, so we get the index and compare the associated value with the value we tried to set
				((MS_DESCRIPTOR_CHOICE*)(pThis->mpDescriptor))->mpfMutator(pThis, eMutatorGet, 0);
				// If the value set succed, then it's finished, else we continue
				if (wValueIndex == ((MSO_CHOICE __NEAR*)pThis)->moParam.mwCurrValIndex)
					break;
			}
			// Refresh the display of the choice		
			MS_SendOperation(pThis, MS_OP_REFRESH, 0);
			return MS_OP_NONE;
		}
		break;

	default:
		break;
	} 
	
	return ChoiceOperation(pThis, MsOp, lParam);
}


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

/***************************************************************************************
*	Function	: 	ListItemFillOSDSeg
*
*	In		: 	pThis	=	Pointer to a list item.
*
*				pAbsArea	=	Absolute area of pThis object.
*
*	Out		: 	None.
*
*	Return	:	None.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区播放老司机| 成人丝袜18视频在线观看| 精品视频在线看| 亚洲黄色片在线观看| 色狠狠桃花综合| 亚洲一区中文日韩| 在线播放日韩导航| 国产专区欧美精品| 中文字幕av一区二区三区高| av电影天堂一区二区在线| 亚洲女爱视频在线| 欧美日韩中文一区| 精品午夜久久福利影院| 国产色91在线| 91久久一区二区| 日本在线不卡视频一二三区| 久久久无码精品亚洲日韩按摩| 播五月开心婷婷综合| 日韩电影在线一区二区| 欧美精品一区二区三| 国产成人福利片| 亚洲综合一区在线| 精品乱码亚洲一区二区不卡| 成人av在线一区二区| 天堂av在线一区| 欧美高清在线一区| 欧美日韩aaa| 国产suv精品一区二区6| 亚洲电影视频在线| 国产欧美日韩综合| 欧美日本乱大交xxxxx| 国产成人精品免费看| 一区二区三区成人在线视频| 日韩三级在线免费观看| 色素色在线综合| 精品一区二区三区免费毛片爱| 中文字幕五月欧美| 精品久久久久久久人人人人传媒 | 国产精品污污网站在线观看| 欧美在线一区二区三区| 国产精品一区一区| 天涯成人国产亚洲精品一区av| 中文字幕欧美激情一区| 欧美精品777| 91久久精品午夜一区二区| 国产九九视频一区二区三区| 午夜视频一区在线观看| 国产精品不卡一区二区三区| 精品国产电影一区二区| 欧美日韩国产综合视频在线观看 | 香蕉成人伊视频在线观看| 国产嫩草影院久久久久| 91精品国产高清一区二区三区| 91丝袜高跟美女视频| 国产999精品久久久久久| 另类小说一区二区三区| 亚洲欧美电影院| 国产精品午夜在线| 久久影音资源网| 日韩欧美一区二区视频| 欧美日本国产视频| 91国偷自产一区二区开放时间 | 久久99久久精品| 亚洲成人资源在线| 一区二区三区精品视频在线| 国产精品欧美一区二区三区| 久久久.com| 337p粉嫩大胆色噜噜噜噜亚洲| 91麻豆精品国产91久久久久久 | av资源网一区| 成人动漫在线一区| 成人高清免费观看| www.66久久| 99精品久久只有精品| 成人午夜精品一区二区三区| 国产成人精品www牛牛影视| 国产精品66部| 国产91清纯白嫩初高中在线观看| 国内精品嫩模私拍在线| 激情文学综合丁香| 国产一区高清在线| 国产精品一区二区三区99| 国产一区免费电影| 高清国产一区二区三区| 成人美女在线视频| 成人av电影在线观看| 成人国产一区二区三区精品| 91香蕉视频污在线| 在线观看成人小视频| 精品视频在线视频| 日韩欧美一区二区视频| 久久理论电影网| 国产精品久久夜| 一区二区欧美视频| 亚洲va中文字幕| 欧美a级理论片| 韩国在线一区二区| 国产成人激情av| 色婷婷综合久久| 欧美一区二区三区婷婷月色| 久久亚洲一级片| 综合分类小说区另类春色亚洲小说欧美| 日本va欧美va瓶| 美国三级日本三级久久99| 国产精品一区二区黑丝| 99亚偷拍自图区亚洲| 欧美视频一二三区| 久久久欧美精品sm网站| 亚洲欧洲日韩一区二区三区| 午夜欧美大尺度福利影院在线看| 狠狠狠色丁香婷婷综合激情| 91在线国内视频| 欧美一区二区三区日韩| 中文字幕一区二区三区四区不卡 | 视频在线观看一区| 国产在线精品免费| 在线观看国产91| 26uuu国产电影一区二区| 亚洲欧美怡红院| 三级一区在线视频先锋 | 久久精品国产99国产精品| 懂色av一区二区三区免费看| 欧美性高清videossexo| 精品福利一二区| 亚洲va欧美va国产va天堂影院| 国内精品不卡在线| 在线观看国产精品网站| 欧美国产日韩a欧美在线观看 | 午夜精品一区在线观看| 国产传媒欧美日韩成人| 在线综合亚洲欧美在线视频| 综合激情成人伊人| 国产精品亚洲午夜一区二区三区 | 韩国av一区二区三区| 在线免费不卡视频| 中文字幕电影一区| 喷水一区二区三区| 欧美日韩在线三区| 自拍偷拍国产精品| 国产成人精品免费网站| 日韩亚洲欧美中文三级| 亚洲激情欧美激情| 9人人澡人人爽人人精品| 久久亚洲综合av| 久久国产福利国产秒拍| 制服丝袜激情欧洲亚洲| 亚洲激情中文1区| 99这里只有久久精品视频| 精品成人私密视频| 美女视频黄免费的久久| 欧美久久一二三四区| 亚洲一区二区不卡免费| 色94色欧美sute亚洲线路一久| 国产精品久久久久影院色老大| 国产成人啪免费观看软件| 欧美mv和日韩mv国产网站| 蜜臀国产一区二区三区在线播放| 91国在线观看| 一区二区三区高清| 欧美性猛片aaaaaaa做受| 亚洲精品欧美二区三区中文字幕| 丁香桃色午夜亚洲一区二区三区| 久久亚洲一级片| 国产一区二区91| 国产亚洲欧美激情| 国产99精品在线观看| 国产欧美日韩精品a在线观看| 国产自产视频一区二区三区| 久久综合九色综合97婷婷| 国产精品一卡二卡在线观看| 亚洲乱码国产乱码精品精可以看| 成人免费的视频| 中文字幕一区三区| 色婷婷久久综合| 亚洲精品美腿丝袜| 欧美性极品少妇| 日韩高清一级片| 欧美一区二区三区播放老司机| 日本不卡高清视频| 欧美xxxxxxxx| 成人午夜激情影院| 亚洲精品成人在线| 欧美日韩视频在线第一区 | 黄色精品一二区| 久久久精品中文字幕麻豆发布| 九九久久精品视频| 国产精品无圣光一区二区| 91福利国产成人精品照片| 亚欧色一区w666天堂| 日韩欧美国产不卡| 国产a久久麻豆| 亚洲免费av高清| 日韩欧美一级精品久久| 国产成人自拍在线| 亚洲国产日韩在线一区模特| 欧美一二三在线| 国产激情一区二区三区桃花岛亚洲| 欧美国产激情一区二区三区蜜月 | 欧美日韩不卡一区| 国产精品一级在线|