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

📄 fsgui_new.c

📁 dvd里面的一个文件系统的代码
💻 C
📖 第 1 页 / 共 5 页
字号:
/**************************************************************
** FILE
** fsGUI_new.c
**
** DESCRIPTION
** On the base of fsGUI1.c, build a new GUI for MP3/JPEG/GAME.
**
**
**   Creator:   zhaoyanhua
**   Date:     3-7-10 13:24
****************************************************************/



#include "global.h"
#include "func.h"
#include "memmap.h"
#include "util.h"
#include "graph.h"
#include "memcfg.h"
#include "framebuf.h"
#include "macro.h"
#include "stc.h"
#include "cfont.h"
#include "vfdfunc.h"
#include "osd.h"
#include "image.h"
#include "nesinit.h"
#include "fs96602.h"
#include "fsNAV.h"
#include "fsGUI.h"
#include "fsGUI1.h"
//#include "user_if.h"
//zhaoyanhua add 3-7-25 15:08
#include "fsGUI1.h"
//#include "fsGUI_new.h"

#ifdef JPG_OLD_PARSER_FLOW
    #ifdef JPG_EFFECT
    #include "jpegeffect.h"
    #endif
#else
    #include "pic_effect.h"
#endif

#ifdef SUPPORT_HL_SCROLL_DISPLAY_LFN	//yaowh 2006-11-10 10:29AM
#include "file_if.h"
#include "file_def.h"
#endif

#include "fsGUIX.h"

//extern const UINT8 pic_cd_str[17];//terry,2004/1/8 06:25PM
#ifdef FAT_FILE_MODE//liweihua 2004-10-25 20:15
extern FSJPEGDATA  *pFsJpegbuf;
extern UINT32 iso9660buf;
#endif
#ifdef IDE_CF_SW
extern UINT8 max_part;
#endif//#ifdef IDE_CF_SW

#ifdef CARD_SETUP_TYPE_5
  extern UINT8 PMP_CF_Card_Insert;
#endif

#ifdef FILE_MODE_WRITE
extern BYTE     *mediaStr[];
extern BYTE     srceType_flag;
extern FSJPEGDATA  *pFsJpeg_des_buf; 
extern UINT32 iso9660buf_src;
extern UINT32 iso9660buf_des;
void Draw_File_Mode_Button(void);
extern void ShowFileItem(UINT16, int);
#endif
/*
 * FUNC: draw slot.
 */
void DrawScroll(UINT8 area)
{
    int  x, y, xSize, ySize;
    x = fsArea[area].xStart;
    y = fsArea[area].yStart;
    xSize = fsArea[area].xSize;
    ySize = fsArea[area].ySize;

    #ifdef PHILIPS_FSGUI//chenzhao20050613
    FSGUI_FillFrameBuf(x+1, y+ARROW_SIZE, xSize-2, ySize-2*ARROW_SIZE, PREVIEW_BKGROUND_Y, FILE_AREA_BKGROUND_CRCB);//terry,2004/1/30 06:54PM
	#elif defined(INDIGO_STYLE_FSGUI)	
	FSGUI_FillFrameBuf(      x,       y, xSize, ySize, FILE_LIST_RIGHT_Y, DIR_AREA_BKGROUND_CRCB); // clear bg
    FSGUI_FillFrameBuf(      x,       y, xSize,     1, SCROLL_LINE_Y,SCROLL_LINE_CbCr); // top line
    FSGUI_FillFrameBuf(      x,       y,     1, ySize, SCROLL_LINE_Y,SCROLL_LINE_CbCr); // left line
    FSGUI_FillFrameBuf(x+xSize,       y,     1, ySize, SCROLL_LINE_Y,SCROLL_LINE_CbCr); // right line	
    FSGUI_FillFrameBuf(      x, y+ySize, xSize,     1, SCROLL_LINE_Y,SCROLL_LINE_CbCr); // bottom line
    #else
    FSGUI_FillFrameBuf(x, y+ARROW_SIZE, xSize, ySize-2*ARROW_SIZE, WHITE_Y-0x05, WHITE_CRCB);//terry,2004/1/30 06:54PM
    #endif
}

void MoveScroll(UINT16 locate, UINT8 area)
{
	int y, fileOrDirCount,scroll_length, scroll_step;
	if(area == FS_AREA_MOVEBAR)	
	{
		DrawScroll(FS_AREA_SLOT);   
		fileOrDirCount 	= pFsJpeg->file_specify_in_dir;
		scroll_step 	= pFsJpeg->scroll_step;
		scroll_length	= pFsJpeg->scroll_len;
	}
#ifdef DIR_SCROLL_BAR
	else
{
		int iDirCount=0, total_dir=0;
		for (iDirCount = 0; iDirCount < pFsJpeg->fsnav_dir_cnt; iDirCount++)
		{
			if (iso9660_dir[iDirCount].type & (0x01 << pFsJpeg->gifsFuncBtn))
	            total_dir++;
		}
	    pFsJpeg->dir_count_in_specity_Category = total_dir;
		DrawScroll(FS_DIR_AREA_SLOT); 

		fileOrDirCount 	= pFsJpeg->dir_count_in_specity_Category;
		scroll_step 	= pFsJpeg->dir1_scroll_step;
		scroll_length	= pFsJpeg->dir1_scroll_len;
	}
#endif	

	#ifndef INDIGO_STYLE_FSGUI
    DrawArrow(fsArea[area].xStart,fsArea[area].yStart-ARROW_SIZE,2);
    DrawArrow(fsArea[area].xStart,fsArea[area].yStart +fsArea[area].ySize,1);
	#endif

    if ((fsArea[area].ySize - scroll_length) >= (fileOrDirCount - 1))
        y = fsArea[area].yStart + locate * scroll_step;
    else
        y = fsArea[area].yStart + locate * scroll_step / 100;
	#ifdef INDIGO_STYLE_FSGUI
	FSGUI_FillFrameBuf(fsArea[area].xStart, y, fsArea[area].xSize, scroll_length, SCROLL_LINE_Y, SCROLL_LINE_CbCr);
	#else
    DrawRect(fsArea[area].xStart, y, fsArea[area].xSize, scroll_length, 0, YELLOW_Y, YELLOW_CRCB);
	#endif
}


#ifdef INDIGO_STYLE_FSGUI
//2006-06-02, mimitsai add for HD ui.
#ifdef INDIGO_STYLE_LARGE_FSGUI
#define lineWid	3
#else
#define lineWid	1
#endif
void DrawBottomOutLine(UINT16 x, UINT16 y, UINT16 wid, UINT16 hei, UINT8 color_y, UINT16 color_cbcr)
{
	FSGUI_FillFrameBuf( x    -lineWid,  y   -lineWid,         wid, lineWid, color_y, color_cbcr);
	FSGUI_FillFrameBuf( x    -lineWid,  y   -lineWid,     lineWid,     hei, color_y, color_cbcr);
	FSGUI_FillFrameBuf( x+wid-lineWid,  y   -lineWid,     lineWid,     hei, color_y, color_cbcr);
	FSGUI_FillFrameBuf( x    -lineWid, y+hei-lineWid, wid+lineWid, lineWid, color_y, color_cbcr);		
}
//2006-06-02, mimitsai add for HD ui.
void DrawSelectedBottomOutLine(UINT16 x, UINT16 y, UINT16 wid, UINT16 hei)
{
	FSGUI_FillFrameBuf( x    -lineWid,  y   -lineWid,         wid, lineWid, BK_GROUNDY, BK_GROUNDCRCB);
	FSGUI_FillFrameBuf( x    -lineWid,  y   -lineWid,     lineWid,     hei, BK_GROUNDY, BK_GROUNDCRCB);
	FSGUI_FillFrameBuf( x+wid-lineWid,  y   -lineWid,     lineWid,     hei, (RGB2Y (125, 128, 156)), (RGB2Cr(125, 128, 156)<<8)|(RGB2Cb(125, 128, 156)));
	FSGUI_FillFrameBuf( x    -lineWid, y+hei-lineWid, wid+lineWid, lineWid, (RGB2Y (125, 128, 156)), (RGB2Cr(125, 128, 156)<<8)|(RGB2Cb(125, 128, 156)));		
}
#endif


void SelectHL()
{
    int iFiles;

#ifdef MP3_DIRECT_SELECT
    iFiles = pFsJpeg->count_file[pFsJpeg->gifsFuncBtn - FS_FUNC_MP3];
#else
    iFiles = pFsJpeg->file_specify_in_dir;
#endif

// 2004/04/20 yltseng, to make HL wider for Chinse Font and Joliet
#ifdef INDIGO_STYLE_FSGUI
    HL_Width = ITEM_MAX_WIDTH;
#else
#if defined (SUPPORT_FONT_UTIL) || defined (SUPPORT_JOLIET_FORMAT)  // 2005/02/16 yltseng
	#ifdef DIR_SCROLL_BAR
    	HL_Width = 110;;
    #else
    HL_Width = 116;
	#endif
#else
    if (iFiles>999)
        HL_Width = 116;
    else if (iFiles>99)
        HL_Width = 108;
    else
	#ifdef DIR_SCROLL_BAR
        HL_Width = 110;
    #else
        HL_Width = 116;
#endif
#endif
#endif


    //ShowHL();//move to the last of SelectHL() zhaoyanhua  2004-2-2 17:13
#ifdef MP3_TXT_DISPLAY //zhaoyanhua add 2003-9-2 9:40
    if ( ( (JPEG_Preview_drawed == DIR_LIST_IN_DIR_AREA)
         &&(pFsJpeg->gifsFuncBtn != FS_FUNC_MP3) )
      || ( (MP3_Lyrics_Drawed == DIR_LIST_IN_DIR_AREA)
         &&(pFsJpeg->gifsFuncBtn == FS_FUNC_MP3)))//zhaoyanhua modify 2003-8-28 13:29
#else
    //to avoid the bug : when play JPEG, BUTTON->FILE  (RIGHT) or(UP) ,not draw DIR playing again.
    //zhaoyanhua modify 2003-12-27 11:10
    if ( ((JPEG_Preview_drawed == DIR_LIST_IN_DIR_AREA) //&&(!(pFsJpeg->gifsbPreview))
        &&(pFsJpeg->gifsFuncBtn == FS_FUNC_JPEG))//for JPEG 
      ||((JPEG_Preview_drawed == DIR_LIST_IN_DIR_AREA) && (pFsJpeg->gifsFuncBtn != FS_FUNC_JPEG))//for MP3/OTHER 
       )
#endif
    {
#if defined (SUPPORT_ID3) && defined( SUPPORT_ID3_NEWGUI ) // in FSGUI dir area 2007-1-31 13:57  
        if ((pFsJpeg->gifsFuncBtn == FS_FUNC_MP3 && pFsJpeg->ControlArea == CNT_AREA_DIR) 
           || pFsJpeg->gifsFuncBtn != FS_FUNC_MP3)
#endif
        {
        	ShowCurrentDirPlaying();
        }
    }
    
    ShowCurrentFilePlaying();
    ShowHL();//zhaoyanhua move here 2004-2-2 17:13
}


#ifdef READ_FAT_LONGNAME //linrc 2005-3-17 10:58
BYTE dFlag;
#endif
void ShowHL(void)
{
    #ifdef AUDIO_SHOW_SAVER
    if (bDisableGUI) return;
    #endif

    #if defined(FAT_FILE_MODE)||defined(FILE_MODE_WRITE)
    FSJPEGDATA  *addr1;
    UINT32 addr2;
    BYTE j;
    #endif

    // clear last HL
	switch (old_ControlArea)
    {
        case  CNT_AREA_FILE:
            //zhaoyanhua add 2004-2-2 16:54
            //make some changes for the GUI not blink .
            if(HL_show == fsnav_file_HL)
                ShowCurrentFilePlaying();
            else
            {//2006-06-02, mimitsai add for HD ui.
			   	ClearRectArea(Rect[FILE_RECT], FILE_STEP, FILE_LIST_LEFT_Y, FILE_LIST_RIGHT_Y, FILE_AREA_BKGROUND_CRCB,FS_AREA_FILEITEM, HL_show);
                FSShowFileItem(HL_show, FS_GetFileProperty(pFsJpeg->file_array[HL_show],FILE_PROPERTY_NAME));//resume the last HL
                //FSShowFileItem(HL_show, iso9660_file[pFsJpeg->file_array[HL_show]].name);//resume the last HL
            }
            break;
        case  CNT_AREA_DIR:
            //zhaoyanhua add 2004-2-2 16:54
            //make some changes for the GUI not blink .
            if(HL_show == fsnav_dir_HL)
            {
#if defined (SUPPORT_ID3) && defined (SUPPORT_ID3_NEWGUI) // in FSGUI dir area 2007-1-31 13:57 denghg add for not ShowCurrentFilePlaying when move from dir area 2007-2-3 9:55
                if (pFsJpeg->gifsFuncBtn != FS_FUNC_MP3 
                   || (pFsJpeg->ControlArea == CNT_AREA_DIR && pFsJpeg->gifsFuncBtn == FS_FUNC_MP3))  
#endif          
                {            
                	ShowCurrentDirPlaying();
                }
            }
            else
            {//2006-06-02, mimitsai add for HD ui.
				ClearRectArea(Rect[DIR_RECT], DIR_STEP, FILE_LIST_LEFT_Y, FILE_LIST_RIGHT_Y, DIR_AREA_BKGROUND_CRCB, FS_AREA_DIRITEM, HL_show);
                ShowDirItem(HL_show,iso9660_dir[pFsJpeg->dir_array[HL_show]].name);//resume the last HL
            }
            break;

        case  CNT_AREA_MP3BUTTON:
            {
			#ifdef INDIGO_STYLE_FSGUI
				if(pFsJpeg->gifsFuncBtn == FS_FUNC_MP3)
					DrawSelectedBottomOutLine(fsArea[FS_AREA_MP3_BUTTON].xStart, fsArea[FS_AREA_MP3_BUTTON].yStart, fsArea[FS_AREA_MP3_BUTTON].xSize, fsArea[FS_AREA_MP3_BUTTON].ySize);	
				else
					DrawBottomOutLine(fsArea[FS_AREA_MP3_BUTTON].xStart,fsArea[FS_AREA_MP3_BUTTON].yStart, fsArea[FS_AREA_MP3_BUTTON].xSize  ,fsArea[FS_AREA_MP3_BUTTON].ySize, HIGHLIGHT_BG_COLOR_Y, HIGHLIGHT_BG_COLOR_CbCr);
			#else	
                DrawRect(fsArea[FS_AREA_BUTTON].xStart, fsArea[FS_AREA_BUTTON].yStart,
                		25, 25,
                    	pFsJpeg->gifsFuncBtn == FS_FUNC_MP3 ? 1 : 0, BK_GROUNDY, BK_GROUNDCRCB);
                DrawFileIcon(fsArea[FS_AREA_BUTTON].xStart + 6, fsArea[FS_AREA_BUTTON].yStart + 6, CNT_AREA_MP3BUTTON - 2);
			#endif					
            }
            break;
        case  CNT_AREA_JPEGBUTTON:
            {
			#ifdef INDIGO_STYLE_FSGUI
				if(pFsJpeg->gifsFuncBtn == FS_FUNC_JPEG)
					DrawSelectedBottomOutLine(fsArea[FS_AREA_JPG_BUTTON].xStart, fsArea[FS_AREA_JPG_BUTTON].yStart, fsArea[FS_AREA_JPG_BUTTON].xSize, fsArea[FS_AREA_JPG_BUTTON].ySize);	
				else
					DrawBottomOutLine(fsArea[FS_AREA_JPG_BUTTON].xStart,fsArea[FS_AREA_JPG_BUTTON].yStart, fsArea[FS_AREA_JPG_BUTTON].xSize  ,fsArea[FS_AREA_JPG_BUTTON].ySize, HIGHLIGHT_BG_COLOR_Y, HIGHLIGHT_BG_COLOR_CbCr);
			#else	
                DrawRect(fsArea[FS_AREA_BUTTON].xStart+27, fsArea[FS_AREA_BUTTON].yStart,
                		25, 25,
                    	pFsJpeg->gifsFuncBtn == FS_FUNC_JPEG ? 1 : 0, BK_GROUNDY, BK_GROUNDCRCB);
                DrawFileIcon(fsArea[FS_AREA_BUTTON].xStart + 33, fsArea[FS_AREA_BUTTON].yStart + 6, CNT_AREA_JPEGBUTTON - 2);
			#endif
            }
            break;

#ifdef SUPPORT_NESGAME
        case  CNT_AREA_GAMEBUTTON:
            {
			#ifdef INDIGO_STYLE_FSGUI
				if(pFsJpeg->gifsFuncBtn == FS_FUNC_GAME)
					DrawSelectedBottomOutLine(fsArea[FS_AREA_GAME_BUTTON].xStart, fsArea[FS_AREA_GAME_BUTTON].yStart, fsArea[FS_AREA_GAME_BUTTON].xSize, fsArea[FS_AREA_GAME_BUTTON].ySize);	
				else
					DrawBottomOutLine(fsArea[FS_AREA_GAME_BUTTON].xStart,fsArea[FS_AREA_GAME_BUTTON].yStart, fsArea[FS_AREA_GAME_BUTTON].xSize  ,fsArea[FS_AREA_GAME_BUTTON].ySize, HIGHLIGHT_BG_COLOR_Y, HIGHLIGHT_BG_COLOR_CbCr);
			#else	
                DrawRect(fsArea[FS_AREA_BUTTON].xStart+54, fsArea[FS_AREA_BUTTON].yStart,
                		25, 25,
                    	pFsJpeg->gifsFuncBtn == FS_FUNC_GAME ? 1 : 0, BK_GROUNDY, BK_GROUNDCRCB);
                DrawFileIcon(fsArea[FS_AREA_BUTTON].xStart + 60, fsArea[FS_AREA_BUTTON].yStart + 6, CNT_AREA_GAMEBUTTON - 2);
			#endif
            }
            break;
#endif

#ifdef SUPPORT_FILE_SYSTEM_MODE
        case  CNT_AREA_OTHERBUTTON:
			{
			#ifdef INDIGO_STYLE_FSGUI
				if(pFsJpeg->gifsFuncBtn == FS_FUNC_OTHER)
					DrawSelectedBottomOutLine(fsArea[FS_AREA_OTHER_BUTTON].xStart, fsArea[FS_AREA_OTHER_BUTTON].yStart, fsArea[FS_AREA_OTHER_BUTTON].xSize, fsArea[FS_AREA_OTHER_BUTTON].ySize);	
				else
					DrawBottomOutLine(fsArea[FS_AREA_OTHER_BUTTON].xStart,fsArea[FS_AREA_OTHER_BUTTON].yStart, fsArea[FS_AREA_OTHER_BUTTON].xSize  ,fsArea[FS_AREA_OTHER_BUTTON].ySize, HIGHLIGHT_BG_COLOR_Y, HIGHLIGHT_BG_COLOR_CbCr);
			#else	
#ifdef SUPPORT_NESGAME
                DrawRect(fsArea[FS_AREA_BUTTON].xStart+81, fsArea[FS_AREA_BUTTON].yStart,
                		25, 25,
                    	pFsJpeg->gifsFuncBtn == FS_FUNC_GAME ? 1 : 0, BK_GROUNDY, BK_GROUNDCRCB);
                DrawFileIcon(fsArea[FS_AREA_BUTTON].xStart + 87, fsArea[FS_AREA_BUTTON].yStart + 6, CNT_AREA_OTHERBUTTON - 2);
#else
                DrawRect(fsArea[FS_AREA_BUTTON].xStart+54, fsArea[FS_AREA_BUTTON].yStart,
                		25, 25,
                    	pFsJpeg->gifsFuncBtn == FS_FUNC_OTHER ? 1 : 0, BK_GROUNDY, BK_GROUNDCRCB);
                DrawFileIcon(fsArea[FS_AREA_BUTTON].xStart + 60, fsArea[FS_AREA_BUTTON].yStart + 6, CNT_AREA_OTHERBUTTON - 2);
#endif
			#endif

⌨️ 快捷键说明

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