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

📄 drawtool.c

📁 代码有点长,需细心阅读,仅供影音视听类产品的开发人员参考
💻 C
字号:
#include "global.h"
#include "func.h"
#include "util.h"
#include "stdlib.h"
//#include "hwsetup.h"
#include "fs9660.h"
#include "graph.h"
#include "framebuf.h"
//#include "macro.h"
//#include "stc.h"
#include "vpp.h"
#include "osd.h"
#include "memmap.h"
#include "regmap.h"
#include "user_init.h"

const UINT16 folderFont[][12] = {
    // folder unopened
    {
     0x1f00, 0x3180,
     0x60c0, 0x7ffe,
     0x4002, 0x4002,
     0x4002, 0x4002,
     0x4002, 0x4002,
     0x4002, 0x7ffe,
     },
    // folder opened
    {
     0x1f80, 0x30c0,
     0x607e, 0x4002,
     0xffe2, 0x8022,
     0x4012, 0x4012,
     0x200a, 0x200a,
     0x1006, 0x1ffe,
     },

};
/*
**
*/
void clr_window(int x_start, int y_start, int height, int width)
{
    FSGUI_FillFrameBuf(x_start, y_start, width, height, BKG_Y, BKG_CRCB);
}
/*
** FUNCTION
**
** DESCRIPTION
**
*/
void FillRedColor(int startx, int endx)
{
    FSGUI_FillFrameBuf(startx, TIME_Y, endx - startx, TIME_H, BKG_Y, BKG_CRCB);
}
/*
**
*/
void FSGUI_Menu()
{
    int     width, height;

    regs0->dis_pic_id = 0;
    PrintOsdMsg(STR_OS_NULL, REGION1, 1, 0, CH_N);  //charles jpeg->>mp3.
#ifdef SUPPORT_JPG_ZOOM_ON
    jpg_zoom_in_out = 0;
    vpp_zoom = 1;
    jpg_dis_xoffset = 0;
    jpg_dis_yoffset = 0;
#endif
#ifdef SUPPORT_JPG_DOUBLE_BUFFER
    jpg_vpp_flag = 0;
#endif
    jpg_clr_menu = 0;                           //charles 2002/5/13
#if  CONFIG==CONFIG_COMBO_SVCD
    //clrBuffer();                //charles 2002/5/8
    clrFrameBuffer(FRAME_REF0);
    vpp_set_pic(352, 288);              //charles 2002/5/13
#endif

#if CONFIG==CONFIG_COMBO_SVCD
    width = 480;
    height = 576;
#else
    width = 352;
    height = 288;
#endif

    // background
    FSGUI_FillFrameBuf(0, 0, width, height, BKG_Y, BKG_CRCB);

    // high line
    FSGUI_FillFrameBuf(0, Y1, width, LIGHT_WID, WHITE_Y, WHITE_CRCB);

    FSGUI_FillFrameBuf(0, Y1 + LIGHT_WID, X1, SHADOW_WID, BLACK_Y, BLACK_CRCB);

    FSGUI_FillFrameBuf(X1 + LIGHT_WID + SHADOW_WID, Y1 + LIGHT_WID,
                                         width - X1 - LIGHT_WID - SHADOW_WID, SHADOW_WID,
                                         BLACK_Y, BLACK_CRCB);

    FSGUI_FillFrameBuf(X1, Y1 + LIGHT_WID + SHADOW_WID,
                                         LIGHT_WID, 180, WHITE_Y, WHITE_CRCB);

    FSGUI_FillFrameBuf(X1 + LIGHT_WID, Y1 + LIGHT_WID + SHADOW_WID,
                                         SHADOW_WID, 180, BLACK_Y, BLACK_CRCB);

    FSGUI_FillFrameBuf(SLOT_X, SLOT_Y, SLOT_W, SLOT_H, WHITE_Y, WHITE_CRCB);

    DrawTime(0, 0);
}

/*
**
*/
void FSGUI_FillFrameBuf(int x, int y, int xSize, int ySize, UINT16 color_Y,
                                                UINT16 color_CrCb)
{
    int     i, j;

    if((xSize == 0) || (ySize == 0))
        return;

    for(j = y; j < y + ySize; j++)
    {
        for(i = x; i < x + xSize; i++)
        {
            *Y_XY(i, j) = (color_Y) & 0xff;
            *C_XY(i, j) = color_CrCb;
        }
    }

    //return;
}

/*
**
*/
void mp3_control_icon(int iShow)
{
    UINT16  x, y;
    UINT16  i, j;

    if(Gmem.gmp3.gifsSlide + Gmem.gmp3.gifsStatic)  // needn't care it when play jpeg, panxing, 2002-3-27
    {
        return;
    }

    y = 0;
    if(Gmem.gmp3.in_mp3_root)
    {
        x = CONT_X1;
    }
    else
    {
        x = CONT_X2;
    }

    if(iShow)
    {
        for(j = CONT_Y; j <= (CONT_Y + CONT_H); j++)
        {
            for(i = (x + y); i <= (x + CONT_W - y); i++)
            {
                *Y_XY(i, j) = RED_Y;
                *C_XY(i, j) = RED_CRCB;
            }
            y++;
        }
    }
    else
    {
        clr_window(x, CONT_Y, CONT_H, CONT_W);
    }
}
/*
**
*/
void mp3_dir_icon(void)
{
    int     iDir;
    int     i, j;
    int     x, y;
    int     numDir;

    if(Gmem.gmp3.refresh_dir_page == 0)
    {
        return;
    }

    clr_window(DIRICON_X, DIRICON_Y, DIRICON_H, DIRICON_W);

    x = DIRICON_X;
    y = DIRICON_Y;

    // calculate the number of directories in current dir page,panxing, 2002-3-29
    if(Gmem.gmp3.dir_page_now == Gmem.gmp3.dir_total_page)
    {
        numDir = Gmem.gmp3.mp3_dir_cnt - (Gmem.gmp3.dir_page_now - 1) * ItemNum;
    }
    else
    {
        numDir = ItemNum;
    }

    for(iDir = 0; iDir < numDir; iDir++)
    {
        for(i = 0; i < 12; i++)
        {
            for(j = 0; j < 16; j++)
            {
                if(iDir != (Gmem.gmp3.mp3_dir_now - 1) % ItemNum)
                {
                    if((folderFont[0][i] & (1 << (15 - j))))
                    {
                        *Y_XY((x + j), (y + i + iDir * FS_FILELIST_YSTEP)) =
                            LIGHTYELLOW_Y;
                        *C_XY((x + j), (y + i + iDir * FS_FILELIST_YSTEP)) =
                            LIGHTYELLOW_CRCB;
                    }
                }
                else
                {
                    if((folderFont[1][i] & (1 << (15 - j))))
                    {
                        *Y_XY((x + j), (y + i + iDir * FS_FILELIST_YSTEP)) =
                            LIGHTYELLOW_Y;
                        *C_XY((x + j), (y + i + iDir * FS_FILELIST_YSTEP)) =
                            LIGHTYELLOW_CRCB;
                    }
                }
            }
        }
/*
    if (iDir != (Gmem.gmp3.mp3_dir_now-1)%ItemNum)
      psprintf (linebuf, "%d%d\n", UNOPFOLDERL,UNOPFOLDERR);
    else
      psprintf (linebuf, "%d%d\n", OPFOLDERL,OPFOLDERR);

    drawString(x,y+iDir*FS_FILELIST_YSTEP,linebuf);
*/
    }
}
/*
**
*/
void mp3_show_path(void)
{
    int     iFile, iDir;

    iDir = Gmem.gmp3.mp3_dir_now - 1;
    iFile = Gmem.gmp3.first_mp3_entry + Gmem.gmp3.mp3_trk_now - 1;

    clr_window(INFO_X, INFO_Y, INFO_H, INFO_W);
    psprintf(linebuf, "[%s]%s", iso9660_dir[iDir].name,
                     iso9660_file[iFile].name);
    //check_name (linebuf, 1);


    if(strcmp(iso9660_file[iFile].ext, "MP3") == 0)
    {
        strcat(linebuf, ".MP3");
    }
#ifdef SUPPORT_JPG                          //charles 2002/04/08
    else if(strcmp(iso9660_file[iFile].ext, "JPG") == 0)
    {
        strcat(linebuf, ".JPG");
    }
#endif
#if CONFIG==CONFIG_COMBO_SVCD       //rbhung 2002.09.24 for EDO Release
#ifdef SUPPORT_GAME                         //charles 2002/04/08
    else if(strcmp(iso9660_file[iFile].ext, "NES") == 0)
    {
        strcat(linebuf, ".NES");
    }
#endif
#endif
    else
    {
        strcat(linebuf, ".xx");
    }

    setColor(YELLOW_Y << 16 | YELLOW_CRCB);
    drawString(INFO_X, INFO_Y, linebuf);
}

/*
**
*/
void MoveScroll(UINT16 locate)
{
    int     h1;

    if((BAR_H - Gmem.gmp3.scroll_len) >= (file_in_dir - 1))
    {
        h1 = locate * Gmem.gmp3.scroll_step;
    }
    else
    {
        h1 = locate * Gmem.gmp3.scroll_step / 10;
    }

    clr_window(BAR_X, BAR_Y, BAR_H, BAR_W);

    FSGUI_FillFrameBuf(BAR_X, BAR_Y + h1, BAR_W, Gmem.gmp3.scroll_len,
                                         WHITE_Y, WHITE_CRCB);

    //return ;
}
/*
** FUNCTION
**
** DESCRIPTION
**
*/

void mp3_file_list(UINT16 select_file)
{
    UINT16  i;                                      //Jeff 20010805 BYTE->UINT16
    UINT16  j;                                      //Jeff 20010805 BYTE->UINT16

    if(Gmem.gmp3.refresh_file_page == 0)
    {
        return;
    }

    if((Gmem.gmp3.file_page_old != Gmem.gmp3.file_page_now) ||
         (Gmem.gmp3.refresh_dir_page))
    {
        clr_window(FILEITEM_X, FILEITEM_Y, FILEITEM_H, FILEITEM_W);
    }

    j = 0;
    i = Gmem.gmp3.first_mp3_entry + (Gmem.gmp3.file_page_now - 1) * ItemNum;

    //psprintf(linebuf, "file-list %d %d %d %d\n", i,Gmem.gmp3.file_page_now,Gmem.gmp3.first_mp3_entry,Gmem.gmp3.last_mp3_entry);
    //epp_write_slow(linebuf);

    do
    {
#ifdef MP3_DIRECT_SELECT                //huo   2000.11.08
        psprintf(linebuf, "%02d %s\n", (i + 1), iso9660_file[i].name);
#else   /*  */
        psprintf(linebuf, "%02d %s\n", (i - Gmem.gmp3.first_mp3_entry + 1),
                         iso9660_file[i].name);
#endif /*  */

        check_name(linebuf, 0);

        if(j ==
             (select_file % ItemNum ==
                0 ? (ItemNum - 1) : select_file % ItemNum - 1))
        {
#ifdef MP3_DIRECT_SELECT                //huo   2000.11.08
            Gmem.gmp3.mp3_user_select = i + 1;  //zyf 891108
#endif /*  */
            setColor(WHITE_Y << 16 | WHITE_CRCB);
        }
        else
        {
            setColor(YELLOW_Y << 16 | YELLOW_CRCB);
        }

        if(strcmp(iso9660_file[i].ext, "MP3") == 0)
        {
            strcat(linebuf, ".MP3");
        }
#ifdef SUPPORT_JPG                          //charles 2002/04/08
        else if(strcmp(iso9660_file[i].ext, "JPG") == 0)
        {
            strcat(linebuf, ".JPG");
        }
#endif /*  */
#if CONFIG==CONFIG_COMBO_SVCD       //rbhung 2002.09.24 for EDO Release
#ifdef SUPPORT_GAME                         // charles 2002/04/08
        else if(strcmp(iso9660_file[i].ext, "NES") == 0)
        {
            strcat(linebuf, ".NES");
        }
#endif
#endif
        else
        {
            strcat(linebuf, ".xx");
        }

        drawString(FILEITEM_X, FILEITEM_Y + j * FS_FILELIST_YSTEP, linebuf);
        i++;
        j++;
    } while(j < ItemNum && i < Gmem.gmp3.last_mp3_entry);

    Gmem.gmp3.file_page_old = Gmem.gmp3.file_page_now;
    Gmem.gmp3.refresh_file_page = 0;

}

/*
**
*/

void mp3_dir_list(void)
{
    UINT16  i;                                      //Jeff 20010805 BYTE->UINT16
    UINT16  j;                                      //Jeff 20010805 BYTE->UINT16

    i = (Gmem.gmp3.dir_page_now - 1) * ItemNum;
    j = 0;

    if(Gmem.gmp3.refresh_dir_page == 0)
    {
        return;
    }

    if(Gmem.gmp3.dir_page_old != Gmem.gmp3.dir_page_now)
    {
        clr_window(DIRITEM_X, DIRITEM_Y, DIRITEM_H, DIRITEM_W);
    }

    do
    {
        if(iso9660_dir[i].dir > 0)
        {
            j++;
            psprintf(linebuf, "%02d [%s]\n", i + 1, iso9660_dir[i].name);
            check_name(linebuf, 1);

            if(j == (Gmem.gmp3.mp3_dir_now - 1) % ItemNum + 1)
            {
                setColor(WHITE_Y << 16 | WHITE_CRCB);
            }
            else
            {
                setColor(YELLOW_Y << 16 | YELLOW_CRCB);
            }

            drawString(DIRITEM_X, DIRITEM_Y + FS_FILELIST_YSTEP * (j - 1), linebuf);    //ych 001207
        }
        i++;
    }
    while(j < ItemNum && i < Gmem.gmp3.mp3_dir_cnt);

    Gmem.gmp3.dir_page_old = Gmem.gmp3.dir_page_now;
    Gmem.gmp3.refresh_dir_page = 0;
}

⌨️ 快捷键说明

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