📄 photoshowapi.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 + -