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

📄 photoshowapi.c

📁 C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码
💻 C
字号:
//********************************************************************
// Name:     mjpAPI.c
// 
// Copyright (C) Sitronix TECHNOLOGY INC.
// All rights reserved by Sitronix TECHNOLOGY INC.
//
// Project:    ST3110
// Author:      Terry Wu
// Begin Date:  2008/01/01
// Last update: 2008/04/01
// $Header: $
// Description:
//   motion jpg function
//   
//   
//********************************************************************

#include <intr6502.h>
//#include <stdlib.h>
#include "sys.h"
#include "PhotoShow.h"
#include "img_position.h"
#include "ST3110_img_define.h"
#include "multilanguage.h"


#pragma codeseg(APP)

uint16 current_file_no;
uint16 Folders,Files;
uint8 sfnPtr[13],lfnPtr[256];
uint32 photo_format;
uint8 photo_action,root_order;
uint8 slide_show_enable,slide_time,slide_seq,bl;
uint8 del_all_flag;
uint8 photo_state;
uint8 setting_photo_effect,photo_mode;
extern uint16 counter_2HZ;

void _PhoShow_init(void);
void _PhoShow_play_next(void);
void _PhoShow_play_last(void);
void _PhotoShow_play_random(void);
void _PhotoShow_ShowPic(void);
void _PhotoShow_SetEffect(uint8 setting_photo_effect,uint16 current_file_no);
void _show_error_message_box(void);


//***************************************************************************
// Func:        void _PhoShow_init(void)
// Input:       none
// Output:      none
//
// Description: init variable and play photo 
//
//***************************************************************************
void _PhoShow_init(void)
{
 del_all_flag = FALSE;
 root_order = API_SysReadValue(RAM_SHARING_ADR,ROOT_ORDER);
 photo_format = FF_PHOTO_FORM;
 slide_show_enable = API_SysReadValue(RAM_SETTING_ADR,SET_SLIDE_EN);
 slide_time = API_SysReadValue(RAM_SETTING_ADR,SET_SLIDE_TIME); // 0~7
 slide_seq = API_SysReadValue(RAM_SETTING_ADR,SET_SLIDE_SEQ); //0:sequence 1:random
 bl = API_SysReadValue(RAM_SETTING_ADR,SET_BL); //level 0~6 ((bl+1)*4)+3
 setting_photo_effect = API_SysReadValue(RAM_SETTING_ADR,SET_PHO_EFFECT);
 photo_action = PHOTOSHOW_ACTION_NONE;
 photo_state = PHO_STATE_STOP; 

 API_LcmSetLanguage(CS_BIG5);
 API_LcmSetCharForm(CHFS_16x16);
 API_LcmSetCharColor(COLOR_WHITE,COLOR_DPF_BG);
 API_LcmEnableKeepBackGround();
 API_LcmSetStringLenth(20);
 current_file_no = API_SysReadValue2B(RAM_SHARING_ADR,CUR_FILE_L);
 API_FATGetItemAmountInFolder(&Folders,&Files,photo_format);
 _PhotoShow_SetEffect(setting_photo_effect,current_file_no);
 // if del all file in folder
 if(Files == 0)
 {
  LCM_CLEAN_SCREEN_ALL();
  API_LcmShowString("No Picture",10,150);
  API_SysWriteValue2B(RAM_SHARING_ADR,CUR_FILE_L,0); 
  API_SysWriteValue2B(RAM_PHO_PATH_ADR,root_order*2,0);
  del_all_flag = TRUE;
  return;
 }
 _PhotoShow_ShowPic();
}

//***************************************************************************
// Func:        void _PhoShow_play_next(void)
// Input:       none
// Output:      none
//
// Description: play next photo
//
//***************************************************************************
void _PhoShow_play_next(void)
{
 if(current_file_no >= Files)
  current_file_no = 1;
 else
  current_file_no++;
 _PhotoShow_ShowPic();
}

//***************************************************************************
// Func:        void _PhoShow_play_next(void)
// Input:       none
// Output:      none
//
// Description: play last photo
//
//***************************************************************************
void _PhoShow_play_last(void)
{
 if(current_file_no <= 1)
  current_file_no = Files;
 else
  current_file_no--;
 _PhotoShow_ShowPic();
}

//***************************************************************************
// Func:        void _PhotoShow_play_random(void)
// Input:       none
// Output:      none
//
// Description: play one photo randomly
//
//***************************************************************************
void _PhotoShow_play_random(void)
{
 current_file_no = API_SysRandom(Files);
 _PhotoShow_ShowPic();
}

//***************************************************************************
// Func:        void _PhotoShow_ShowPic(void)
// Input:       none
// Output:      none
//
// Description: play photo
//
//***************************************************************************
void _PhotoShow_ShowPic(void)
{
 if(current_file_no > Files)
  current_file_no = Files; 
 API_PhotoSetFile(photo_format,current_file_no);
 _PhotoShow_SetEffect(setting_photo_effect,current_file_no);

 API_SysWriteValue2B(RAM_SHARING_ADR,CUR_FILE_L,current_file_no); 
 API_SysWriteValue2B(RAM_PHO_PATH_ADR,root_order*2,current_file_no);
 
 API_LcmDisableKeepBackGround();
 if(!API_PhotoPlay(0,0,LCM_WIDTH,LCM_HEIGHT))
 {
   //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); 

   photo_state = PHO_STATE_ERROR;
   _show_error_message_box();
   //slide show next pic
   if(slide_show_enable)
   {
     counter_2HZ = 0;
     API_OsPendEvent(EVID_BT_2HZ);
   }
   #if DEBUG
    API_LcmShowString("photoplay error",10,150);
    API_LcmShowNumber2B(current_file_no,10,166);    
    API_LcmShowNumber2B(Files,10,182);
   #endif
 } 
 else
 {
  photo_state = PHO_STATE_PLAY;
  #if DEBUG
    API_LcmShowNumber2B(current_file_no,0,0);    
    API_LcmShowNumber2B(Files,0,16);
  #endif 
 }
}


//***************************************************************************
// Func:        void _PhotoShow_SetEffect(void)
// Input:       none
// Output:      none
//
// Description: set photo effect by photo's size and format
//
//***************************************************************************
void _PhotoShow_SetEffect(uint8 setting_photo_effect, uint16 current_file_no)
{
 uint8 photo_effect;
 uint16 width,high;
 
 API_FATGetFileName(photo_format,current_file_no,sfnPtr,lfnPtr);
 //for JPG
 if(API_PhotoGetFormID() == FF_ID_JPG)
 {
  API_PhotoGetWH(photo_format,current_file_no,&width,&high);
  if((width <= LCM_WIDTH) && (high <= LCM_HEIGHT)) //allow to do effect
  {
   if(setting_photo_effect == 4) // random slide show effect
    photo_effect = API_SysRandom(3);
   else
    photo_effect = setting_photo_effect;
  }
  else
   photo_effect = 0; //no effect
  
  switch(photo_effect)
  {
   case 0:
        API_PhotoSetEffect(0x01,0); //clear blank region, for jpg/pcx/gif only
        break;
   case 1:
        API_PhotoSetEffect(0x80,5); //
        break;
   case 2:
        API_PhotoSetEffect(0x81,5);
        break;
   case 3:
        API_PhotoSetEffect(0x82,0);
        break;
  }
 }
 //for BMP
 else if(API_PhotoGetFormID() == FF_ID_BMP)
 {
  LCM_CLEAN_SCREEN_ALL();
  API_PhotoSetEffect(0x00,0); 
 }
 //for other
 else
 {
  API_PhotoSetEffect(0x01,0);
 }
}

void _show_error_message_box(void)
{
 uint16 string_ptr;
 uint8 language;
 
 string_ptr = (uint16)lfnPtr;
 language = API_SysReadValue(RAM_SETTING_ADR,SET_LANGUAGE);
 
 //show del box BG
 API_LcmPutSysImage(IMG_PHOTO_DIALOG_BACKGD,POS_PHOMENU_DELBOX_X,POS_PHOMENU_DELBOX_Y);

 API_SysLoadValue(NAND_TEXT_ADR+(language*TIDX_AMOUNT_OF_ONE_LANGUAGE)+TIDX_ERR_MSG,string_ptr,64);
 API_LcmSetLanguage(CS_UNICODE);
 API_LcmShowString(lfnPtr,POS_PHOMENU_ITEM_X+100,POS_PHOMENU_ITEM_Y+(2*POS_PHOMENU_ITEM_GAP));
 API_LcmSetLanguage(CS_BIG5);
}

⌨️ 快捷键说明

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