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

📄 guinavigation.cpp.svn-base

📁 sigmadesign smp8623 gui source code ,bingo
💻 SVN-BASE
📖 第 1 页 / 共 5 页
字号:
	RMstatus status = RM_OK;	if (tvStandard == TV_NTSC_COMMAND && m_NTSCvideoOutCommandList.count != 0)		RMMemcpy(videoOutCmdList, &m_NTSCvideoOutCommandList, sizeof(typeVideoOutCommands));	else if (tvStandard == TV_PAL_COMMAND && m_PALvideoOutCommandList.count != 0)		RMMemcpy(videoOutCmdList, &m_PALvideoOutCommandList, sizeof(typeVideoOutCommands));	else		return RM_ERROR;	return status;}RMstatus RMcuracaoGuiNavigation::ModifyTVStandardMenu(RMuint32 commandId, RMuint32 linkId, RMascii *value){	// we look in the setup page	if (m_setupPageId == 0)		return RM_ERROR;	RMASSERT(m_setupPageId < m_nbOsdPages);	RMascii menuName[MAX_GUI_TEXT_VALUE];	RMuint8 i, j;#ifdef GUI_REFID_2	//The following decides what TV connector popup should be showed depending on TV standard	if(linkId == 0 || linkId == 1111)	{		if(commandId == TV_NTSC_COMMAND)		RMCopyAscii(menuName, "NTSCConnectorPopup");		else		RMCopyAscii(menuName, "PALConnectorPopup");	}	else	{		RMCopyAscii(menuName, value);	}	fprintf(stderr,"Changing TV standard and related links\n");	for(i = 0; i < m_osdPages[m_setupPageId]->nbMenus; i++)	{		for(j = 0; j < m_osdPages[m_setupPageId]->menus[i]->nbItems; j++)		{			if(RMCompareAscii(m_osdPages[m_setupPageId]->menus[i]->items[j]->name, "TvConnectorMenuItem"))			{				fprintf(stderr,"Found Menu item to perform link change.... current: %s, new: %s\n", m_osdPages[m_setupPageId]->menus[i]->items[j]->events[0]->link, menuName);				RMCopyAscii(m_osdPages[m_setupPageId]->menus[i]->items[j]->events[0]->link, menuName);			}		}	}#else	// find menu button	RMstatus status;	RMuint32 buttonId = 0;	if (linkId == 0)	{		RMascii commandName[MAX_GUI_TEXT_VALUE];		if (RMFAILED(GetCommandName(commandId, commandName)))			return RM_ERROR;		for (i = 0; i < m_osdPages[m_setupPageId]->nbMenus; i++)		{			// go through menu item lists			for (j = 0; j < m_osdPages[m_setupPageId]->menus[i]->nbItems; j++)			{				// go thru button list				for (RMuint8 k = 0; k < m_osdPages[m_setupPageId]->menus[i]->items[j]->nbButtons; k++)				{					for (RMuint8 m = 0; m < m_osdPages[m_setupPageId]->menus[i]->items[j]->buttons[k]->nbEvents; m++)					{						// get command value						if (RMCompareAsciiCaseInsensitively(								m_osdPages[m_setupPageId]->menus[i]->items[j]->buttons[k]->events[m]->command, commandName))						{							// [RC] TRICK not to create another function, change							RMuint32 activePageId = m_activePageId;							m_activePageId = m_setupPageId;							status = GetObjectIdByName(m_osdPages[m_setupPageId]->menus[i]->items[j]->buttons[k]->events[m]->link,									&buttonId);							m_activePageId = activePageId;							if (RMFAILED(status))								return RM_ERROR;							RMCopyAscii(menuName, m_osdPages[m_setupPageId]->menus[i]->items[j]->buttons[k]->events[m]->value);							goto done;						}					}				}			}		}	}	else	{		buttonId = linkId;		RMCopyAscii(menuName, value);	}	done: if (buttonId == 0)		return RM_ERROR;	for (i = 0; i < m_osdPages[m_setupPageId]->nbButtons; i++)	{		if (m_osdPages[m_setupPageId]->buttons[i]->id == buttonId)		{			for (j = 0; j < m_osdPages[m_setupPageId]->buttons[i]->nbEvents; j++)			{				if (RMCompareAsciiCaseInsensitively(m_osdPages[m_setupPageId]->buttons[i]->events[j]->name, SELECT_EVENT))				{					RMCopyAscii(m_osdPages[m_setupPageId]->buttons[i]->events[j]->link, menuName);					RMCopyAscii(m_osdPages[m_setupPageId]->buttons[i]->keyright, menuName);					return RM_OK;				}			}		}	}#endif	return RM_ERROR;}RMstatus RMcuracaoGuiNavigation::DisplayPage(RMuint32 pageId){	RMstatus status;	RMuint16 i;	RMuint32 selectedObjectId;	if (!m_initialized)	{		RMDBGLOG((GUIDBG, "GUI not initialised !!\n"));		return RM_ERROR;	}	// reset selected object and activate current page	if (ISPOPUP(m_selectedObjectId))		DisplayPopup(m_selectedObjectId, FALSE);	SetCurrentObjectDeSelectedAttribute();	// suppress event bitmap timeouts	m_gui->gui->KillTimer(TIMER_EVENT);	ShowOsd(TRUE);	//	guiOsdPageType* pageOld = m_osdPages[pageId];	if (m_osdPages[pageId]->object.dynamic)	{		HTTPFile* f;		status = RM_OK;		RMascii* where = RMCatAscii(m_parser->GetUrl(), m_osdPages[pageId]->object.url, NULL);		RMint16 n = 0;		f = fetchOpen(where, RM_HTTP_VERBOSE);		if(f)		{			RMuint8 buffer[8192];			n = fetchRead(buffer, 8192, f);			if(n != -1)			{				buffer[n] = '\0';				printf("%s\n %d \n", (RMascii*) buffer, n);				guiOsdPageType* page = m_parser->ParseWEBPage(&page, pageId, buffer, n);				if (page)					m_osdPages[pageId] = page;				else					status = RM_ERROR;			}			else				status = RM_ERROR;		}		else			status = RM_ERROR;		fetchClose(f);		RFREE(where);		//		if(RMFAILED(status))		//			return status;	}	// display background, bitmaps and buttons	status = DisplayPageBitmaps(pageId);	if (RMFAILED(status))	{		return status;	}	m_activePageId = pageId;	RMMemset(&m_List, 0, sizeof(typeListData));	if (m_osdPages[pageId]->selectedObject != (RMascii*) NULL)	{		status = GetObjectIdByName(m_osdPages[pageId]->selectedObject, &selectedObjectId);		if (RMSUCCEEDED(status))		{			SelectObject(selectedObjectId);		}	}	// clear generic list data	// display everything else	for (i = 0; i < m_osdPages[pageId]->nbMenus; i++)	{		if (m_osdPages[pageId]->menus[i]->object.visible)		{			DisplayMenu(i, TRUE, FALSE);		}	}	for (i = 0; i < m_osdPages[pageId]->nbLists; i++)	{		printf("list visible %d\n", m_osdPages[pageId]->lists[i]->object.visible);		if (m_osdPages[pageId]->lists[i]->object.visible)		{			DisplayList(i, TRUE, TRUE);		}	}	for (i = 0; i < m_osdPages[pageId]->nbStrings; i++)	{		if (m_osdPages[pageId]->strings[i]->object.visible)		{			DisplayString(i);		}	}	if (m_osdPages[pageId]->temp)	{		RMBitmapObject bmp;		bmp.x = 0;		bmp.y = 0;		bmp.file = m_osdPages[m_activePageId]->object.file;		m_osdPages[pageId]->temp->object.stepnumber = m_osdPages[pageId]->temp->value;		sprintf(m_osdPages[m_activePageId]->temp->object.text, "%d", (RMuint16) (m_osdPages[m_activePageId]->temp->object.stepnumber				+ m_osdPages[m_activePageId]->temp->min));		gfxDrawSlider(m_pRua, 0, 0, &m_osdPages[pageId]->temp->object, &bmp);	}	//DisplaySlider(TEMPERATURE_CONTROL, m_osdPages[pageId]->temp->value);	//	m_activePageId = pageId;	// clear generic list data	//	RMMemset(&m_List, 0, sizeof(typeListData));	// display everything else	//	for(i = 0; i < m_osdPages[pageId]->nbMenus; i++){	//		if(m_osdPages[pageId]->menus[i]->object.visible){	//			DisplayMenu(i, TRUE, FALSE);	//		}	//	}	//	for(i = 0; i < m_osdPages[pageId]->nbLists; i++){	//		if(m_osdPages[pageId]->lists[i]->object.visible){	//			DisplayList(i, TRUE, FALSE);	//		}	//	}	//	for(i = 0; i < m_osdPages[pageId]->nbStrings; i++){	//		if(m_osdPages[pageId]->strings[i]->object.visible){	//			DisplayString(i);	//		}	//	}	printf("display page\n");	m_gui->gui->RestoreNonTimedEvent();	return status;}RMstatus RMcuracaoGuiNavigation::DisplayButton(RMuint8 buttonIndex){	if (buttonIndex > MAX_GUI_BUTTONS)		return RM_ERROR;	if (ISPOPUP(m_selectedObjectId))	{		for (RMuint8 i = 0; i < m_nbPopups; i++)		{			if (m_Popups[i]->id == m_selectedObjectId)			{				RMuint16 x, y;				x = m_Popups[i]->object.x;				y = m_Popups[i]->object.y;#ifdef WITH_WMVHD_SUPPORT				if (m_wmvHDOn)				{					x = POPUP_XOFFSET;					y = POPUP_YOFFSET;				}#endif				return gfxDrawPopupButton(m_pRua, &m_Popups[i]->object, x, y, &m_Popups[i]->buttons[buttonIndex]->object);			}		}		return RM_ERROR;	}	else	{#ifdef WITH_WMVHD_SUPPORT		if (m_wmvHDOn)		{			return UpdateButton(buttonIndex);		}		else			return gfxDrawButton(m_pRua, &m_osdPages[m_activePageId]->buttons[buttonIndex]->object);#else		return gfxDrawButton(m_pRua, &m_osdPages[m_activePageId]->buttons[buttonIndex]->object);#endif	}}RMstatus RMcuracaoGuiNavigation::UpdateButton(RMuint8 buttonIndex){	RMstatus status = RM_OK;	RMuint8 i;	RMuint16 l1, t1, r1, b1;	RMuint16 bmpwidth, bmpheight;	RMuint16 l2, t2, r2, b2;	RMuint8 zIndex;	RMBitmapObject bitmaps[MAX_GUI_BITMAPS];	RMuint8 nbitmaps = 0;	l1 = m_osdPages[m_activePageId]->buttons[buttonIndex]->object.x;	t1 = m_osdPages[m_activePageId]->buttons[buttonIndex]->object.y;	//	status = gfxGetBitmapDimensions(m_pRua, &m_osdPages[m_activePageId]->buttons[buttonIndex]->object,	//					&buttonwidth, &buttonheight);	//	if(RMFAILED(status))	//		return status;	// [RC] NEED TO CHANGE THIS TO HAVE THE REAL BITMAP DIMENSIONS!!!!!!	r1 = l1 + m_osdPages[m_activePageId]->buttons[buttonIndex]->object.width;	b1 = t1 + m_osdPages[m_activePageId]->buttons[buttonIndex]->object.height;	zIndex = m_osdPages[m_activePageId]->buttons[buttonIndex]->object.zIndex;	// get objects under current object	// test bitmaps	for (i = 0; i < m_osdPages[m_activePageId]->nbBitmaps; i++)	{		if (m_osdPages[m_activePageId]->bitmaps[i]->object.visible && (m_osdPages[m_activePageId]->bitmaps[i]->object.zIndex < zIndex))		{			l2 = m_osdPages[m_activePageId]->bitmaps[i]->object.x;			t2 = m_osdPages[m_activePageId]->bitmaps[i]->object.y;			status = gfxGetBitmapDimensions(m_pRua, &m_osdPages[m_activePageId]->bitmaps[i]->object, &bmpwidth, &bmpheight);			if (RMFAILED(status))				continue;			r2 = l2 + bmpwidth;			b2 = t2 + bmpheight;			if (CheckRectsIntersect(l1, t1, r1, b1, l2, t2, r2, b2))			{				RMMemcpy(&bitmaps[nbitmaps], &(m_osdPages[m_activePageId]->bitmaps[i]->object),						sizeof(m_osdPages[m_activePageId]->bitmaps[i]->object));				nbitmaps++;			}		}	}	return gfxUpdateButton(m_pRua, &m_osdPages[m_activePageId]->object, bitmaps, nbitmaps,			&m_osdPages[m_activePageId]->buttons[buttonIndex]->object);}RMstatus RMcuracaoGuiNavigation::DisplaySubMenuButton(RMuint8 menuIndex, RMuint8 menuItemId, RMuint8 buttonIndex){	if (buttonIndex > MAX_GUI_BUTTONS)		return RM_ERROR;	return gfxDrawButton(m_pRua, &m_osdPages[m_activePageId]->menus[menuIndex]->items[menuItemId]->buttons[buttonIndex]->object);}RMstatus RMcuracaoGuiNavigation::DisplayMenu(RMuint8 menuIndex, RMbool redraw, RMbool hasfocus){	RMMenuItemObject items[MAX_GUI_MENUITEMS];	RMstatus status;	RMuint8 i;	if (menuIndex > MAX_GUI_MENUS)		return RM_ERROR;	// pack menuitem drawing objects	for (i = 0; i < m_osdPages[m_activePageId]->menus[menuIndex]->nbItems; i++)	{		RMMemcpy(&items[i], &m_osdPages[m_activePageId]->menus[menuIndex]->items[i]->object, sizeof(RMMenuItemObject));	}	m_osdPages[m_activePageId]->menus[menuIndex]->object.hasfocus = hasfocus;	m_osdPages[m_activePageId]->menus[menuIndex]->object.redraw = redraw;	m_osdPages[m_activePageId]->menus[menuIndex]->object.visible = TRUE;	status = gfxDrawMenu(m_pRua, &m_osdPages[m_activePageId]->menus[menuIndex]->object, items,			m_osdPages[m_activePageId]->menus[menuIndex]->nbItems);	m_activeMenuId = m_osdPages[m_activePageId]->menus[menuIndex]->id;	//!!!!![RC] mark other menus in the page not visible to avoid repaint when removing popup	// NEED TO CHANGE	for (i = 0; i < m_osdPages[m_activePageId]->nbMenus; i++)	{		m_osdPages[m_activePageId]->menus[i]->object.visible = (i == menuIndex);	}	return status;}RMstatus RMcuracaoGuiNavigation::MorphLists(RMuint8 listindex, RMuint8 listindexto){	if (listindex > MAX_GUI_LISTS || listindexto > MAX_GUI_LISTS)		return RM_ERROR;	m_gui->gui->KillTimer(TIMER_WAIT_ANIMATION, FALSE);	if (m_osdPages[m_activePageId]->lists[listindex]->type == LISTTYPE_STRING && m_osdPages[m_activePageId]->lists[listindexto]->type			== LISTTYPE_STRING)		return MorphStringList(listindex, TRUE, TRUE);	if (m_osdPages[m_activePageId]->lists[listindex]->type == LISTTYPE_LIST)		return MorphListList(listindex, listindexto, TRUE);	if (m_osdPages[m_activePageId]->lists[listindexto]->type == LISTTYPE_LIST)

⌨️ 快捷键说明

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