📄 photomenuapi.c
字号:
//********************************************************************
// Name: PhotoMenuAPI.c
//
// Copyright (C) Sitronix TECHNOLOGY INC.
// All rights reserved by Sitronix TECHNOLOGY INC.
//
// Project: ST3110
// Author: Terry Wu
// Begin Date: 2008/05/19
// Last update:
// $Header: $
// Description:
// photo menu API
//
//
//********************************************************************
#pragma codeseg(APP)
#include "sys.h"
#include "img_position.h"
#include "ST3110_img_define.h"
#include "multilanguage.h"
#include "PhotoMenu.h"
#include <stdlib.h>
void _photo_menu_init(void);
void _photo_menu_background(void);
void _photo_menu_item(void);
void _photo_menu_value_update(void);
void _photo_menu_up(void);
void _photo_menu_down(void);
void _photo_menu_left(void);
void _photo_menu_right(void);
void _photo_menu_play(void);
void _photo_menu_mode(void);
void _photo_del_box(uint8 is_del);
void _photo_show_string(uint32 txt_index, uint16 pos_x, uint16 pos_y);
void _show_battery(void);
uint8 _get_battery_icon_index(void);
uint8 item_selection,last_item_selection,slide_show_enable,slide_time,slide_seq,bl,language;
uint8 del_box_flag,is_del,repaint_flag;
uint8 photo_effect;
uint8 slide_bat_lv_idx,cur_bat_lv_icon_idx;
void _photo_menu_init(void)
{
item_selection = 0;
last_item_selection = 0;
del_box_flag = FALSE;
is_del = FALSE;
repaint_flag = TRUE;
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
language = API_SysReadValue(RAM_SETTING_ADR,SET_LANGUAGE);
photo_effect = API_SysReadValue(RAM_SETTING_ADR,SET_PHO_EFFECT);
//API_LcmSetLanguage(CS_BIG5);
API_LcmSetLanguage(CS_UNICODE);
API_LcmSetCharForm(CHFS_16x16);
API_LcmSetCharColor(COLOR_WHITE,COLOR_DPF_BG);
API_LcmEnableKeepBackGround();
API_LcmSetStringLenth(24);
}
void _photo_menu_background(void)
{
// paint screen
API_LcmPutSysImage(IMG_BACKGD,POS_PHOMENU_BG_X,POS_PHOMENU_BG_Y);
API_LcmPutSysImage(IMG_HEADER_PHOTO,POS_PHOMENU_HEADER_X,POS_PHOMENU_HEADER_Y);
API_LcmPutSysImage(IMG_TEXT_HEADER_PHOTO_EN+language,POS_PHOMENU_TITLE_X,POS_PHOMENU_TITLE_Y);
//show battery icon
_show_battery();
slide_bat_lv_idx = _get_battery_icon_index();
cur_bat_lv_icon_idx = _get_battery_icon_index();
//srcoll bar
API_LcmPutSysImage(IMG_MOVE_BAR,POS_PHOMENU_MOVEBAR_X,POS_PHOMENU_MOVEBAR_Y);
API_LcmPutSysImage(IMG_MOVE,POS_PHOMENU_MOVE_X,POS_PHOMENU_MOVE_Y);
}
void _photo_menu_item(void)
{
uint8 i;
uint32 item_value_txt_index[5];
item_value_txt_index[0] = NAND_TEXT_ADR+(language*TIDX_AMOUNT_OF_ONE_LANGUAGE)+TIDX_SLIDESHOW_ON+slide_show_enable;
item_value_txt_index[1] = NAND_TEXT_ADR+(language*TIDX_AMOUNT_OF_ONE_LANGUAGE)+TIDX_SLIDETIME_1S+slide_time;
item_value_txt_index[2] = NAND_TEXT_ADR+(language*TIDX_AMOUNT_OF_ONE_LANGUAGE)+TIDX_SLIDESEQ_SEQ+slide_seq;
item_value_txt_index[3] = NAND_TEXT_ADR+(language*TIDX_AMOUNT_OF_ONE_LANGUAGE)+TIDX_PHO_EFFECT_NONE+photo_effect;
item_value_txt_index[4] = NAND_TEXT_ADR+(language*TIDX_AMOUNT_OF_ONE_LANGUAGE)+TIDX_BL_n3+bl;
// clean last selection bar
API_LcmPutSysImage(IMG_NO_SELECT_BAR,POS_PHOMENU_SELBAR_X,POS_PHOMENU_SELBAR_Y+(last_item_selection*POS_PHOMENU_SELBAR_GAP_Y));
// paint selection bar
API_LcmPutSysImage(IMG_SELECT_BAR,POS_PHOMENU_SELBAR_X,POS_PHOMENU_SELBAR_Y+(item_selection*POS_PHOMENU_SELBAR_GAP_Y));
// show item text
for(i=0;i<PHOTOMENU_ITEM_NUM;i++)
{
if( (repaint_flag) || (i == last_item_selection) || (i == item_selection) )
{
//API_LcmShowString(item_text[i],POS_PHOMENU_ITEM_X,POS_PHOMENU_ITEM_Y+(i*POS_PHOMENU_ITEM_GAP));
_photo_show_string(NAND_TEXT_ADR+(language*TIDX_AMOUNT_OF_ONE_LANGUAGE)+TIDX_PHOTO_SLIDESHOW+i,POS_PHOMENU_ITEM_X,POS_PHOMENU_ITEM_Y+(i*POS_PHOMENU_ITEM_GAP));
}
}
//paint arrow
if(item_selection != PHOTOMENU_ITEM_DEL)
{
API_LcmPutSysImage(IMG_SELECT_LEFT,POS_PHOMENU_SELLEFT_X,POS_PHOMENU_SELLEFT_Y+(item_selection*POS_PHOMENU_SELBAR_GAP_Y));
API_LcmPutSysImage(IMG_SELECT_RIGHT,POS_PHOMENU_SELRIGHT_X,POS_PHOMENU_SELRIGHT_Y+(item_selection*POS_PHOMENU_SELBAR_GAP_Y));
}
for(i=0;i<5;i++)
{
if( (repaint_flag) || (i == last_item_selection) || (i == item_selection) )
{
_photo_show_string(item_value_txt_index[i],POS_PHOMENU_VALUE_X,POS_PHOMENU_VALUE_Y+(POS_PHOMENU_VALUE_GAP*i));
}
}
}
void _photo_menu_value_update(void)
{
uint32 item_value_txt_index[5];
item_value_txt_index[0] = NAND_TEXT_ADR+(language*TIDX_AMOUNT_OF_ONE_LANGUAGE)+TIDX_SLIDESHOW_ON+slide_show_enable;
item_value_txt_index[1] = NAND_TEXT_ADR+(language*TIDX_AMOUNT_OF_ONE_LANGUAGE)+TIDX_SLIDETIME_1S+slide_time;
item_value_txt_index[2] = NAND_TEXT_ADR+(language*TIDX_AMOUNT_OF_ONE_LANGUAGE)+TIDX_SLIDESEQ_SEQ+slide_seq;
item_value_txt_index[3] = NAND_TEXT_ADR+(language*TIDX_AMOUNT_OF_ONE_LANGUAGE)+TIDX_PHO_EFFECT_NONE+photo_effect;
item_value_txt_index[4] = NAND_TEXT_ADR+(language*TIDX_AMOUNT_OF_ONE_LANGUAGE)+TIDX_BL_n3+bl;
//clean value text area
API_LcmPutSysImage(IMG_TEXT_BAR,POS_PHOMENU_TEXTBAR_X,POS_PHOMENU_TEXTBAR_Y+(item_selection*POS_PHOMENU_TEXTBAR_GAP_Y));
// update value
_photo_show_string(item_value_txt_index[item_selection],POS_PHOMENU_VALUE_X,POS_PHOMENU_VALUE_Y+(POS_PHOMENU_VALUE_GAP*item_selection));
}
void _photo_menu_up(void)
{
if(del_box_flag)
return;
repaint_flag = FALSE;
last_item_selection = item_selection;
if(item_selection == 0)
item_selection = PHOTOMENU_ITEM_NUM-1;
else
item_selection--;
_photo_menu_item();
}
void _photo_menu_down(void)
{
if(del_box_flag)
return;
repaint_flag = FALSE;
last_item_selection = item_selection;
if(item_selection == PHOTOMENU_ITEM_NUM-1)
item_selection = 0;
else
item_selection++;
_photo_menu_item();
}
void _photo_menu_left(void)
{
// update value
switch(item_selection)
{
case PHOTOMENU_ITEM_SLIDESHOW: //0 : slide show on/off
slide_show_enable = !slide_show_enable;
API_SysWriteValue(RAM_SETTING_ADR,SET_SLIDE_EN,slide_show_enable);
_photo_menu_value_update();
break;
case PHOTOMENU_ITEM_SLIDETIME: //1 : photo library
if(slide_time == 0)
slide_time = 10;
else
slide_time--;
API_SysWriteValue(RAM_SETTING_ADR,SET_SLIDE_TIME,slide_time);
_photo_menu_value_update();
break;
case PHOTOMENU_ITEM_SEQ:
slide_seq = !slide_seq;
API_SysWriteValue(RAM_SETTING_ADR,SET_SLIDE_SEQ,slide_seq);
_photo_menu_value_update();
break;
case PHOTOMENU_ITEM_BL:
if(bl > 0)
bl--;
//set BL
{
uint8 BL_array[7] = {BL7_L0,BL7_L1,BL7_L2,BL7_L3,BL7_L4,BL7_L5,BL7_L6};
API_LcmSetBackLight(BL_array[bl]);
}
API_SysWriteValue(RAM_SETTING_ADR,SET_BL,bl);
_photo_menu_value_update();
break;
case PHOTOMENU_ITEM_EFFECT:
if(photo_effect == 0)
photo_effect = 4;
else
photo_effect--;
API_SysWriteValue(RAM_SETTING_ADR,SET_PHO_EFFECT,photo_effect);
_photo_menu_value_update();
break;
case PHOTOMENU_ITEM_DEL:
if(del_box_flag)
{
is_del = TRUE;
_photo_del_box(is_del);
}
break;
default:
break;
}
}
void _photo_menu_right(void)
{
// update value
switch(item_selection)
{
case PHOTOMENU_ITEM_SLIDESHOW: //0 : slide show on/off
slide_show_enable = !slide_show_enable;
API_SysWriteValue(RAM_SETTING_ADR,SET_SLIDE_EN,slide_show_enable);
_photo_menu_value_update();
break;
case PHOTOMENU_ITEM_SLIDETIME: //1 : photo library
if(slide_time == 10)
slide_time = 0;
else
slide_time++;
API_SysWriteValue(RAM_SETTING_ADR,SET_SLIDE_TIME,slide_time);
_photo_menu_value_update();
break;
case PHOTOMENU_ITEM_SEQ:
slide_seq = !slide_seq;
API_SysWriteValue(RAM_SETTING_ADR,SET_SLIDE_SEQ,slide_seq);
_photo_menu_value_update();
break;
case PHOTOMENU_ITEM_BL:
if(bl < BL_NUM-1)
bl++;
//set BL
{
uint8 BL_array[7] = {BL7_L0,BL7_L1,BL7_L2,BL7_L3,BL7_L4,BL7_L5,BL7_L6};
API_LcmSetBackLight(BL_array[bl]);
}
API_SysWriteValue(RAM_SETTING_ADR,SET_BL,bl);
_photo_menu_value_update();
break;
case PHOTOMENU_ITEM_EFFECT:
if(photo_effect == 4)
photo_effect = 0;
else
photo_effect++;
API_SysWriteValue(RAM_SETTING_ADR,SET_PHO_EFFECT,photo_effect);
_photo_menu_value_update();
break;
case PHOTOMENU_ITEM_DEL:
if(del_box_flag)
{
is_del = FALSE;
_photo_del_box(is_del);
}
break;
default:
break;
}
}
void _photo_menu_play(void)
{
uint8 sfnPtr[13],lfnPtr[256];
uint16 current_file_no;
if(item_selection != PHOTOMENU_ITEM_DEL)
API_OsSetCurrentTask(TASKID_PHOTOSHOW);
else
{
if(del_box_flag)
{
if(is_del)
{
current_file_no = API_SysReadValue2B(RAM_SHARING_ADR,CUR_FILE_L);
//API_LcmDisableKeepBackGround();
//API_LcmShowNumber((uint8)current_file_no,0,0,1);
//API_LcmEnableKeepBackGround();
API_FATGetFileName(FF_PHOTO_FORM,current_file_no,sfnPtr,lfnPtr);
if(API_FATDelFile(sfnPtr))
API_OsSetCurrentTask(TASKID_PHOTOSHOW);
}
else
{
repaint_flag = TRUE;
_photo_menu_background();
_photo_menu_item();
}
is_del = FALSE;
del_box_flag = FALSE;
}
else
{
_photo_del_box(is_del);
del_box_flag = TRUE;
}
}
}
void _photo_menu_mode(void)
{
if( (item_selection == PHOTOMENU_ITEM_DEL) && (del_box_flag) )
{
repaint_flag = TRUE;
del_box_flag = FALSE;
_photo_menu_background();
_photo_menu_item();
}
else
API_OsSetCurrentTask(TASKID_PHOTOSHOW);
}
void _photo_del_box(uint8 is_del)
{
//show del box BG
API_LcmPutSysImage(IMG_PHOTO_DIALOG_BACKGD,POS_PHOMENU_DELBOX_X,POS_PHOMENU_DELBOX_Y);
// show title
API_LcmPutSysImage(IMG_TEXT_MAIN_EN+language,POS_PHOMENU_DELTITLE_X,POS_PHOMENU_DELTITLE_Y);
// show yes/no
if(is_del)
{
API_LcmPutSysImage(IMG_TEXT_YES_EN_ON+language,POS_PHOMENU_DELYES_X,POS_PHOMENU_DELYES_Y);
API_LcmPutSysImage(IMG_TEXT_NO_EN_NORMAL+language,POS_PHOMENU_DELNO_X,POS_PHOMENU_DELNO_Y);
}
else
{
API_LcmPutSysImage(IMG_TEXT_YES_EN_NORMAL+language,POS_PHOMENU_DELYES_X,POS_PHOMENU_DELYES_Y);
API_LcmPutSysImage(IMG_TEXT_NO_EN_ON+language,POS_PHOMENU_DELNO_X,POS_PHOMENU_DELNO_Y);
}
}
void _photo_show_string(uint32 txt_index, uint16 pos_x, uint16 pos_y)
{
uint8 string[64];
//uint8 string[16];
uint16 string_ptr;
string_ptr = (uint16)string;
API_SysLoadValue(txt_index,string_ptr,64);
API_LcmShowString(string,pos_x,pos_y);
}
void _show_battery(void)
{
API_LcmPutSysImage(IMG_BATTERY_0+_get_battery_icon_index(),POS_MUSBRO_BATTERY_X,POS_MUSBRO_BATTERY_Y);
}
uint8 _get_battery_icon_index(void)
{
uint8 bat_lv_icon_index;
uint8 bat_lv;
bat_lv = API_SysGetVolLv();
if(BATTERY_LV4 <= bat_lv) // > LV4
bat_lv_icon_index = 4;
else if( BATTERY_LV3 <= bat_lv && bat_lv < BATTERY_LV4) // LV3<= <LV4
bat_lv_icon_index = 3;
else if( BATTERY_LV2 <= bat_lv && bat_lv < BATTERY_LV3) // LV2<= <LV3
bat_lv_icon_index = 2;
else if( BATTERY_LV1 <= bat_lv && bat_lv < BATTERY_LV2) // LV1<= <LV2
bat_lv_icon_index = 1;
else if( BATTERY_LV0 <= bat_lv && bat_lv < BATTERY_LV1) // LV0<= <LV1
bat_lv_icon_index = 0;
return bat_lv_icon_index;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -