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

📄 guinavigation.cpp.svn-base

📁 sigmadesign smp8623 gui source code ,bingo
💻 SVN-BASE
📖 第 1 页 / 共 5 页
字号:
	}	count = 0;	for (RMuint16 i = firstitem; i <= lastitem; i++)	{		//RMMemcpy(&items[count], &m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->items[i]->object, sizeof(RMListItemObject));		items[count] = &m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->items[i]->object;		count++;	}	m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->nbItemsDisplayed = totalitems;	// ARM-elf-gcc generate an error at compilation if redraw is directly affected to m_osdPages structure	// this is a work around, but we need to upgrade to arm-elf-gcc 2.95.3 to get rid of this hack	m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->object.hasfocus = TRUE;	m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->object.redraw = TRUE;	m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->object.visible = TRUE;	gfxScrolSubList(m_pRua, &(m_osdPages[m_activePageId]->object),			&(m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->object), items, totalitems, numItems,			direction);	//m_gui->gui->SetTimer(TIMER_WAIT_ANIMATION, 120);	return RM_OK;}RMstatus RMcuracaoGuiNavigation::ScrollInfoList(RMuint8 listIndex, RMGuiObjectSelectDirection direction){	RMListItemObject *items[MAX_GUI_LISTITEMS];	RMTextItemObject txitems[MAX_GUI_TEXTITEMS];	RMTextItemObject txitems_old[MAX_GUI_TEXTITEMS];	RMuint16 totalitems = 3;	RMuint16 count, selected, prevselected;	if (listIndex > MAX_GUI_LISTS)		return RM_ERROR;	m_gui->gui->KillTimer(TIMER_WAIT_ANIMATION, FALSE);	m_List.numItems = m_osdPages[m_activePageId]->lists[listIndex]->nbItems;	// get from gfx how many items we can display per page	m_List.numitemsPerPage = m_osdPages[m_activePageId]->lists[listIndex]->object.numitemsPerPage;//gfxGetListItemsPerPage(m_pRua, &m_osdPages[m_activePageId]->lists[listIndex]->object);	selected = m_osdPages[m_activePageId]->lists[listIndex]->object.selecteditem;	prevselected = m_osdPages[m_activePageId]->lists[listIndex]->object.previouslyselecteditem;	if (m_List.numitemsPerPage == 0)		return RM_ERROR;	m_List.numPages = m_List.numItems / m_List.numitemsPerPage + (m_List.numItems % m_List.numitemsPerPage ? 1 : 0);	// display current pagem_List.numItems = m_osdPages[pageID]->lists[listIndex]->nbItems;	RMMemset(items, 0, sizeof(items));	totalitems = 4;	if (direction == SELECT_LEFT)	{		RMuint16 prev = 0;		//	RMMemcpy(&items[1], &m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object, sizeof(RMListItemObject));		items[1] = &m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object;		if (selected == 0)		{			//			RMMemcpy(&items[0], &m_osdPages[m_activePageId]->lists[listIndex]->items[m_List.numItems - 1]->object, sizeof(RMListItemObject));			//			items[0] = &m_osdPages[m_activePageId]->lists[listIndex]->items[m_List.numItems - 1]->object;			items[0] = NULL;		}		else		{			//			RMMemcpy(&items[0], &m_osdPages[m_activePageId]->lists[listIndex]->items[selected - 1]->object, sizeof(RMListItemObject));			items[0] = &m_osdPages[m_activePageId]->lists[listIndex]->items[selected - 1]->object;		}		if (selected == m_List.numItems - 1)		{			prev = 0;			//			RMMemcpy(&items[2], &m_osdPages[m_activePageId]->lists[listIndex]->items[0]->object, sizeof(RMListItemObject));			//			items[2] = &m_osdPages[m_activePageId]->lists[listIndex]->items[0]->object;			items[2] = NULL;		}		else		{			prev = selected + 1;			//			RMMemcpy(&items[2], &m_osdPages[m_activePageId]->lists[listIndex]->items[selected + 1]->object, sizeof(RMListItemObject));			items[2] = &m_osdPages[m_activePageId]->lists[listIndex]->items[selected + 1]->object;		}		if (prev == m_List.numItems - 1)		{			//			RMMemcpy(&items[3], &m_osdPages[m_activePageId]->lists[listIndex]->items[0]->object, sizeof(RMListItemObject));			//			items[3] = &m_osdPages[m_activePageId]->lists[listIndex]->items[0]->object;			items[3] = NULL;		}		else		{			//			RMMemcpy(&items[3], &m_osdPages[m_activePageId]->lists[listIndex]->items[prev + 1]->object, sizeof(RMListItemObject));			items[3] = &m_osdPages[m_activePageId]->lists[listIndex]->items[prev + 1]->object;		}	}	else	{		RMuint16 prev = 0;		//		RMMemcpy(&items[2], &m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object, sizeof(RMListItemObject));		items[2] = &m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object;		if (selected == 0)		{			prev = m_List.numItems - 1;			//			RMMemcpy(&items[1], &m_osdPages[m_activePageId]->lists[listIndex]->items[m_List.numItems - 1]->object, sizeof(RMListItemObject));			//			items[1] = &m_osdPages[m_activePageId]->lists[listIndex]->items[m_List.numItems - 1]->object;			items[1] = NULL;		}		else		{			prev = selected - 1;			//			RMMemcpy(&items[1], &m_osdPages[m_activePageId]->lists[listIndex]->items[selected - 1]->object, sizeof(RMListItemObject));			items[1] = &m_osdPages[m_activePageId]->lists[listIndex]->items[selected - 1]->object;		}		if (selected == m_List.numItems - 1)		{			//			RMMemcpy(&items[3], &m_osdPages[m_activePageId]->lists[listIndex]->items[0]->object, sizeof(RMListItemObject));			//			items[3] = &m_osdPages[m_activePageId]->lists[listIndex]->items[0]->object;			items[3] = NULL;		}		else		{			//			RMMemcpy(&items[3], &m_osdPages[m_activePageId]->lists[listIndex]->items[selected + 1]->object, sizeof(RMListItemObject));			items[3] = &m_osdPages[m_activePageId]->lists[listIndex]->items[selected + 1]->object;		}		if (prev == 0)		{			//			RMMemcpy(&items[0], &m_osdPages[m_activePageId]->lists[listIndex]->items[m_List.numItems - 1]->object, sizeof(RMListItemObject));			//			items[0] = &m_osdPages[m_activePageId]->lists[listIndex]->items[m_List.numItems - 1]->object;			items[0] = NULL;		}		else		{			//			RMMemcpy(&items[0], &m_osdPages[m_activePageId]->lists[listIndex]->items[prev - 1]->object, sizeof(RMListItemObject));			items[0] = &m_osdPages[m_activePageId]->lists[listIndex]->items[prev - 1]->object;		}	}	if (m_osdPages[m_activePageId]->lists[listIndex]->object.hasInfo)	{		for (RMuint16 i = 0; i < m_osdPages[m_activePageId]->lists[listIndex]->info->nbItems; i++)		{			RMMemcpy(&txitems[i], &m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->object, sizeof(RMTextItemObject));		}		for (RMuint16 i = 0; i < m_osdPages[m_activePageId]->lists[listIndex]->info->nbItems; i++)		{			RMMemcpy(&txitems_old[i], &m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->object, sizeof(RMTextItemObject));		}	}	count = 4;	if (m_osdPages[m_activePageId]->lists[listIndex]->object.hasInfo)	{		m_osdPages[m_activePageId]->lists[listIndex]->info->object.redraw = TRUE;		for (int i = 0; i < m_osdPages[m_activePageId]->lists[listIndex]->info->nbItems; i++)		{			//	if(RM )			if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "DirectorName"))			{				txitems[i].update = TRUE;				RMCopyAscii(txitems[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object.director);			}			if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "StarringName"))			{				txitems[i].update = TRUE;				RMCopyAscii(txitems[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object.actors);			}			if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "RunTimeName"))			{				txitems[i].update = TRUE;				RMCopyAscii(txitems[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object.time);			}			if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "RelDateName"))			{				txitems[i].update = TRUE;				RMCopyAscii(txitems[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object.releace);			}			if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "PriceName"))			{				txitems[i].update = TRUE;				RMCopyAscii(txitems[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object.price);			}			if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "SubtitlesName"))			{				txitems[i].update = TRUE;				RMCopyAscii(txitems[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object.subtitles);			}			if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "Description"))			{				txitems[i].update = TRUE;				RMCopyAscii(txitems[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object.description);			}		}		for (int i = 0; i < m_osdPages[m_activePageId]->lists[listIndex]->info->nbItems; i++)		{			//	if(RM )			if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "DirectorName"))			{				txitems_old[i].update = TRUE;				RMCopyAscii(txitems_old[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->object.director);			}			if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "StarringName"))			{				txitems_old[i].update = TRUE;				RMCopyAscii(txitems_old[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->object.actors);			}			if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "RunTimeName"))			{				txitems_old[i].update = TRUE;				RMCopyAscii(txitems_old[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->object.time);			}			if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "RelDateName"))			{				txitems_old[i].update = TRUE;				RMCopyAscii(txitems_old[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->object.releace);			}			if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "PriceName"))			{				txitems_old[i].update = TRUE;				RMCopyAscii(txitems_old[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->object.price);			}			if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "SubtitlesName"))			{				txitems_old[i].update = TRUE;				RMCopyAscii(txitems_old[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->object.subtitles);			}			if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "Description"))			{				txitems_old[i].update = TRUE;				RMCopyAscii(txitems_old[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->object.description);			}		}	}	m_osdPages[m_activePageId]->lists[listIndex]->nbItemsDisplayed = totalitems;	m_osdPages[m_activePageId]->lists[listIndex]->object.hasfocus = TRUE;	m_osdPages[m_activePageId]->lists[listIndex]->object.redraw = TRUE;	m_osdPages[m_activePageId]->lists[listIndex]->object.visible = TRUE;	gfxScrolTextTableBitmaped(m_pRua, &(m_osdPages[m_activePageId]->object),			&(m_osdPages[m_activePageId]->lists[listIndex]->info->object), &(m_osdPages[m_activePageId]->lists[listIndex]->object),			txitems, txitems_old, items, m_osdPages[m_activePageId]->lists[listIndex]->info->nbItems, totalitems, direction);	//	gfxScrolListList(m_pRua, &(m_osdPages[m_activePageId]->object),	//					 &(m_osdPages[m_activePageId]->lists[listIndex]->object),	//					 &(m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object),	//					 &(m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->list->object),	//					 items, subitems, subitems_prev, totalitems, totalsubitems, totalsubitems_prev, direction);	//m_gui->gui->SetTimer(TIMER_WAIT_ANIMATION, 120);	return RM_OK;}RMstatus RMcuracaoGuiNavigation::ScrollListList(RMuint8 listIndex, RMGuiObjectSelectDirection direction){	RMListItemObject *items[MAX_GUI_LISTITEMS];	RMListItemObject *subitems[MAX_GUI_LISTITEMS];	RMListItemObject *subitems_prev[MAX_GUI_LISTITEMS];	RMuint16 firstitem = 0, lastitem = 0, totalitems = 3, totalsubitems = 0, firstitem_prev = 0, lastitem_prev = 0,			totalsubitems_prev = 0;	RMuint16 count, subcount, subcountprev, selected, prevselected;	if (listIndex > MAX_GUI_LISTS)		return RM_ERROR;	printf("scroll list direction %d\n", direction);	m_gui->gui->KillTimer(TIMER_WAIT_ANIMATION, FALSE);	m_List.numItems = m_osdPages[m_activePageId]->lists[listIndex]->nbItems;	// get from gfx how many items we can display per page	m_List.numitemsPerPage = m_osdPages[m_activePageId]->lists[listIndex]->object.numitemsPerPage;//gfxGetListItemsPerPage(m_pRua, &m_osdPages[m_activePageId]->lists[listIndex]->object);	selected = m_osdPages[m_activePageId]->lists[listIndex]->object.selecteditem;	prevselected = m_osdPages[m_activePageId]->lists[listIndex]->object.previouslyselecteditem;	if (m_List.numitemsPerPage == 0)		return RM_ERROR;	m_List.numPages = m_List.numItems / m_List.numitemsPerPage + (m_List.numItems % m_List.numitemsPerPage ? 1 : 0);	// display current pagem_List.numItems = m_osdPages[pageID]->lists[listIndex]->nbItems;	RMMemset(items, 0, sizeof(items));	RMMemset(subitems, 0, sizeof(subitems));	RMMemset(subitems_prev, 0, sizeof(subitems_prev));	RMuint8 numItemsPage = m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object.numitemsPerPage;	RMuint32 numItems = m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->nbItems;	RMuint8 numItemsPagePrev = m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->list->object.numitemsPerPage;	RMuint32 numItemsPrev = m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->list->nbItems;	// copy page to draw	if (m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object.firstvisible			== m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object.lastvisible)	{		m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object.firstvisible = 0;		firstitem = m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object.firstvisible;		totalsubitems = ((firstitem + numItemsPage - 1) < (RMuint16) numItems) ? numItemsPage - 1 : numItems - firstitem;		m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object.lastvisible = firstitem + totalsubitems - 1;		lastitem = m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object.lastvisible;	}	else	{		firstitem = m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object.firstvisible;		//		printf("firstvisible %d \n", firstitem);		totalsubitems = ((firstitem + numItemsPage - 1) < (RMuint16) numItems) ? (firstitem				== m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object.selecteditem) ? numItemsPage - 1				: numItemsPage : numItems - firstitem;		////		if(firstitem == selected)		////			totalitems --;		//		lastitem = m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object.lastvisible;		//		//totalitems = lastitem - firstitem;	}	if (m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->list->object.firstvisible			== m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->list->object.lastvisible)	{		m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->list->object.firstvisible = 0;		firstitem_prev = m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->list->object.firstvisible;		totalsubitems_prev = ((firstitem_prev + numItemsPagePrev - 1) < (RMuint16) numItemsPrev) ? numItemsPagePrev - 1 : numItemsPrev				- firstitem_prev;		m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->list->object.lastvisible = firstitem_prev				+ totalsubitems_prev - 1;		lastitem_prev = m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->list->object.lastvisible;	}	else	{		firstitem_prev = m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->list->object.firstvisible;		//		printf("firstvisible %d \n", firstitem);		totalsubitems_prev = ((firstitem_prev + numItemsPagePrev - 1) < (RMuint16) numItemsPrev) ? (firstitem_prev				== m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->list->object.selecteditem) ? numItemsPagePrev				- 1 : numItemsPagePrev : numItemsPrev - firstitem_prev;		////		if(firstitem == selected)		////			totalitems --;		//		lastitem_prev = m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->list->object.lastvisible;		//		//totalitems = lastitem - firstitem;	}	totalitems = 4;	if (direction == SELECT_LEFT)	{		RMuint16 prev = 0;		//	RMMemcpy(&items[1], &m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object, sizeof(RMListItemObject));		items[1] = &m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object;		if (selected == 0)		{			//			RMMemcpy(&items[0], &m_osdPages[m_activePageId]->lists[listIndex]->items[m_List.numItems - 1]->object, sizeof(RMListItemObject));			items[0] = &m_osdPages[m_activePageId]->lists[listIndex]->items[m_List.numItems - 1]->object;		}		else		{			//			RMMemcpy(&items[0], &m_osdPages[m_activePageId]->lists[listIndex]->items[selected - 1]->object, sizeof(RMListItemObject));			items[0] = &m_osdPages[m_activePageId]->lists[listIndex]->items[selected - 1]->object;		}		if (selected == m_List.numItems - 1)		{			prev = 0;			//			RMMemcpy(&items[2], &m_osdPages[m_activePageId]->lists[listIndex]->items[0]->object, sizeof(RMListItemObject));			items[2] = &m_osdPages[m_activePageId]->lists[listIndex]->items[0]->object;		}		else		{			prev = selected + 1;			//			RMMemcpy(&items[2], &m_osdPages[m_activePageId]->lists[listIndex]->items[selected + 1]->object, sizeof(RMListItemObject));			items[2] = &m_osdPages[m_activePageId]->lists[listIndex]->items[selected + 1]->object;		}		if (prev == m_List.numItems - 1)		{			//			RMMemcpy(&items[3], &m_osdPages[m_activePageId]->lists[listIndex]->items[0]->object, sizeof(RMListItemObject));			items[3] = &m_osdPages[m_activePageId]->lists[listIndex]->items[0]->object;		}		else		{			//			RMMemcpy(&items[3], &m_osdPages[m_activePageId]->lists[listIndex]->items[prev + 1]->object, sizeof(RMListItemObject));			items[3] = &m_osdPages[m_activePageId]->lists[listIndex]->items[prev + 1]->object;		}	}	else	{		RMuint16 prev = 0;		//		RMMemcpy(&items[2], &m_os

⌨️ 快捷键说明

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