亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
91美女在线观看| 国产性色一区二区| 日本人妖一区二区| 国产亚洲精品超碰| 欧美系列日韩一区| 国产成人精品影视| 亚洲成人动漫在线免费观看| 欧美不卡在线视频| 色婷婷亚洲综合| 波多野结衣一区二区三区| 免费成人在线观看视频| 国产精品久久久久毛片软件| 欧美丰满少妇xxxxx高潮对白| 国产成人av一区二区三区在线| 午夜精品福利在线| 亚洲裸体在线观看| 中文字幕制服丝袜成人av| 日韩欧美一二三区| 欧美一区二区精品久久911| 97精品视频在线观看自产线路二| 韩国成人精品a∨在线观看| 亚洲国产视频a| 亚洲午夜在线电影| 亚洲韩国一区二区三区| 洋洋av久久久久久久一区| 国产精品欧美久久久久一区二区| 久久综合色综合88| 久久久久久一二三区| 99精品一区二区| 国产乱色国产精品免费视频| 美脚の诱脚舐め脚责91 | 东方欧美亚洲色图在线| 国产一区二区三区在线观看免费| 欧美aaa在线| 盗摄精品av一区二区三区| 成人免费视频网站在线观看| av在线不卡观看免费观看| 色天天综合久久久久综合片| 欧美日韩久久一区| 欧美电影免费提供在线观看| 久久精品无码一区二区三区| 日韩理论片一区二区| 偷窥少妇高潮呻吟av久久免费| 一区二区三区四区不卡视频 | 国产精品入口麻豆九色| 一区二区视频在线看| 美国十次了思思久久精品导航| 国产在线播放一区三区四| 一本久道中文字幕精品亚洲嫩| 91麻豆精品国产91| 亚洲视频在线一区观看| 黄一区二区三区| 欧美日韩国产免费| 亚洲日本一区二区三区| 国产伦精品一区二区三区视频青涩| 欧美在线观看一区二区| 国产精品日韩精品欧美在线| 免费看日韩精品| 欧美人牲a欧美精品| 亚洲伦在线观看| 99精品视频在线免费观看| 久久免费偷拍视频| 精品一区二区三区久久久| 51精品久久久久久久蜜臀| 夜夜亚洲天天久久| 欧美性做爰猛烈叫床潮| 一区二区三区电影在线播| 99精品国产99久久久久久白柏| 国产欧美日韩视频一区二区| 精品在线播放免费| 欧美精品一区视频| 老司机精品视频线观看86| 成人av资源网站| 26uuu久久天堂性欧美| 国产一区二三区好的| 欧美精品一区二区精品网| 狠狠色狠狠色合久久伊人| 久久久久久久免费视频了| av中文字幕亚洲| 亚洲国产精品久久久久秋霞影院 | 色悠悠久久综合| 亚洲成av人片www| www日韩大片| 91麻豆自制传媒国产之光| 亚洲精品视频免费看| 777精品伊人久久久久大香线蕉| 麻豆一区二区99久久久久| 国产精品大尺度| 日韩欧美一二三| 在线视频你懂得一区| 国模大尺度一区二区三区| 亚洲丰满少妇videoshd| 久久久久久久久99精品| 欧美色老头old∨ideo| 国产精品18久久久久久久久| 午夜免费欧美电影| 亚洲天堂精品在线观看| 久久青草欧美一区二区三区| 在线观看精品一区| 国产成人av自拍| 极品少妇xxxx偷拍精品少妇| 亚洲国产精品久久一线不卡| 国产精品热久久久久夜色精品三区| 日韩欧美国产wwwww| 欧美视频一区二区在线观看| 色综合色综合色综合色综合色综合| 久久99深爱久久99精品| 久久精品国产第一区二区三区| 亚洲香肠在线观看| 日韩精品免费专区| 午夜视频一区二区三区| 亚洲成av人片在线观看无码| 亚洲一区二区在线免费观看视频| 亚洲综合色噜噜狠狠| 亚洲综合免费观看高清完整版| 亚洲欧洲性图库| 亚洲一区二区三区四区的 | 久久99九九99精品| 国产成人亚洲精品青草天美| 成人av动漫在线| 欧美亚洲国产一区二区三区va| 欧美伊人久久大香线蕉综合69| 欧美精品久久久久久久多人混战| 色综合一区二区三区| 韩国v欧美v日本v亚洲v| 精品在线亚洲视频| 欧美亚洲愉拍一区二区| 在线观看亚洲精品| 欧美大度的电影原声| 国产精品三级电影| 亚洲综合色在线| 国产毛片精品视频| 日本道在线观看一区二区| 欧美视频一区二区三区| 精品成人一区二区| 亚洲一区二区三区中文字幕在线| 香蕉久久一区二区不卡无毒影院| 狂野欧美性猛交blacked| 不卡的av电影在线观看| 67194成人在线观看| 悠悠色在线精品| 国产不卡在线一区| 精品国产sm最大网站免费看| 一区二区三区中文免费| 懂色av噜噜一区二区三区av| 欧美日韩不卡在线| 欧美激情一区二区三区不卡| 丝袜亚洲另类欧美| 91搞黄在线观看| 亚洲婷婷在线视频| av不卡在线播放| 国产人成一区二区三区影院| 久久精品久久99精品久久| 91精品国产综合久久蜜臀 | 欧美三级日韩在线| 中文字幕一区二区三区精华液| 国产乱码精品一区二区三| 欧美α欧美αv大片| 激情另类小说区图片区视频区| 在线不卡免费欧美| 日本不卡一二三| 国产清纯美女被跳蛋高潮一区二区久久w| 午夜欧美视频在线观看| 91麻豆精品国产91久久久久久| 五月激情六月综合| 久久久久久免费网| 91视频精品在这里| 日韩影视精彩在线| 国产精品无遮挡| 欧美视频完全免费看| 日韩精品电影在线| 精品成人免费观看| 一本一道久久a久久精品| 久久99热这里只有精品| 国产精品伦一区| 欧美日韩在线播| 高清国产午夜精品久久久久久| 亚洲午夜av在线| 久久精品水蜜桃av综合天堂| 91九色最新地址| 久久精品av麻豆的观看方式| 国产精品女上位| 精品国产乱码久久久久久图片 | 成人免费一区二区三区视频| 欧美另类一区二区三区| 97精品超碰一区二区三区| 美女网站一区二区| 亚洲高清免费视频| 中文字幕一区不卡| 国产视频911| 精品少妇一区二区三区免费观看 | 午夜成人免费电影| 成人免费视频在线观看| 国产精品视频免费| 中文字幕在线不卡| 自拍偷拍国产亚洲| 亚洲女人的天堂| 亚洲图片激情小说| 中文字幕亚洲一区二区av在线 | 一区二区日韩av|