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

📄 clockcalendarapi.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 "sys.h"
#include "img_position.h"
#include "ST3110_img_define.h"

#pragma codeseg(APP)

uint8 t_month,t_day,t_week,c_month,c_day,c_week;
uint16 t_year,c_year;
uint8 slide_bat_lv_idx,cur_bat_lv_icon_idx;

void _calendar_init(void);
void _calendar_get_today(void);
void _calendar_paint(void);
void _calendar_next(void);
void _calendar_last(void);
uint8 _SettingClock_MaxDays( uint16 year,uint8 month );
uint8 _SettingClock_Week( uint16 year,uint8 mon ,uint8 day );
void _exit_to_PhoBro(void);
void _show_battery(void);
uint8 _get_battery_icon_index(void);


void _calendar_init(void)
{
  _calendar_get_today();
  c_year = t_year;
  c_month = t_month;
  c_day = t_day;

  // show BG
  API_LcmPutSysImage(IMG_BACKGD,0,0);
  //show week title
  API_LcmPutSysImage(IMG_WEEK,POS_CLKCAL_WEEK_X,POS_CLKCAL_WEEK_Y);
  //show battery
  _show_battery();
  slide_bat_lv_idx = _get_battery_icon_index();
  cur_bat_lv_icon_idx =  _get_battery_icon_index();

  API_LcmSetLanguage(CS_BIG5);
  API_LcmSetCharForm(CHFS_16x16);
  API_LcmSetCharColor(COLOR_WHITE,COLOR_DPF_BG);
  API_LcmEnableKeepBackGround();
}

void _calendar_get_today(void)
{
  t_year = API_TimeGetYear();
  t_month = API_TimeGetMonth();
  t_day = API_TimeGetDay();
}

void _calendar_paint(void)
{
 
 uint8 i,max_days,first_week,day;

 day = 1;
 first_week = (uint8)API_TimeGetWeek(c_year,c_month,1);
 max_days = (uint8)API_TimeGetMonthMaxDay(c_year,c_month);
 
 //max_days = _SettingClock_MaxDays(c_year,c_month);
 //first_week = _SettingClock_Week(c_year,c_month,1);

 //show calendar year
 API_LcmPutSysImage(IMG_YEAR_0+(c_year/1000),POS_CLKCAL_YEAR_X,POS_CLKCAL_YEAR_Y);
 API_LcmPutSysImage(IMG_YEAR_0+((c_year%1000)/100),POS_CLKCAL_YEAR_X+POS_CLKCAL_YEAR_X_GAP,POS_CLKCAL_YEAR_Y);
 API_LcmPutSysImage(IMG_YEAR_0+((c_year%100)/10),POS_CLKCAL_YEAR_X+(POS_CLKCAL_YEAR_X_GAP*2),POS_CLKCAL_YEAR_Y);
 API_LcmPutSysImage(IMG_YEAR_0+(c_year%10),POS_CLKCAL_YEAR_X+(POS_CLKCAL_YEAR_X_GAP*3),POS_CLKCAL_YEAR_Y);
 
 //show calendar month
 API_LcmPutSysImage(IMG_MONTH_0+(c_month/10),POS_CLKCAL_MON_X,POS_CLKCAL_MON_Y);
 API_LcmPutSysImage(IMG_MONTH_0+(c_month%10),POS_CLKCAL_MON_X+POS_CLKCAL_MON_X_GAP,POS_CLKCAL_MON_Y); 
 
 //show calendar day
 for(i=0;i<42;i++)
 {
   //clean day area
   API_LcmPutSysImage(IMG_TODAY_NO_BACKGD,POS_CLKCAL_DAY_X-2+(POS_CLKCAL_DAY_X_GAP2*(i%7)),POS_CLKCAL_DAY_Y-4+(POS_CLKCAL_DAY_Y_GAP*(i/7)));
   
   if(i>=first_week && i<max_days+first_week)
   {
      if(i%7 == 0)
      {
       if(day>=10)
       {
        API_LcmPutSysImage(IMG_RED_0+(day/10),POS_CLKCAL_DAY_X+(POS_CLKCAL_DAY_X_GAP2*(i%7)),POS_CLKCAL_DAY_Y+(POS_CLKCAL_DAY_Y_GAP*(i/7)));
        API_LcmPutSysImage(IMG_RED_0+(day%10),POS_CLKCAL_DAY_X+POS_CLKCAL_DAY_X_GAP1+(POS_CLKCAL_DAY_X_GAP2*(i%7)),POS_CLKCAL_DAY_Y+(POS_CLKCAL_DAY_Y_GAP*(i/7)));
       }
       else
        //API_LcmPutSysImage(IMG_RED_0+day,POS_CLKCAL_DAY_X+POS_CLKCAL_DAY_X_GAP1+(POS_CLKCAL_DAY_X_GAP2*(i%7)),POS_CLKCAL_DAY_Y+(POS_CLKCAL_DAY_Y_GAP*(i/7)));
        API_LcmPutSysImage(IMG_RED_0+day,POS_CLKCAL_DAY_X+POS_CLKCAL_DAY_X_GAP1_1+(POS_CLKCAL_DAY_X_GAP2*(i%7)),POS_CLKCAL_DAY_Y+(POS_CLKCAL_DAY_Y_GAP*(i/7)));
      }
      else
      {
       if(day>=10)
       {
        API_LcmPutSysImage(IMG_WHITE_0+(day/10),POS_CLKCAL_DAY_X+(POS_CLKCAL_DAY_X_GAP2*(i%7)),POS_CLKCAL_DAY_Y+(POS_CLKCAL_DAY_Y_GAP*(i/7)));
        API_LcmPutSysImage(IMG_WHITE_0+(day%10),POS_CLKCAL_DAY_X+POS_CLKCAL_DAY_X_GAP1+(POS_CLKCAL_DAY_X_GAP2*(i%7)),POS_CLKCAL_DAY_Y+(POS_CLKCAL_DAY_Y_GAP*(i/7)));
       }
       else
        //API_LcmPutSysImage(IMG_WHITE_0+day,POS_CLKCAL_DAY_X+POS_CLKCAL_DAY_X_GAP1+(POS_CLKCAL_DAY_X_GAP2*(i%7)),POS_CLKCAL_DAY_Y+(POS_CLKCAL_DAY_Y_GAP*(i/7)));
        API_LcmPutSysImage(IMG_WHITE_0+day,POS_CLKCAL_DAY_X+POS_CLKCAL_DAY_X_GAP1_1+(POS_CLKCAL_DAY_X_GAP2*(i%7)),POS_CLKCAL_DAY_Y+(POS_CLKCAL_DAY_Y_GAP*(i/7)));
      }
      day++;
   }
 }
 //show today
 if(c_year == t_year && c_month == t_month && c_day == t_day)
 {
   i = c_day+first_week-1;
   //show today BG
   API_LcmPutSysImage(IMG_TODAY_BACKGD,POS_CLKCAL_DAY_X-2+(POS_CLKCAL_DAY_X_GAP2*(i%7)),POS_CLKCAL_DAY_Y-4+(POS_CLKCAL_DAY_Y_GAP*(i/7)));
   if(c_day>=10)
   {
    API_LcmPutSysImage(IMG_TODAY_0+(c_day/10),POS_CLKCAL_DAY_X+(POS_CLKCAL_DAY_X_GAP2*(i%7)),POS_CLKCAL_DAY_Y+(POS_CLKCAL_DAY_Y_GAP*(i/7)));
    API_LcmPutSysImage(IMG_TODAY_0+(c_day%10),POS_CLKCAL_DAY_X+POS_CLKCAL_DAY_X_GAP1+(POS_CLKCAL_DAY_X_GAP2*(i%7)),POS_CLKCAL_DAY_Y+(POS_CLKCAL_DAY_Y_GAP*(i/7)));
   }
   else
    //API_LcmPutSysImage(IMG_TODAY_0+c_day,POS_CLKCAL_DAY_X+POS_CLKCAL_DAY_X_GAP1+(POS_CLKCAL_DAY_X_GAP2*(i%7)),POS_CLKCAL_DAY_Y+(POS_CLKCAL_DAY_Y_GAP*(i/7)));
    API_LcmPutSysImage(IMG_TODAY_0+c_day,POS_CLKCAL_DAY_X+POS_CLKCAL_DAY_X_GAP1_1+(POS_CLKCAL_DAY_X_GAP2*(i%7)),POS_CLKCAL_DAY_Y+(POS_CLKCAL_DAY_Y_GAP*(i/7)));
 }
}

void _calendar_next(void)
{
 if(c_year == 2099 && c_month == 12)
 {
  c_year = 1980;
  c_month = 1;
 }
 else
 {
  c_month++;
  if(c_month == 13)
  {
   c_month = 1;
   c_year++;
  }
 } 
}
void _calendar_last(void)
{
 if(!(c_year == 1980 && c_month == 1))
 {
  c_month--;
  if(c_month == 0)
  {
   c_month = 12;
   c_year--;
  }
 }
 else
 {
  c_year = 2099;
  c_month = 12;
 }
}

uint8 _SettingClock_MaxDays( uint16 year,uint8 month )
{

        uint8 day[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
        if (((year%4 == 0) && (year%100 != 0)) || (year%400 == 0))
                day[1] = 29;
        return day[month-1];
}

uint8 _SettingClock_Week( uint16 year,uint8 mon ,uint8 day )
{
        uint16 week,firstday,totalday=0;
        uint16 i, j = 2;// j is week of 1/1 in base year

        uint8 x;
        for(x=1;x< mon;x++)
                totalday += _SettingClock_MaxDays(year,x);
        totalday+=day;
        for (i = 1980; i < year; i++) {
                if (!(i % 4)) j+=2;
                else j++;

                if (!(i % 100) && (i % 400)) j--;
        }
        firstday = j % 7;
        week = totalday % 7 + (firstday+6) % 7;
        if (week >= 7)
                week -= 7;
        return (uint8)week;
}

void _exit_to_PhoBro(void)
{
 // paint photo browser BG
 API_SysWriteValue(RAM_SHARING_ADR,LAST_TASK,TASKID_CLOCKCALENDAR);

 //set photo browser parameter
#if  RECORD_PATH
 API_SysWriteValue(RAM_SHARING_ADR,PHO_PAINT_FLAG,3); 
#else
 API_SysWriteValue(RAM_SHARING_ADR,PHO_PAINT_FLAG,1);
#endif
 API_OsSetCurrentTask(TASKID_PHOTOBROWSER);
}

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 + -