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