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

📄 photomenuapi.c

📁 C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码
💻 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 + -