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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mso_page.c

?? ZORAN 962/966 SOURCE CODE,DVD chip
?? C
字號:
/* **************************************************************************************
*  Copyright (c) 2004 ZORAN Corporation, All Rights Reserved
*  THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ZORAN CORPORATION
*
*  File: $Workfile: o_text.c $
*
* Description:	
* ============
* Project definition of the MSO_TEXT 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 "GUI\Menu_system\ms_object.h"
#include "GUI\Menu_system\ms_container.h"
#include "gui\menu_system\ms_display.h"
#include "GUI\Menu_system\ms_screen.h"
#include "gui\menu_system\osd_rendering.h"
#include "GUI\Object_class\Page\mso_page.h"
#include "GUI\Resource\Bitmap\bitmap.h"
#include "Menu\menu_operation_def.h"
#ifndef DEBUG_UI_TRACE
#undef dbg_printf(sMsg)
#define dbg_printf(sMsg)
#undef	dbgm_printf(sMsg, mode)
#define dbgm_printf(sMsg, mode)
#endif


#define TABBTN_OVERLAP_WINDOW_W		6


/**************************************************************************
*	Function	: OPAGE_GetTabBtn
*
*	In		:
*	Out 	:
*	Return	:
*	Desc	: 
***************************************************************************/
MSO_TABBTN __NEAR* OPAGE_GetTabBtn(MSO_PAGE __NEAR* pThisPage)
{
	MS_DESCRIPTOR_PAGE* pPageDescriptor;
	//MSO_TABBTN __NEAR* pTabBtn;

	pPageDescriptor = (MS_DESCRIPTOR_PAGE*)(((MSO_OBJECT __NEAR*)pThisPage)->mpDescriptor);
	return (MSO_TABBTN __NEAR*)MS_FindObjectFromDescriptor((MSO_CONTAINER __NEAR*)pThisPage, 
										(MS_DESCRIPTOR *)(pPageDescriptor->mpDescriptorTabBtn));
}
/**************************************************************************
*	Function	: OPAGE_GetTabBtn
*
*	In		:
*	Out 	:
*	Return	:
*	Desc	: 
***************************************************************************/
#pragma argsused
MSO_PAGE __NEAR* OPAGE_GetPageFromIndex(MSO_BOOK __NEAR* pBook, UINT16 wPageIndex)
{
	MSO_PAGE __NEAR* pPage;
	
	MS_ASSERT(NULL != pBook);
	if (MS_IsContentFrozen(pBook))
	{
		MS_BREAK_POINT();
		return NULL;
	}

	pPage = (MSO_PAGE __NEAR*)((MSO_CONTAINER __NEAR*)pBook)->mpOlist;
	while(NULL != pPage)
	{
		if(wPageIndex == pPage->moParam.mwPageIndex)
			return pPage;
		pPage =(MSO_PAGE __NEAR*) ((MSO_OBJECT __NEAR *)pPage)->mpNext;
	}
	return NULL;
}
/**************************************************************************
*	Function	: OPAGE_AddPageToBook
*
*	In		:
*	Out 	:
*	Return	:
*	Desc	: 
***************************************************************************/
MSO_PAGE __NEAR* OPAGE_AddPageToBook(MS_DESCRIPTOR_PAGE* poDescriptor, MSO_BOOK __NEAR* poBook)
{
	MSO_PAGE __NEAR* pPage;
	UINT16 wPageIndex;

	MS_ASSERT(!MS_IsContentFrozen(poBook));

	wPageIndex = MS_CountObjects((MSO_CONTAINER __NEAR*)poBook);

	pPage = (MSO_PAGE __NEAR*)MS_CreateAndAddObject((MS_DESCRIPTOR*)poDescriptor, (MSO_CONTAINER __NEAR *) poBook);
	if (NULL != pPage)
		pPage->moParam.mwPageIndex = wPageIndex;
	return (pPage);
}
/**************************************************************************
*	Function	: OPAGE_RemovePageFromBook
*
*	In		:
*	Out 	:
*	Return	:
*	Desc	: 
***************************************************************************/
BOOL OPAGE_RemovePageFromBook(MSO_PAGE __NEAR* pThisPage)
{
	MSO_BOOK __NEAR* pBook;
	MSO_PAGE __NEAR* pPage;
	MSO_TABBTN __NEAR* pTabBtn;
	MSO_PAGE __NEAR* pSelectedPage;
	UINT16 wPageIndex;
	UINT16 wPageNumber;
	BOOL bResult;

	if (NULL == pThisPage)
		return 1;
	
	bResult = 0;
	
	pBook = (MSO_BOOK __NEAR*)(((MSO_OBJECT __NEAR*)pThisPage)->mpParent);
	MS_ASSERT(NULL != pBook);
	MS_ASSERT(!MS_IsContentFrozen(pBook));
	
	wPageNumber = MS_CountObjects((MSO_CONTAINER __NEAR*)pBook);
	if(wPageNumber)
	{
		wPageIndex = pThisPage->moParam.mwPageIndex;

		// If the selected page is different form the page to remove, freeze the selected page in order to release
		// memory in the ms_heap to defrost the page to remove. We will defrost the selected page before exit this function.
		pSelectedPage = (MSO_PAGE __NEAR*)MS_GetSelectedInContainer(pBook);
		if (pSelectedPage != pThisPage)
			MS_SendOperation((MSO_OBJECT __NEAR*)pSelectedPage, MS_OP_FREEZE, 0);
		else
			pSelectedPage = NULL;
		
		// Ask children to prepare for being removed
		MS_SendOperation((MSO_OBJECT __NEAR*)pThisPage, MS_OP_EMPTY, 0);
		if (MS_RemoveObject((MSO_OBJECT __NEAR*)pThisPage))
		{
			pPage = (MSO_PAGE __NEAR*)(((MSO_CONTAINER __NEAR*)pBook)->mpOlist);
			while (--wPageNumber)
			{
				MS_ASSERT(NULL != pPage)
				if (pPage->moParam.mwPageIndex > wPageIndex)
				{
					pPage->moParam.mwPageIndex--;
					pTabBtn = OPAGE_GetTabBtn(pPage);
					((MSO_OBJECT __NEAR*)pTabBtn)->moArea.msY -= ((MSO_OBJECT __NEAR*)pTabBtn)->moArea.mwH;

				}
				((MSO_OBJECT __NEAR*)pPage) = ((MSO_OBJECT __NEAR*)pPage)->mpNext;
			}
			bResult = 1;
		}
	}

	// Defrost the selected frozen page.
	if (NULL != pSelectedPage)
		MS_SendOperation((MSO_OBJECT __NEAR*)pSelectedPage, MS_OP_DEFROST, 0);

	// If removed the focus 
	if (MS_CountObjects((MSO_CONTAINER __NEAR*)pBook))
	{
		if (MS_IsFocused(pBook))
		{
			if(NULL == MS_GetFocusInContainer((MSO_CONTAINER __NEAR*)pBook))
				MS_ScreenSetFocusObject((MSO_OBJECT __NEAR*)OPAGE_GetTabBtn(OPAGE_GetPageFromIndex(pBook, 0)));
		}
		else if (NULL == MS_GetSelectedInContainer(pBook))
		{
			pSelectedPage = OPAGE_GetPageFromIndex(pBook, 0);
			MS_SetSelected(pSelectedPage);
			MS_SendOperation((MSO_OBJECT __NEAR*)pSelectedPage, MS_OP_SELECT_CHANGE, 0);
		}
	}

	return bResult;
}
/**************************************************************************
*	Function	: OPAGE_BookOperation
*
*	In		:
*	Out 	:
*	Return	:
*	Desc	: 
***************************************************************************/
MS_OP OPAGE_BookOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{	
	// Pre-processing
	switch (MsOp)
	{
	case MS_OP_FOCUS_CHANGE:
		{
			if (MS_IsFocused(pThis))
			{
				MSO_OBJECT __NEAR* pObject = MS_GetSelectedInContainer((MSO_CONTAINER __NEAR*)pThis);
				if ((NULL != pObject) && MS_GetFocusInContainer((MSO_CONTAINER __NEAR*)pThis) != pObject)
				{
					MS_ClearSlected(pObject);
					MS_SendOperation(pObject, MS_OP_SELECT_CHANGE, lParam);				
				}
			}
		}
		break;
		
	default:
		break;
	}		
	return MS_BasicContainerOperation(pThis, MsOp, lParam);
}

/**************************************************************************
*	Function	: OPAGE_PageOperation
*
*	In		:
*	Out 	:
*	Return	:
*	Desc	: 
***************************************************************************/
MS_OP OPAGE_PageOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{	
	// Pre-processing
	switch (MsOp)
	{
	case MS_OP_OPEN:
		{
			MSO_OBJECT __NEAR* pObject;
			MS_DESCRIPTOR_PAGE* pPageDescriptor = (MS_DESCRIPTOR_PAGE*)(pThis->mpDescriptor);

			// Force the page to be layer 0, if focused, then it will switch to layer 1.
			MS_SetOsdLayer(pThis, MS_ATTR_OSD_LAYER_0);
			
			if(NULL != pPageDescriptor->mpDescriptorTabBtn)
			{	
				pObject = MS_CreateAndAddObject((MS_DESCRIPTOR*)(pPageDescriptor->mpDescriptorTabBtn),(MSO_CONTAINER __NEAR*)pThis);
				MS_ClearOsdLayer(pObject);
				MS_SetOsdLayer(pObject, MS_ATTR_OSD_LAYER_1);
				MS_SetPrevFocus(pObject);
				pObject->moArea.msY += (((MSO_PAGE __NEAR*)pThis)->moParam.mwPageIndex * pObject->moArea.mwH);		
			}
		}
      		break;
		
	case MS_OP_FOCUS_CHANGE:	
		if (MS_IsFocused(pThis))
		{
			// Mark the page as the active one, focus can be outside the book, 
			// and still one page is active, so we can't use focus to know which page is active.
			MS_SetSelected(pThis);
		}
		else
		{
			// If the book isn't focus and the page loses focus, nothing to do
			if (MS_IsFocused(pThis->mpParent))
			{	// Mark the page as in-active, focus can be outside the book, 
				// and still one page is active, so we can't use focus to know which page is active.
				MS_ClearSlected(pThis);
			}
			else
				break;
		} // FALL THRU
		
	case MS_OP_SELECT_CHANGE:
		{
			MSO_OBJECT __NEAR* pObject;
			MS_DESCRIPTOR_PAGE* pPageDescriptor = (MS_DESCRIPTOR_PAGE*)(pThis->mpDescriptor);
			
			MS_DisplayAddObject((MSO_OBJECT __NEAR*)pThis);

			pObject = MS_FindObjectFromDescriptor((MSO_CONTAINER __NEAR*)pThis, 	(MS_DESCRIPTOR*)pPageDescriptor->mpDescriptorWindow);
			
			if(MS_IsSelected(pThis))
			{
				if(NULL == pObject)
				{
					// Add the window, we are adding a page
					pObject = MS_CreateAndAddObject((MS_DESCRIPTOR*)(pPageDescriptor->mpDescriptorWindow),(MSO_CONTAINER __NEAR*)pThis);
		 			if (NULL == pObject)
						break;

					// Open the added window (Add the contents of the window, sending MS_OP_OPEN to it)
					MS_SendOperation(pObject, MS_OP_OPEN, 0);
					MS_SendOperation(pObject, MS_OP_INIT, 0);
					
					MS_ClearOsdLayer(pObject);
					MS_SetOsdLayer(pObject, MS_ATTR_OSD_LAYER_0);
				}
				else if (MS_IsContentFrozen(pObject))
				{
					// The window is there, but it is frozen
	 				if (MS_OP_DEFROST == MS_SendOperation(pObject, MS_OP_DEFROST, 0))
					{
						MS_BREAK_POINT();
						break;
	 				}
				}
				MS_ChangeOsdLayer(pThis, MS_ATTR_OSD_LAYER_1);
				// Set the window as visible
				MS_ClearInvisible(pObject);
			}
			else
			{
				if((NULL != pObject) && !MS_IsContentFrozen(pObject))
				{
					MS_ChangeOsdLayer(pThis, MS_ATTR_OSD_LAYER_0);
					// Freeze  the window in the page and set it to invisible
					if (MS_OP_NONE == MS_SendOperation((MSO_OBJECT __NEAR*)pObject, MS_OP_FREEZE, 0))
						MS_SetInvisible(pObject);
				}
				else
				{
					MS_BREAK_POINT();
				}
			}
		}
      		break;
			
	default:
		break;
	}
	return (MS_BasicContainerOperation(pThis, MsOp, lParam));
}
/**************************************************************************
*	Function	: OPAGE_TabBtnOperation
*
*	In		:
*	Out 	:
*	Return	:
*	Desc	: 
***************************************************************************/
MS_OP OPAGE_TabBtnOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{	
	switch (MsOp)
	{
	case MS_OP_INIT:
		pThis->moArea.mwW += TABBTN_OVERLAP_WINDOW_W;
       	 break;
			
	case MS_OP_FOCUS_CHANGE:
		MS_DisplayAddObject(pThis);
       	 break;
	}
	return MS_BasicContainerOperation(pThis, MsOp, lParam);
}
/**************************************************************************
*	Function	: OPAGE_TabBtnFillOSDSeg
*
*	In		:
*	Out 	:
*	Return	:
*	Desc	: 
***************************************************************************/
BOOL OPAGE_TabBtnFillOSDSeg(MSO_OBJECT __NEAR* pThis, MS_AREA __NEAR* pAbsArea)
{		
	CONST UINT8* pBmp;
	
	if (MS_IsSelected(pThis->mpParent))
		pBmp = BMP_BG_2;
	else
		pBmp = BMP_BG_PUSHED_1;
	OSDR_FillOsdSegBitmapFitArea(pBmp, pAbsArea);

	if (MS_IsFocused(pThis))
		OSDR_FillOsdSegBitmapFitArea(BMP_FG_FOCUS, pAbsArea);
	//else if (MS_IsFocused(pThis->mpParent))
	//	OSDR_FillOsdSegBitmapFitArea(BMP_FG_PREV_FOCUS, pAbsArea);
	
	if (MS_IsSelected(pThis->mpParent))
		OSDR_FillOsdSegRectangle(	pThis->moArea.mwW - TABBTN_OVERLAP_WINDOW_W, 
									0,
									TABBTN_OVERLAP_WINDOW_W,
									pThis->moArea.mwH,
									pAbsArea,
									CIDX_7);

	return FALSE;
}
/**************************************************************************
*	Function	: OPAGE_WindowOperation
*
*	In		:
*	Out 	:
*	Return	:
*	Desc	: 
***************************************************************************/
MS_OP OPAGE_WindowOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{	
	// Pre-processing
	switch (MsOp)
	{
	case MS_OP_INIT:
		MS_SetInvisible(pThis);
		break;
	}	
	return MS_BasicContainerOperation(pThis, MsOp, lParam);
}
/**************************************************************************
*	Function	: OPAGE_WindowFillOSDSeg
*
*	In		:
*	Out 	:
*	Return	:
*	Desc	: 
***************************************************************************/
#pragma argsused
BOOL OPAGE_WindowFillOSDSeg(MSO_OBJECT __NEAR* pThis, MS_AREA __NEAR* pAbsArea)
{		
	OSDR_FillOsdSegBitmapFitArea(BMP_BG_2, pAbsArea);
	return FALSE;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产美女久久久久| 成人午夜又粗又硬又大| 国产三级精品视频| 欧美撒尿777hd撒尿| 福利一区福利二区| 视频一区二区欧美| 亚洲欧美偷拍另类a∨色屁股| 欧美一区二区三区视频免费播放| www.欧美色图| 韩国毛片一区二区三区| 亚洲h动漫在线| 亚洲女人的天堂| 国产精品麻豆视频| 欧美不卡一二三| 欧美精品三级日韩久久| 99精品视频在线观看| 国产精选一区二区三区| 首页国产欧美久久| 亚洲精品国产无天堂网2021| 日本一区二区不卡视频| 亚洲精品一区二区三区蜜桃下载| 欧美剧情片在线观看| 色婷婷av一区二区三区gif| 不卡一区二区三区四区| 国产精品系列在线观看| 国产呦萝稀缺另类资源| 捆绑调教美女网站视频一区| 首页综合国产亚洲丝袜| 亚洲一区视频在线观看视频| 1024成人网| 国产精品国产三级国产普通话蜜臀| 精品国产免费人成电影在线观看四季| 欧美电影在线免费观看| 欧美日韩日日骚| 欧美久久久一区| 欧美乱妇20p| 欧美一级日韩不卡播放免费| 欧美精品精品一区| 在线播放亚洲一区| 91麻豆精品国产| 51精品视频一区二区三区| 欧美日韩一区二区三区在线看| 日本高清免费不卡视频| 欧美性感一区二区三区| 欧美日韩激情一区| 欧美一区二区三区思思人| 日韩美女在线视频| 久久久精品国产免费观看同学| 久久色在线观看| 日本一区二区三区在线观看| 国产色婷婷亚洲99精品小说| 国产亚洲精品超碰| 中文字幕一区二区三区av| 中文字幕在线不卡| 亚洲国产美女搞黄色| 日本亚洲免费观看| 国产综合久久久久久鬼色 | 九色|91porny| 激情小说亚洲一区| 成人动漫一区二区在线| 日本精品一区二区三区高清 | 2020日本不卡一区二区视频| 国产欧美综合在线| 亚洲三级电影全部在线观看高清| 亚洲国产精品自拍| 精品亚洲欧美一区| 成人免费黄色大片| 欧美日韩精品福利| 久久精品人人做人人爽97| 1024成人网| 日韩高清在线不卡| 国产成人99久久亚洲综合精品| 一本色道久久综合亚洲aⅴ蜜桃| 欧美另类z0zxhd电影| 国产午夜精品在线观看| 一区二区三区日韩欧美精品| 麻豆成人免费电影| 91视频观看视频| 日韩欧美的一区| 亚洲精品视频一区| 久久97超碰色| 日本韩国欧美国产| 26uuu亚洲综合色| 一区二区三区在线免费播放| 捆绑变态av一区二区三区| av电影一区二区| 欧美一区二区三区的| 国产精品久久久久天堂| 蜜桃精品视频在线| 91女神在线视频| 久久久精品国产免费观看同学| 亚洲一区二区三区国产| 国产精品69毛片高清亚洲| 欧美日韩国产免费一区二区| 国产精品少妇自拍| 美女诱惑一区二区| 精品1区2区3区| 国产精品乱人伦中文| 久久不见久久见免费视频1| 色婷婷激情一区二区三区| 久久免费偷拍视频| 日韩激情一区二区| 欧美在线999| 国产精品每日更新| 国产老女人精品毛片久久| 欧美高清视频不卡网| 亚洲欧美国产高清| 成人中文字幕在线| 精品久久久久久久久久久久久久久 | 蜜桃一区二区三区在线观看| 在线亚洲高清视频| 亚洲天堂av老司机| 成人激情免费视频| 久久久精品免费网站| 男女激情视频一区| 欧美精品日韩精品| 午夜国产精品影院在线观看| 91色porny在线视频| 日本一区二区三区在线不卡 | 久久99日本精品| 91精品国产aⅴ一区二区| 亚洲午夜私人影院| 欧美中文一区二区三区| 亚洲欧洲精品一区二区精品久久久 | 色久综合一二码| 中文字幕日本不卡| 成人午夜电影久久影院| 久久久久久免费| 国产成人午夜视频| 久久久av毛片精品| 东方欧美亚洲色图在线| 国产三级三级三级精品8ⅰ区| 国产一区二区三区久久悠悠色av| 日韩视频在线你懂得| 蜜臀av一区二区在线免费观看| 3d成人动漫网站| 美女国产一区二区三区| 欧美一级欧美三级| 久久精品国产色蜜蜜麻豆| 日韩精品在线一区| 国产永久精品大片wwwapp | 性久久久久久久久| 在线电影一区二区三区| 美女视频网站黄色亚洲| 精品少妇一区二区三区日产乱码| 寂寞少妇一区二区三区| 久久网站最新地址| 99久久久久免费精品国产 | 亚洲精品日韩综合观看成人91| 在线一区二区观看| 婷婷中文字幕综合| 欧美大片国产精品| 高清不卡一区二区在线| 中文字幕日本不卡| 欧美在线综合视频| 日韩经典中文字幕一区| 精品捆绑美女sm三区| 国产精品综合二区| 综合电影一区二区三区| 欧美日韩综合色| 免费成人在线播放| 欧美国产精品v| 欧美在线不卡视频| 久草中文综合在线| 中文字幕综合网| 欧美久久久久久久久久| 精品一区二区日韩| 亚洲少妇屁股交4| 在线91免费看| 粉嫩av一区二区三区| 亚洲午夜精品网| 久久精品欧美一区二区三区麻豆| 99精品在线观看视频| 青青草国产成人av片免费| 国产精品色在线观看| 欧美日韩一区成人| 国产福利一区二区三区视频在线| 亚洲免费观看高清完整版在线观看熊| 7777精品伊人久久久大香线蕉的 | 日韩经典中文字幕一区| 欧美国产亚洲另类动漫| 欧美日韩国产一区二区三区地区| 狠狠狠色丁香婷婷综合久久五月| ㊣最新国产の精品bt伙计久久| 欧美蜜桃一区二区三区| 国产精品亚洲专一区二区三区| 亚洲在线视频一区| 久久久久久久久久电影| 欧美视频自拍偷拍| 成人a免费在线看| 久久99精品视频| 亚洲精品视频免费观看| 久久综合九色综合97_久久久| 91福利资源站| 国产a精品视频| 日本不卡不码高清免费观看| 亚洲欧洲精品天堂一级| 久久人人97超碰com| 欧美性猛片xxxx免费看久爱| 成人夜色视频网站在线观看|