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

📄 fsgui_new.c

📁 dvd里面的一个文件系统的代码
💻 C
📖 第 1 页 / 共 5 页
字号:
		Limit=pDSV->ORI_PG_Ns;
	else
		Limit=pDSV->PL_Ns;
	
	//if (!refresh_dir_page)
	//	return;

	VRClearRectArea(VR_Item_Rect, DIR_STEP, DIR_AREA_BKGROUND_CRCB, -1);//zhaoyanhua add
	// DrawRectCorner(VR_PG_Rect, CORNER_RAD, 1,DIR_STEP, DIR_AREA_BKGROUND_CRCB);
	 VRShowHL();
	
	//sJpeg->Dir_Count=Limit;
	i = pFsJpeg->dir_page_now * VR_PER_PAGE;
	j = 0;

	while (j < VR_PER_PAGE && i < Limit)
	{	
		VR_Show_Item(i, j);	
		j++;
		i++;
	}
}

//
// Draw VR main menu, fill framebuf by some difference color
//
void VR_FSGUI_Menu()
{

    // background
    //FSGUI_FillFrameBuf(0,0,352,288,BK_GROUNDY,BK_GROUNDCRCB);
    FSGUI_FillFrameBuf(0,0,352,288,BK_GROUNDY,BK_CRCB);
#ifdef MONO_FSGUI //FS GUI, axel 2003-12-29 23:26
  //  DrawRectCorner(Rect[DIR_RECT], CORNER_RAD, 1,1, DIR_AREA_BKGROUND_CRCB);
  //  DrawRectCorner(Rect[FILE_RECT], CORNER_RAD,  1, 1, FILE_AREA_BKGROUND_CRCB);
#else
    DrawRectCorner(VR_PG_Rect, CORNER_RAD, 1,DIR_STEP, 0x36, 0xc1, DIR_AREA_BKGROUND_CRCB);
#endif
}

#define BUTTON_OFFSET	90

/*
void VR_Draw_Button(UINT8 PlaylistCount,UINT16 Mode)
{

    {
        DrawRect(fsArea[FS_AREA_BUTTON].xStart+BUTTON_OFFSET, fsArea[FS_AREA_BUTTON].yStart,
            25, 25,
            Mode == 0 ? 1 : 0, BUTTON_Y, BUTTON_CRCB);
    }
    DrawFileIcon(fsArea[FS_AREA_BUTTON].xStart +BUTTON_OFFSET+ 6, fsArea[FS_AREA_BUTTON].yStart + 6, CNT_AREA_MP3BUTTON - 2);

	//draw JPEG icon
	if (PlaylistCount)
	{
		DrawRect(fsArea[FS_AREA_BUTTON].xStart +BUTTON_OFFSET+ 27, fsArea[FS_AREA_BUTTON].yStart, 25, 25,
			Mode == 1 ? 1 : 0, BUTTON_Y, BUTTON_CRCB);
	}
	else
	{
		FSGUI_FillFrameBuf(fsArea[FS_AREA_BUTTON].xStart+BUTTON_OFFSET + 27, fsArea[FS_AREA_BUTTON].yStart,
			25, 25,
			BUTTON_Y, BUTTON_CRCB);
	}
	DrawFileIcon(fsArea[FS_AREA_BUTTON].xStart +BUTTON_OFFSET+ 33, fsArea[FS_AREA_BUTTON].yStart + 6, CNT_AREA_JPEGBUTTON - 2);
}
*/
#define BUTTON_START_X 120
#define BUTTON_START_Y 245

void VR_Draw_Button(UINT8 PlaylistCount)
{
        DrawRect(BUTTON_START_X, BUTTON_START_Y,
            100, 25,
            VR_Mode == 0 ? 1 : 0, BUTTON_Y, BUTTON_CRCB);
  //  DrawFileIcon(fsArea[FS_AREA_BUTTON].xStart ++ 6, fsArea[FS_AREA_BUTTON].yStart + 6, CNT_AREA_MP3BUTTON - 2);

		FSGUI_ShowString(BUTTON_START_X+15,
			BUTTON_START_Y+5,
			"ORIGINAL", YELLOW_Y, YELLOW_CRCB);


	//draw JPEG icon
	if (PlaylistCount)
	{
		DrawRect(BUTTON_START_X +100+2, BUTTON_START_Y, 100, 25,
			VR_Mode == 1 ? 1 : 0, BUTTON_Y, BUTTON_CRCB);
	}
	else
	{
		FSGUI_FillFrameBuf(BUTTON_START_X+100+2, BUTTON_START_Y,
			100, 25,
			BUTTON_Y, BUTTON_CRCB);
	}
	//DrawFileIcon(fsArea[FS_AREA_BUTTON].xStart +BUTTON_OFFSET+ 33, fsArea[FS_AREA_BUTTON].yStart + 6, CNT_AREA_JPEGBUTTON - 2);
		FSGUI_ShowString(BUTTON_START_X+15+100+2,
			BUTTON_START_Y+5,
			"PLAYLIST", YELLOW_Y, YELLOW_CRCB);
}

void VR_Menu_Set_Scroll()
{
		pFsJpeg->File_Page_Count = (pFsJpeg->file_specify_in_dir + VR_PER_PAGE - 1) / VR_PER_PAGE;

	if (pFsJpeg->File_Page_Count != 1)
		pFsJpeg->scroll_len = fsArea[FS_AREA_MOVEBAR].ySize / pFsJpeg->File_Page_Count;
	else if (pFsJpeg->file_specify_in_dir != 1)
		pFsJpeg->scroll_len = fsArea[FS_AREA_MOVEBAR].ySize / 2;
	else
		pFsJpeg->scroll_len = fsArea[FS_AREA_MOVEBAR].ySize;

	if (pFsJpeg->scroll_len < 4)
		pFsJpeg->scroll_len = 4;

	if ((fsArea[FS_AREA_MOVEBAR].ySize - pFsJpeg->scroll_len) >= (pFsJpeg->file_specify_in_dir - 1))
	{
		pFsJpeg->scroll_step = (fsArea[FS_AREA_MOVEBAR].ySize - pFsJpeg->scroll_len) / (pFsJpeg->file_specify_in_dir - 1);
		pFsJpeg->scroll_len = fsArea[FS_AREA_MOVEBAR].ySize - pFsJpeg->scroll_step * (pFsJpeg->file_specify_in_dir - 1);
	}
	else
	{
		pFsJpeg->scroll_step = 10 * (fsArea[FS_AREA_MOVEBAR].ySize - pFsJpeg->scroll_len) / (pFsJpeg->file_specify_in_dir - 1);
		pFsJpeg->scroll_len = fsArea[FS_AREA_MOVEBAR].ySize - pFsJpeg->scroll_step * (pFsJpeg->file_specify_in_dir - 1) / 10;
	}

	pFsJpeg->file_page_will = 0;
	pFsJpeg->file_will = 0;

}




void VRShowHL(void)
{

		// clear last HL
	switch (old_ControlArea)
	{

		case  CNT_AREA_DIR:
				{
					VRClearRectArea(VR_Item_Rect, DIR_STEP, DIR_AREA_BKGROUND_CRCB, HL_show%VR_PER_PAGE);
					VR_Show_Item(HL_show,HL_show%VR_PER_PAGE);
				}
				break;

		case  CNT_AREA_MP3BUTTON:
		case  CNT_AREA_JPEGBUTTON:
#if 0			
				{
					DrawRect(fsArea[FS_AREA_BUTTON].xStart+BUTTON_OFFSET, fsArea[FS_AREA_BUTTON].yStart,
					25, 25,
						VR_Mode == VR_MODE_ORI? 1 : 0, BUTTON_Y, BUTTON_CRCB);

					DrawFileIcon(fsArea[FS_AREA_BUTTON].xStart + 6+BUTTON_OFFSET, fsArea[FS_AREA_BUTTON].yStart + 6, CNT_AREA_MP3BUTTON - 2);
				}
		
		
				{
					//FSGUI_FillFrameBuf(fsArea[FS_AREA_BUTTON].xStart + 3+ 27-1, fsArea[FS_AREA_BUTTON].yStart + 3, 24,24, BUTTON_Y,BUTTON_CRCB);
					DrawRect(fsArea[FS_AREA_BUTTON].xStart+27+BUTTON_OFFSET, fsArea[FS_AREA_BUTTON].yStart,
					25, 25,
						VR_Mode == VR_MODE_PLAYLIST? 1 : 0, BUTTON_Y, BUTTON_CRCB);
					DrawFileIcon(fsArea[FS_AREA_BUTTON].xStart + 33+BUTTON_OFFSET, fsArea[FS_AREA_BUTTON].yStart + 6, CNT_AREA_JPEGBUTTON - 2);
				}
#else
				VR_Draw_Button(pDSV->PL_Ns);
#endif
				break;
		default: break;
   }

	// draw current HL
	switch (pFsJpeg->ControlArea)
	{

		case  CNT_AREA_DIR:
				{
					HL_show = pFsJpeg->dir_current;
					old_ControlArea = CNT_AREA_DIR;

					FSGUI_FillFrameBuf(VR_Item_Rect.xStart , FS_DIRLIST_YSTART  + (HL_show%VR_PER_PAGE)*VR_PER_PAGE* FS_FILELIST_YSTEP, HL_Width, HL_Heighth*3+10, HL_Y, HL_CRCB);
					VR_Show_Item(HL_show,HL_show%VR_PER_PAGE);
				}
				break;

		case  CNT_AREA_MP3BUTTON:
				{
					old_ControlArea = CNT_AREA_MP3BUTTON;
#if 0					
					FSGUI_FillFrameBuf(fsArea[FS_AREA_BUTTON].xStart+BUTTON_OFFSET , fsArea[FS_AREA_BUTTON].yStart , 25,25,HL_Y,HL_CRCB);
					DrawFileIcon(fsArea[FS_AREA_BUTTON].xStart+BUTTON_OFFSET+ 6, fsArea[FS_AREA_BUTTON].yStart + 6, CNT_AREA_MP3BUTTON - 2);
#else
					FSGUI_FillFrameBuf(BUTTON_START_X , BUTTON_START_Y, 100,25,HL_Y,HL_CRCB);
					FSGUI_ShowString(BUTTON_START_X+15,
					BUTTON_START_Y+5,
					"ORIGINAL", YELLOW_Y, YELLOW_CRCB);
#endif
				}
				break;
		case  CNT_AREA_JPEGBUTTON:
				{
					old_ControlArea = CNT_AREA_JPEGBUTTON;
#if 0
					FSGUI_FillFrameBuf(fsArea[FS_AREA_BUTTON].xStart+27+BUTTON_OFFSET, fsArea[FS_AREA_BUTTON].yStart , 25,25, HL_Y,HL_CRCB);
					DrawFileIcon(fsArea[FS_AREA_BUTTON].xStart+BUTTON_OFFSET + 33, fsArea[FS_AREA_BUTTON].yStart + 6, CNT_AREA_JPEGBUTTON - 2);
#else
					FSGUI_FillFrameBuf(BUTTON_START_X +100+2 , BUTTON_START_Y, 100,25,HL_Y,HL_CRCB);

					FSGUI_ShowString(BUTTON_START_X+15+100+2,
					BUTTON_START_Y+5,
					"PLAYLIST", YELLOW_Y, YELLOW_CRCB);
#endif
		}
				break;
	default: break;
	}
}


void VR_Draw_Menu_Bkg()
{
	disable_video();           
	config_memory(MEMORY_GRAPH_SMALL);
	setup_tv_format(tv_format);						
	delay_srv_10ms(2);         
								
	VR_FSGUI_Menu();   

	delay_srv_10ms(2);
	enable_video();			
	DrawScroll();
	
	pFsJpeg->file_specify_in_dir=pDSV->ORI_PG_Ns;
	VR_Menu_Set_Scroll();
	
	MoveScroll(0);
	VR_PG_List();
	VR_Draw_Button(pDSV->PL_Ns);
}

void FSGUI_FillFrameBuf2(int x, int y, int xSize, int ySize, UINT16 color_Y, UINT16 color_CrCb)
{
    int i, j;
    
    for (j = y; j < y + ySize; j++)
    {
        for (i = x; i < x + xSize; i++)
        {
        	UINT16 NewY;
			if((color_Y-(i-150)/6-j/6)>10)
				NewY=(color_Y-(i-150)/6-j/6); 
			else
				NewY=10;
            *Y_XY(i, j) = NewY & 0xff;
            *C_XY(i, j) = color_CrCb;
        }
		
    }
}

void FSGUI_ShowBigString(int x, int y, const char *s, BYTE iY, UINT16 iCbCr)
{
	int	i = 0;
	BYTE* p = (BYTE *)s;
	int length = 0;
	//sometime may exceed 25 chinese
	//zhaoyanhua modify. 2003-8-26 14:36
	#ifdef MP3_TXT_DISPLAY
	unsigned char ss[100];
	#else
	unsigned char ss[50];
	#endif
	unsigned char* ss_ptr = ss;

	strcpy(ss_ptr, p);
	
	while(p[i])
	{
		length++;
		i++;
	}
	i = 0;
	
	while (*p)
	{
		BYTE    c;
		BYTE    c1;
		int     iRes = 0;
        
		//  which character
		c = *p;
		c1 = *(p + 1);

#ifdef USE_GB2312_FONT
		if (((c >= 0xA1) && (c <= 0xF8)) && ((c1 >= 0xA1) && (c1 < 0xFF)))             
		 {
			// GB code
			iRes = 3;
		 }
		 else  
#endif
#ifdef USE_BIG5_FONT
		if(((c >= 0xA1) && (c <= 0xF9)) && ((c1 >= 0x40 && c1 <= 0x7E) || (c1 >= 0xA1 && c1 <= 0xFE))) // yhwang for big5 20021001
		{
			// Big5 code
			iRes = 2;
		}
		else 
#endif
		if ((c >= 32) && (c <= 126)) // ASCII code
			iRes = 1;
		else
		{
			iRes = 0;
			c = '_';
		}
		
		if ((iRes == 0) || (iRes == 1))
		{
#ifdef SUPPORT_CHINESE_FONT // Clead
			if ((c == '!') || (c == '"') || (c == '#') || (c == '$') ||
				(c == '&') || (c == '\'') || (c == '(') || (c == ')') ||
				(c == ',') || (c == ';') || (c == '=') || (c == '^'))
#ifdef USE_GB2312_FONT
			{
				c1 = 0x03 + 0xa0;
				c = c + 0x80;
				FSGUI_GBShowChar(0, (x + i), y, c1, c, iY, iCbCr);
			}
			else
#elif defined(USE_BIG5_FONT)
			{
				if(c < 114)
				{
					c1 = 0xa2;
					c = c + 0x8e;
				}
				else
				{
					c1 = 0xa3;
					c = c - 113 + 0x40;
				}
				FSGUI_Big5ShowChar(0, (x + i), y, c1, c, iY, iCbCr);
			}
			else
#endif
				FSGUI_ShowChar(0, (x + i), y, c, iY, iCbCr);
#else
			FSGUI_ShowBigChar(0, (x + i), y, c, iY, iCbCr);

⌨️ 快捷键说明

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