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

📄 photobrowserapi.c

📁 C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码
💻 C
📖 第 1 页 / 共 2 页
字号:

}

//***************************************************************************
// Func:        void _photo_paint_sel_frame(uint8 pos_x, uint8 pos_y)
// Input:       pos_x, pos_y
// Output:      none
//                              
// Description: paint select frame
//
//***************************************************************************
void _photo_paint_sel_frame(uint8 pos_x, uint8 pos_y)
{
 API_LcmPutSysImage(IMG_PHOTO_SELECT1,pos_x,pos_y);
 API_LcmPutSysImage(IMG_PHOTO_SELECT2,pos_x,pos_y);
 API_LcmPutSysImage(IMG_PHOTO_SELECT1,pos_x,pos_y+POS_PHOBRO_SEL_GAP_Y-POS_PHOBRO_FRAME_WIDTH);
 API_LcmPutSysImage(IMG_PHOTO_SELECT2,pos_x+POS_PHOBRO_SEL_GAP_X-POS_PHOBRO_FRAME_WIDTH,pos_y);
}

//***************************************************************************
// Func:        void _photo_clear_sel_frame(uint8 pos_x, uint8 pos_y)
// Input:       pos_x, pos_y
// Output:      none
//                              
// Description: clean select frame
//
//***************************************************************************
void _photo_clear_sel_frame(uint8 pos_x, uint8 pos_y)
{
 API_LcmPutSysImage(IMG_PHOTO_NO_SELECT1,pos_x,pos_y);
 API_LcmPutSysImage(IMG_PHOTO_NO_SELECT2,pos_x,pos_y);
 API_LcmPutSysImage(IMG_PHOTO_NO_SELECT1,pos_x,pos_y+POS_PHOBRO_SEL_GAP_Y-POS_PHOBRO_FRAME_WIDTH);
 API_LcmPutSysImage(IMG_PHOTO_NO_SELECT2,pos_x+POS_PHOBRO_SEL_GAP_X-POS_PHOBRO_FRAME_WIDTH,pos_y);
}

//***************************************************************************
// Func:        void _photo_show_item_icon(uint8 type, uint8 index, uint16 file_curr_paint_item)
// Input:       type
//                      return icon     : 0
//                      folder          : 1
//                      file            : 2
//
//                      index (0~8) 9 frame
//                      ile_curr_paint_item : current file
// Output:      none
//                              
// Description: show item icon and info
//
//***************************************************************************
void _photo_show_item_icon(uint8 type, uint8 index, uint16 file_curr_paint_item)
{
      uint8 result;
      uint16 string_ptr;
      uint8 thu_pos_x[] = {POS_PHOBRO_THU0_X,POS_PHOBRO_THU1_X,POS_PHOBRO_THU2_X,
                           POS_PHOBRO_THU3_X,POS_PHOBRO_THU4_X,POS_PHOBRO_THU5_X,
                           POS_PHOBRO_THU6_X,POS_PHOBRO_THU7_X,POS_PHOBRO_THU8_X};
      uint8 thu_pos_y[] = {POS_PHOBRO_THU0_Y,POS_PHOBRO_THU1_Y,POS_PHOBRO_THU2_Y,
                           POS_PHOBRO_THU3_Y,POS_PHOBRO_THU4_Y,POS_PHOBRO_THU5_Y,
                           POS_PHOBRO_THU6_Y,POS_PHOBRO_THU7_Y,POS_PHOBRO_THU8_Y};

      uint8 sel_pos_x[] = {POS_PHOBRO_SEL0_X,POS_PHOBRO_SEL1_X,POS_PHOBRO_SEL2_X,
                           POS_PHOBRO_SEL3_X,POS_PHOBRO_SEL4_X,POS_PHOBRO_SEL5_X,
                           POS_PHOBRO_SEL6_X,POS_PHOBRO_SEL7_X,POS_PHOBRO_SEL8_X};
      uint8 sel_pos_y[] = {POS_PHOBRO_SEL0_Y,POS_PHOBRO_SEL1_Y,POS_PHOBRO_SEL2_Y,
                           POS_PHOBRO_SEL3_Y,POS_PHOBRO_SEL4_Y,POS_PHOBRO_SEL5_Y,
                           POS_PHOBRO_SEL6_Y,POS_PHOBRO_SEL7_Y,POS_PHOBRO_SEL8_Y};

      string_ptr = (uint16)lfnPtr;

      // show return, folder, file icon
      if(file_repaint_flag)
      {
           
       if(type == ICON_RETURN) //show return icon
        API_LcmPutSysImage(IMG_PHOTO_LAST_FOLDER,thu_pos_x[index],thu_pos_y[index]);
       else if(type == ICON_FOLDER) //show folder icon
        API_LcmPutSysImage(IMG_PHOTO_FOLDER,thu_pos_x[index],thu_pos_y[index]);
       else if(type == ICON_FILE) //show file icon
       {
        API_LcmPutSysImage(IMG_PHOTO_SEL_BG,sel_pos_x[index],sel_pos_y[index]);
        API_PhotoSetEffect(PPM_THUMB_DIR,0);
        API_PhotoSetFile(FF_PHOTO_FORM,file_curr_paint_item-Folders);
        API_LcmClearScreen(thu_pos_x[index],thu_pos_y[index],PHOBRO_THUMB_W,PHOBRO_THUMB_H);
        if(!API_PhotoPlay(thu_pos_x[index],thu_pos_y[index],PHOBRO_THUMB_W,PHOBRO_THUMB_H))
        {
         //reload MPL lib
         //API_SysLoadMediaLib();
         // set hardware volume
         //API_SysSetHardwareVolume(0,0); // DAC set 0
         //API_SysSetHardwareVolume(4,10); // Mixer set 10
         //set mixer output
         //API_SysMixerOutputSelection(MIXER_DAC); 

         API_LcmPutSysImage(IMG_PICTURE_ICON,thu_pos_x[index],thu_pos_y[index]);
         if(index < 8) // 0~7
          API_SysWriteValue(RAM_SHARING_ADR,PHOTO_THU_0_7,(API_SysReadValue(RAM_SHARING_ADR,PHOTO_THU_0_7) | (1<<index)) );
         else
          API_SysWriteValue(RAM_SHARING_ADR,PHOTO_THU_8,1); 
         
        }
       }
      }
     
      //show item info if this item is selected
      if(index == file_curr_sel_icon)
      {
       //show selected frame
       _photo_paint_sel_frame(sel_pos_x[index],sel_pos_y[index]);
       // clean info bar
       API_LcmPutSysImage(IMG_INFO_BAR,POS_PHOBRO_INFOBAR_X,POS_PHOBRO_INFOBAR_Y);
       // show source icon
       if(nand_sd_flag == FAT_IS_NAND)
        API_LcmPutSysImage(IMG_SMALL_ICON_HD_SELECT,POS_PHOBRO_ICON_X,POS_PHOBRO_ICON_Y);
       else
        API_LcmPutSysImage(IMG_SMALL_ICON_SD_SELECT,POS_PHOBRO_ICON_X,POS_PHOBRO_ICON_Y);
       
       //show current folder / file name
       API_LcmSetStringLenth((POS_PHOBRO_NUM_X-POS_PHOBRO_FN_X)/8);

       //show return text
       if(type == ICON_RETURN)
       {
        result = 2;
        API_SysLoadValue(NAND_TEXT_ADR+(language*TIDX_AMOUNT_OF_ONE_LANGUAGE)+TIDX_RETURN,string_ptr,255);
       }
       else if(type == ICON_FOLDER) //show folder name text
        result=API_FATGetFolderName(file_curr_paint_item, sfnPtr, lfnPtr);
       else if(type == ICON_FILE) //show file name text
        result=API_FATGetFileName(FF_PHOTO_FORM,file_curr_paint_item-Folders, sfnPtr, lfnPtr);
       _photo_show_name(result);
       //API_LcmShowNumber(1<<index,0,POS_PHOBRO_NUM_Y,0);
       
       // show current_number/total_number
       if(type > ICON_RETURN)
       {
        API_LcmShowNumber2B(file_curr_paint_item,POS_PHOBRO_NUM_X,POS_PHOBRO_NUM_Y);
        API_LcmShowNumber2B((Folders+Files),POS_PHOBRO_NUM_X+40,POS_PHOBRO_NUM_Y);
        API_LcmShowString(TXT_PHOTO_LINE,POS_PHOBRO_NUM_X+32,POS_PHOBRO_NUM_Y);
       }
      }
}

//***************************************************************************
// Func:        void _photo_show_name(uint8 result)
// Input:       result 
//              1 : short file name
//              2 : long file name                                      
// Output:      none
//                      
// Description: show file(folder) name
//
//***************************************************************************
void _photo_show_name(uint8 result)
{
       if(result == 1) //show short file name
       {
        //API_LcmSetLanguage(CS_BIG5);
        API_LcmShowString(sfnPtr,POS_PHOBRO_FN_X,POS_PHOBRO_FN_Y);
       }
       else if(result == 2) //show long file name
       {
        API_LcmSetLanguage(CS_UNICODE);
        API_LcmShowString(lfnPtr,POS_PHOBRO_FN_X,POS_PHOBRO_FN_Y);
        if(language == 2)
         API_LcmSetLanguage(CS_GBK);
        else
         API_LcmSetLanguage(CS_BIG5);
       } 
}

//***************************************************************************
// Func:        uint8 _load_base_path(uint8 *base_folder_ptr)
// Input:       base_folder_ptr
//                       
// Output:      none
//                      
// Description: return base folder
//
//***************************************************************************
uint8 _load_base_path(uint8 *base_folder_ptr)
{
    uint8 root_order,result;
    uint16 folder_index;
    
    root_order = API_SysReadValue(RAM_SHARING_ADR,ROOT_ORDER);
        
    //return root
    while(root_order!=0)
    {
     API_FATExitFolder();
     API_SysWriteValue2B(RAM_CUR_PATH_ADR,root_order*2,0); 
     root_order--;
    }
    API_SysWriteValue(RAM_SHARING_ADR,ROOT_ORDER,root_order);

    // get folder index
    if(API_FATGetIdxOfSfn(base_folder_ptr,&folder_index) != 2)
    {
     #if DEBUG
        API_LcmShowString("can't find Music folder",0,0);
        return 0;
     #else
     result = FALSE;
     #endif
    }
    else
    {
      // go to Photo folder
      if(API_FATEnterFolderName(base_folder_ptr))
      {
       API_SysWriteValue2B(RAM_CUR_PATH_ADR,root_order*2,folder_index);
       root_order++;
       API_SysWriteValue(RAM_SHARING_ADR,ROOT_ORDER,root_order);
       result = TRUE;
      }
    }
    return result;
}

⌨️ 快捷键说明

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