Android 修改關機充電動畫
阿新 • • 發佈:2019-01-24
最近一直在修改關機充電動畫的問題,我就把一些需要修改的東西,分享給大家
lk-cust_display.h這個檔案是修改動畫位置,下面以480*800為例
/* // new animation parameters example:WVGA (480*800) // A , start point of first number rectangle // B , left_top point of battery_capacity fill_in rectangle // c , left_bottom point of battery_capacity fill_in rectangle // battery capacity rectangle #define CAPACITY_LEFT (172) // CAPACITY_LEFT = B.x = 172 #define CAPACITY_TOP (330) // CAPACITY_TOP = B.y = 330 #define CAPACITY_RIGHT (307) // CAPACITY_RIGHT = B.x + fill_line.w = 172 + 135 #define CAPACITY_BOTTOM (546) // CAPACITY_BOTTOM = C.y = 546 // first number rectangle #define NUMBER_LEFT (178) // NUMBER_LEFT = A.x #define NUMBER_TOP (190) // NUMBER_TOP = A.y #define NUMBER_RIGHT (216) // NUMBER_RIGHT = A.x + num.w = 178 + 38 #define NUMBER_BOTTOM (244) // NUMBER_BOTTOM = A.y + num.h = 190 + 54 // % rectangle #define PERCENT_LEFT (254) // PERCENT_LEFT = A.x + 2*num.w = 178 + 2*38 #define PERCENT_TOP (190) // PERCENT_TOP = A.y #define PERCENT_RIGHT (302) // PERCENT_LEFT = A.x + 2*num.w +(%).w #define PERCENT_BOTTOM (244) // PERCENT_BOTTOM = A.y + (%).h = 190 + 54 // top animation part #define TOP_ANIMATION_LEFT (172) // TOP_ANIMATION_LEFT = B.x #define TOP_ANIMATION_TOP (100) // 100 #define TOP_ANIMATION_RIGHT (307) // TOP_ANIMATION_LEFT = B.x + fill_line.w = 172 + 135 #define TOP_ANIMATION_BOTTOM (124) // TOP_ANIMATION_BOTTOM = TOP_ANIMATION_TOP + fill_line.h = 100 + 24 */ #ifndef __CUST_DISPLAY_H__ #define __CUST_DISPLAY_H__ // color #define BAR_OCCUPIED_COLOR (0x07E0) // Green #define BAR_EMPTY_COLOR (0xFFFF) // White #define BAR_BG_COLOR (0x0000) // Black // LOGO number #define ANIM_V0_LOGO_NUM 5 // version 0: show 4 recatangle growing animation without battery number #define ANIM_V1_LOGO_NUM 39 // version 1: show wave animation with battery number #define ANIM_V2_LOGO_NUM 86 // version 2: show wireless charging animation // Common LOGO index #define BOOT_LOGO_INDEX 0 #define KERNEL_LOGO_INDEX 38 #define ANIM_V0_BACKGROUND_INDEX 1 #define ANIM_V1_BACKGROUND_INDEX 35 #define LOW_BATTERY_INDEX 2 #define CHARGER_OV_INDEX 3 #define FULL_BATTERY_INDEX 37 // version 1: show wave animation with battery number // NUMBER LOGO INDEX #define NUMBER_PIC_START_0 4 #define NUMBER_PIC_PERCENT 14 // DYNAMIC ANIMATION LOGO INDEX #define BAT_ANIM_START_0 15 // LOW BATTERY(0~10%) ANIMATION LOGO #define LOW_BAT_ANIM_START_0 25 #define ANIM_LINE_INDEX 36 // version 2: show wireless charging animation logo index #define V2_NUM_START_0_INDEX 57 #define V2_NUM_PERCENT_INDEX 67 #define V2_BAT_0_10_START_INDEX 68 #define V2_BAT_10_40_START_INDEX 72 #define V2_BAT_40_80_START_INDEX 76 #define V2_BAT_80_100_START_NDEX 80 #define V2_BAT_0_INDEX 84 #define V2_BAT_100_INDEX 85 // show fast charging animation logo index #define FAST_CHARGING_BAT_100_INDEX 39 #define FAST_CHARGING_BAT_START_0_INDEX 40 #define FAST_CHARGING_NUM_START_0_INDEX 46 #define FAST_CHARGING_NUM_PERCENT_INDEX 56 #if defined(FHD) || defined(CU_FHD) || defined(CMCC_FHD) || defined(CT_FHD) // fhd 1080*1920 // battery capacity rectangle #define CAPACITY_LEFT (387) // battery capacity center #define CAPACITY_TOP (802) #define CAPACITY_RIGHT (691) #define CAPACITY_BOTTOM (1292) // first number rectangle #define NUMBER_LEFT (351+84) // number #define NUMBER_TOP (479) #define NUMBER_RIGHT (435+84) #define NUMBER_BOTTOM (600) // % rectangle #define PERCENT_LEFT (519+84) // percent number_left + 2*number_width #define PERCENT_TOP (479) #define PERCENT_RIGHT (627+84) #define PERCENT_BOTTOM (600) // top animation part #define TOP_ANIMATION_LEFT (387) // top animation #define TOP_ANIMATION_TOP (100) #define TOP_ANIMATION_RIGHT (691) #define TOP_ANIMATION_BOTTOM (152) // for old animation #define BAR_LEFT (470) #define BAR_TOP (356) #define BAR_RIGHT (610) #define BAR_BOTTOM (678) #elif defined(WQHD) || defined(CU_WQHD) || defined(CMCC_WQHD) || defined(CT_WQHD) // hd720 720*1280 // battery capacity rectangle #define CAPACITY_LEFT (393) // battery capacity center #define CAPACITY_TOP (786) #define CAPACITY_RIGHT (623) #define CAPACITY_BOTTOM (1155) // first number rectangle #define NUMBER_LEFT (410) // number #define NUMBER_TOP (546) #define NUMBER_RIGHT (474) #define NUMBER_BOTTOM (636) // % rectangle #define PERCENT_LEFT (537) // percent number_left + 2*number_width #define PERCENT_TOP (546) #define PERCENT_RIGHT (618) #define PERCENT_BOTTOM (636) // top animation part #define TOP_ANIMATION_LEFT (393) // top animation #define TOP_ANIMATION_TOP (100) #define TOP_ANIMATION_RIGHT (624) #define TOP_ANIMATION_BOTTOM (182) // for old animation #define BAR_LEFT (443) #define BAR_TOP (337) #define BAR_RIGHT (574) #define BAR_BOTTOM (641) #elif defined(HD720) || defined(CU_HD720) || defined(CMCC_HD720) || defined(CT_HD720) // hd720 720*1280 // battery capacity rectangle #define CAPACITY_LEFT (278) // battery capacity center #define CAPACITY_TOP (556) #define CAPACITY_RIGHT (441) #define CAPACITY_BOTTOM (817) // first number rectangle #define NUMBER_LEFT (290) // number #define NUMBER_TOP (386) #define NUMBER_RIGHT (335) #define NUMBER_BOTTOM (450) // % rectangle #define PERCENT_LEFT (380) // percent number_left + 2*number_width #define PERCENT_TOP (386) #define PERCENT_RIGHT (437) #define PERCENT_BOTTOM (450) // top animation part #define TOP_ANIMATION_LEFT (278) // top animation #define TOP_ANIMATION_TOP (100) #define TOP_ANIMATION_RIGHT (441) #define TOP_ANIMATION_BOTTOM (129) // for old animation #define BAR_LEFT (313) #define BAR_TOP (238) #define BAR_RIGHT (406) #define BAR_BOTTOM (453) #elif defined(FWVGA) || defined(CU_FWVGA) || defined(CMCC_FWVGA) || defined(CT_FWVGA) // fwvga 480*854 // battery capacity rectangle #define CAPACITY_LEFT (172) // battery capacity center #define CAPACITY_TOP (357) #define CAPACITY_RIGHT (307) #define CAPACITY_BOTTOM (573) // first number rectangle #define NUMBER_LEFT (172) // number #define NUMBER_TOP (213) #define NUMBER_RIGHT (210) #define NUMBER_BOTTOM (267) // % rectangle #define PERCENT_LEFT (248) // percent number_left + 2*number_width #define PERCENT_TOP (213) #define PERCENT_RIGHT (296) #define PERCENT_BOTTOM (267) // top animation part #define TOP_ANIMATION_LEFT (172) // top animation #define TOP_ANIMATION_TOP (100) #define TOP_ANIMATION_RIGHT (307) #define TOP_ANIMATION_BOTTOM (124) // for old animation #define BAR_LEFT (184) #define BAR_TOP (227) #define BAR_RIGHT (294) #define BAR_BOTTOM (437) #elif defined(QHD) || defined(CU_QHD) || defined(CMCC_QHD) || defined(CT_QHD) // qhd 540*960 // battery capacity rectangle #define CAPACITY_LEFT (202) // battery capacity center #define CAPACITY_TOP (410) #define CAPACITY_RIGHT (337) #define CAPACITY_BOTTOM (626) // first number rectangle #define NUMBER_LEFT (202) // number #define NUMBER_TOP (266) #define NUMBER_RIGHT (240) #define NUMBER_BOTTOM (320) // % rectangle #define PERCENT_LEFT (278) // percent number_left + 2*number_width #define PERCENT_TOP (266) #define PERCENT_RIGHT (326) #define PERCENT_BOTTOM (320) // top animation part #define TOP_ANIMATION_LEFT (202) // top animation #define TOP_ANIMATION_TOP (100) #define TOP_ANIMATION_RIGHT (337) #define TOP_ANIMATION_BOTTOM (124) // for old animation #define BAR_LEFT (235) #define BAR_TOP (179) #define BAR_RIGHT (305) #define BAR_BOTTOM (340) #elif defined(WVGA) || defined(CU_WVGA) || defined(CMCC_WVGA) || defined(CT_WVGA) // default wvga 480*800 // battery capacity rectangle #define CAPACITY_LEFT (172) // battery capacity center #define CAPACITY_TOP (330) #define CAPACITY_RIGHT (307) #define CAPACITY_BOTTOM (546) // first number rectangle #define NUMBER_LEFT (178) // number #define NUMBER_TOP (190) #define NUMBER_RIGHT (216) #define NUMBER_BOTTOM (244) // % rectangle #define PERCENT_LEFT (254) // percent number_left + 2*number_width #define PERCENT_TOP (190) #define PERCENT_RIGHT (302) #define PERCENT_BOTTOM (244) // top animation part #define TOP_ANIMATION_LEFT (172) // top animation #define TOP_ANIMATION_TOP (100) #define TOP_ANIMATION_RIGHT (307) #define TOP_ANIMATION_BOTTOM (124) // for old animation #define BAR_LEFT (209) #define BAR_TOP (149) #define BAR_RIGHT (271) #define BAR_BOTTOM (282) #elif defined(HVGA) || defined(CU_HVGA) || defined(CMCC_HVGA) || defined(CT_HVGA) // hvga 320*480 // battery capacity rectangle #define CAPACITY_LEFT (109) // battery capacity center #define CAPACITY_TOP (189) #define CAPACITY_RIGHT (211) #define CAPACITY_BOTTOM (350) // first number rectangle #define NUMBER_LEFT (126) // number #define NUMBER_TOP (95) #define NUMBER_RIGHT (153) #define NUMBER_BOTTOM (131) // % rectangle #define PERCENT_LEFT (180) // percent number_left + 2*number_width #define PERCENT_TOP (95) #define PERCENT_RIGHT (212) #define PERCENT_BOTTOM (131) // top animation part #define TOP_ANIMATION_LEFT (109) // top animation #define TOP_ANIMATION_TOP (100) #define TOP_ANIMATION_RIGHT (211) #define TOP_ANIMATION_BOTTOM (118) // for old animation #define BAR_LEFT (129) #define BAR_TOP (128) #define BAR_RIGHT (190) #define BAR_BOTTOM (245) #elif defined(QVGA) || defined(CU_QVGA) || defined(CMCC_QVGA) || defined(CT_QVGA) // hvga 320*480 // battery capacity rectangle #define CAPACITY_LEFT (82) // battery capacity center #define CAPACITY_TOP (124) #define CAPACITY_RIGHT (158) #define CAPACITY_BOTTOM (241) // first number rectangle #define NUMBER_LEFT (93) // number #define NUMBER_TOP (50) #define NUMBER_RIGHT (109) #define NUMBER_BOTTOM (73) // % rectangle #define PERCENT_LEFT (125) // percent number_left + 2*number_width #define PERCENT_TOP (50) #define PERCENT_RIGHT (145) #define PERCENT_BOTTOM (73) // top animation part #define TOP_ANIMATION_LEFT (82) // top animation #define TOP_ANIMATION_TOP (100) #define TOP_ANIMATION_RIGHT (158) #define TOP_ANIMATION_BOTTOM (113) // for old animation #define BAR_LEFT (97) #define BAR_TOP (96) #define BAR_RIGHT (140) #define BAR_BOTTOM (184) #elif defined(WSVGA) // wsvga 600*1024 // battery capacity rectangle #define CAPACITY_LEFT (232) // battery capacity center #define CAPACITY_TOP (442) #define CAPACITY_RIGHT (367) #define CAPACITY_BOTTOM (658) // first number rectangle #define NUMBER_LEFT (250) // number #define NUMBER_TOP (300) #define NUMBER_RIGHT (288) #define NUMBER_BOTTOM (354) // % rectangle #define PERCENT_LEFT (326) // percent number_left + 2*number_width #define PERCENT_TOP (300) #define PERCENT_RIGHT (374) #define PERCENT_BOTTOM (354) // top animation part #define TOP_ANIMATION_LEFT (232) // top animation #define TOP_ANIMATION_TOP (100) #define TOP_ANIMATION_RIGHT (367) #define TOP_ANIMATION_BOTTOM (124) // for old animation #define BAR_LEFT (260) #define BAR_TOP (190) #define BAR_RIGHT (338) #define BAR_BOTTOM (360) #elif defined(WSVGANL) // wsvganl 1024*600 // battery capacity rectangle #define CAPACITY_LEFT (444) // battery capacity center #define CAPACITY_TOP (230) #define CAPACITY_RIGHT (579) // 444 + 135 #define CAPACITY_BOTTOM (446) // first number rectangle #define NUMBER_LEFT (466) // number #define NUMBER_TOP (90) #define NUMBER_RIGHT (504) // 466 + 38 #define NUMBER_BOTTOM (144) // 90 + 54 // % rectangle #define PERCENT_LEFT (542) // percent number_left + 2*number_width #define PERCENT_TOP (90) #define PERCENT_RIGHT (590) #define PERCENT_BOTTOM (144) // top animation part #define TOP_ANIMATION_LEFT (444) // top animation #define TOP_ANIMATION_TOP (100) #define TOP_ANIMATION_RIGHT (579) #define TOP_ANIMATION_BOTTOM (124) // for old animation #define BAR_LEFT (414) #define BAR_TOP (186) #define BAR_RIGHT (608) #define BAR_BOTTOM (477) #elif defined(WXGANL) // wxganl 1280*800 // battery capacity rectangle #define CAPACITY_LEFT (558) // battery capacity center #define CAPACITY_TOP (265) #define CAPACITY_RIGHT (721) //558+163 #define CAPACITY_BOTTOM (525) #define NUMBER_LEFT (585) // number #define NUMBER_TOP (95) #define NUMBER_RIGHT (630)//585+45 #define NUMBER_BOTTOM (159) //95+64 #define PERCENT_LEFT (675) // percent number_left + 2*number_width #define PERCENT_TOP (95) #define PERCENT_RIGHT (732) //675+57 #define PERCENT_BOTTOM (159) #define TOP_ANIMATION_LEFT (558) // top animation #define TOP_ANIMATION_TOP (100) #define TOP_ANIMATION_RIGHT (721) #define TOP_ANIMATION_BOTTOM (129) // for old animation #define BAR_LEFT (525) #define BAR_TOP (250) #define BAR_RIGHT (755) #define BAR_BOTTOM (640) #elif defined(WXGA) // wxga 800*1280 // battery capacity rectangle #define CAPACITY_LEFT (318) // battery capacity center #define CAPACITY_TOP (556) #define CAPACITY_RIGHT (481) //318+163 #define CAPACITY_BOTTOM (815) #define NUMBER_LEFT (345) // number #define NUMBER_TOP (385) #define NUMBER_RIGHT (390) //345+45 #define NUMBER_BOTTOM (449) //385+64 #define PERCENT_LEFT (435) // percent number_left + 2*number_width #define PERCENT_TOP (385) #define PERCENT_RIGHT (492) //435+57 #define PERCENT_BOTTOM (449) #define TOP_ANIMATION_LEFT (318) // top animation #define TOP_ANIMATION_TOP (100) #define TOP_ANIMATION_RIGHT (481) #define TOP_ANIMATION_BOTTOM (129) // for old animation #define BAR_LEFT (348) #define BAR_TOP (238) #define BAR_RIGHT (453) #define BAR_BOTTOM (452) #elif defined(WUXGANL) // wuxganl 1920*1200 // battery capacity rectangle #define CAPACITY_LEFT (806) // battery capacity center #define CAPACITY_TOP (443) #define CAPACITY_RIGHT (1110) #define CAPACITY_BOTTOM (929) #define NUMBER_LEFT (855) // number #define NUMBER_TOP (124) #define NUMBER_RIGHT (939) //855+84 #define NUMBER_BOTTOM (245) #define PERCENT_LEFT (1023) // percent number_left + 2*number_width #define PERCENT_TOP (124) #define PERCENT_RIGHT (1131) //1023+108 #define PERCENT_BOTTOM (245) //124+121 #define TOP_ANIMATION_LEFT (806) // top animation #define TOP_ANIMATION_TOP (100) #define TOP_ANIMATION_RIGHT (1110) //806+304 #define TOP_ANIMATION_BOTTOM (152) // for old animation #define BAR_LEFT (890) #define BAR_TOP (357) #define BAR_RIGHT (1030) #define BAR_BOTTOM (678) #elif defined(WUXGA) || defined(CU_WUXGA) // wuxga 1200*1920 // battery capacity rectangle #define CAPACITY_LEFT (447) // battery capacity center #define CAPACITY_TOP (803) #define CAPACITY_RIGHT (751) #define CAPACITY_BOTTOM (1289) #define NUMBER_LEFT (494) // number #define NUMBER_TOP (481) #define NUMBER_RIGHT (578)//494+84 #define NUMBER_BOTTOM (602) //481+121 #define PERCENT_LEFT (662) // percent number_left + 2*number_width #define PERCENT_TOP (481) #define PERCENT_RIGHT (770) //662+108 #define PERCENT_BOTTOM (602) //481+121 #define TOP_ANIMATION_LEFT (447) // top animation #define TOP_ANIMATION_TOP (100) #define TOP_ANIMATION_RIGHT (751) #define TOP_ANIMATION_BOTTOM (152) // for old animation #define BAR_LEFT (529) #define BAR_TOP (357) #define BAR_RIGHT (672) #define BAR_BOTTOM (680) #elif defined(XGA) // xga 768*1024 // battery capacity rectangle #define CAPACITY_LEFT (316) // battery capacity center #define CAPACITY_TOP (442) #define CAPACITY_RIGHT (451) #define CAPACITY_BOTTOM (658) #define NUMBER_LEFT (338) // number #define NUMBER_TOP (300) #define NUMBER_RIGHT (376) #define NUMBER_BOTTOM (354) #define PERCENT_LEFT (414) // percent number_left + 2*number_width #define PERCENT_TOP (300) #define PERCENT_RIGHT (462) #define PERCENT_BOTTOM (354) #define TOP_ANIMATION_LEFT (316) // top animation #define TOP_ANIMATION_TOP (100) #define TOP_ANIMATION_RIGHT (451) #define TOP_ANIMATION_BOTTOM (124) // for old animation #define BAR_LEFT (334) #define BAR_TOP (243) #define BAR_RIGHT (434) #define BAR_BOTTOM (463) #elif defined(XGANL) // xganl 1024*768 // battery capacity rectangle #define CAPACITY_LEFT (444) // battery capacity center #define CAPACITY_TOP (314) #define CAPACITY_RIGHT (579) #define CAPACITY_BOTTOM (530) #define NUMBER_LEFT (467) // number #define NUMBER_TOP (170) #define NUMBER_RIGHT (505) #define NUMBER_BOTTOM (224) #define PERCENT_LEFT (543) // percent number_left + 2*number_width #define PERCENT_TOP (170) #define PERCENT_RIGHT (591) #define PERCENT_BOTTOM (224) #define TOP_ANIMATION_LEFT (444) // top animation #define TOP_ANIMATION_TOP (100) #define TOP_ANIMATION_RIGHT (579) #define TOP_ANIMATION_BOTTOM (124) // for old animation #define BAR_LEFT (486) #define BAR_TOP (292) #define BAR_RIGHT (590) #define BAR_BOTTOM (506) #elif defined(QXGA) // qxga 1536x2048 // battery capacity rectangle #define CAPACITY_LEFT (605) // battery capacity center #define CAPACITY_TOP (857) #define CAPACITY_RIGHT (929) #define CAPACITY_BOTTOM (1375) #define NUMBER_LEFT (662) // number #define NUMBER_TOP (517) #define NUMBER_RIGHT (756) #define NUMBER_BOTTOM (647) #define PERCENT_LEFT (850) // percent number_left + 2*number_width #define PERCENT_TOP (517) #define PERCENT_RIGHT (968) #define PERCENT_BOTTOM (647) #define TOP_ANIMATION_LEFT (605) // top animation #define TOP_ANIMATION_TOP (100) #define TOP_ANIMATION_RIGHT (929) #define TOP_ANIMATION_BOTTOM (155) // for old animation #define BAR_LEFT (693) #define BAR_TOP (381) #define BAR_RIGHT (844) #define BAR_BOTTOM (725) #else // default wvga 480*800 // battery capacity rectangle背景範圍 #define CAPACITY_LEFT (0)//155//(172) // battery capacity center #define CAPACITY_TOP (0)//154//(330) #define CAPACITY_RIGHT (400)//245//(307) #define CAPACITY_BOTTOM (400)//299//(546) // first number rectangle數字 #define NUMBER_LEFT (168)//(178) // number #define NUMBER_TOP (56)//(190) #define NUMBER_RIGHT (196)//(216) #define NUMBER_BOTTOM (93) //(244) // % rectangle百分比 #define PERCENT_LEFT (224)// (254) // percent number_left + 2*number_width #define PERCENT_TOP (56)//(190) #define PERCENT_RIGHT (252)//(302) #define PERCENT_BOTTOM (93)// (244) // top animation part動畫更新部分 #define TOP_ANIMATION_LEFT (0)//155//(172) // top animation #define TOP_ANIMATION_TOP (100) #define TOP_ANIMATION_RIGHT (400)//245//(307) #define TOP_ANIMATION_BOTTOM (145)//116 // for old animation #define BAR_LEFT (176) #define BAR_TOP (128) #define BAR_RIGHT (224) #define BAR_BOTTOM (244) #endif /* The option of new charging animation */ #define ANIMATION_NEW #endif // __CUST_DISPLAY_H__
mediatek\external\libshowlogo\show_animation_common.c這個檔案是具體實現的檔案,它有分為幾個方法,下面以fill_animation_battery_ver_1()為例
現在知道在哪裡具體實現了,那在哪裡呼叫呢?下面是具體檔案及方法/* Copyright Statement: * * This software/firmware and related documentation ("MediaTek Software") are * protected under relevant copyright laws. The information contained herein is * confidential and proprietary to MediaTek Inc. and/or its licensors. Without * the prior written permission of MediaTek inc. and/or its licensors, any * reproduction, modification, use or disclosure of MediaTek Software, and * information contained herein, in whole or in part, shall be strictly * prohibited. * * MediaTek Inc. (C) 2010. All rights reserved. * * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. * * The following software/firmware and/or related documentation ("MediaTek * Software") have been modified by MediaTek Inc. All revisions are subject to * any receiver's applicable license agreements with MediaTek Inc. */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include "show_animation_common.h" #include "show_logo_log.h" #include "fast_charging_common.h" static int charging_low_index = 0; static int charging_animation_index = 0; #define CHECK_LOGO_BIN_OK 0 #define CHECK_LOGO_BIN_ERROR -1 static unsigned short number_pic_addr[(NUMBER_RIGHT - NUMBER_LEFT)*(NUMBER_BOTTOM - NUMBER_TOP)*2] = {0x0}; //addr static unsigned short line_pic_addr[(TOP_ANIMATION_RIGHT - TOP_ANIMATION_LEFT)*2] = {0x0}; static unsigned short percent_pic_addr[(PERCENT_RIGHT - PERCENT_LEFT)*(PERCENT_BOTTOM - PERCENT_TOP)*2] = {0x0}; static unsigned short top_animation_addr[(TOP_ANIMATION_RIGHT - TOP_ANIMATION_LEFT)*(TOP_ANIMATION_BOTTOM - TOP_ANIMATION_TOP)*2] = {0x0}; /* * Check logo.bin address if valid, and get logo related info * */ int check_logo_index_valid(unsigned int index, void * logo_addr, LOGO_PARA_T * logo_info) { unsigned int *pinfo = (unsigned int*)logo_addr; logo_info->logonum = pinfo[0]; LOG_ANIM("[show_animation_common: %s %d]logonum =%d, index =%d\n", __FUNCTION__,__LINE__,logo_info->logonum, index); if (index >= logo_info->logonum) { LOG_ANIM("[show_animation_common: %s %d]unsupported logo, index =%d\n", __FUNCTION__,__LINE__, index); return CHECK_LOGO_BIN_ERROR; } // LOG_ANIM("show_animation_common, pinfo[1]=%d, pinfo[2+index]=%d, pinfo[3+index]=%d, pinfo[3+index] - pinfo[2+index]= %d, pinfo[1] - pinfo[2+index] =%d \n", // pinfo[1],pinfo[2+index],pinfo[3+index], pinfo[3+index] - pinfo[2+index],pinfo[1] - pinfo[2+index]); if(index < logo_info->logonum - 1) logo_info->logolen = pinfo[3+index] - pinfo[2+index]; else logo_info->logolen = pinfo[1] - pinfo[2+index]; logo_info->inaddr = (unsigned int)logo_addr + pinfo[2+index]; LOG_ANIM("show_animation_common, in_addr=0x%08x, logolen=%d\n", logo_info->inaddr, logo_info->logolen); return CHECK_LOGO_BIN_OK; } /* * Fill a screen size buffer with logo content * */ void fill_animation_logo(unsigned int index, void *fill_addr, void * dec_logo_addr, void * logo_addr, LCM_SCREEN_T phical_screen) { LOGO_PARA_T logo_info; int logo_width; int logo_height; if(check_logo_index_valid(index, logo_addr, &logo_info) != CHECK_LOGO_BIN_OK) return; decompress_logo((void*)logo_info.inaddr, dec_logo_addr, logo_info.logolen, phical_screen.fb_size); //RECT_REGION_T rect = {0, 0, phical_screen.width, phical_screen.height}; logo_width =phical_screen.width; logo_height = phical_screen.height; if (phical_screen.rotation == 270 || phical_screen.rotation == 90) { logo_width =phical_screen.height; logo_height = phical_screen.width; } RECT_REGION_T rect = {0, 0, logo_width, logo_height}; fill_rect_with_content(fill_addr, rect, (unsigned short *)dec_logo_addr, phical_screen); } /* * Fill a rectangle size address with special color * */ void fill_animation_prog_bar(RECT_REGION_T rect_bar, unsigned int fgColor, unsigned int start_div, unsigned int occupied_div, void *fill_addr, LCM_SCREEN_T phical_screen) { unsigned int div_size = (rect_bar.bottom - rect_bar.top) / (ANIM_V0_REGIONS); unsigned int draw_size = div_size - (ANIM_V0_SPACE_AFTER_REGION); unsigned int i; for (i = start_div; i < start_div + occupied_div; ++ i) { unsigned int draw_bottom = rect_bar.bottom - div_size * i - (ANIM_V0_SPACE_AFTER_REGION); unsigned int draw_top = draw_bottom - draw_size; RECT_REGION_T rect = {rect_bar.left, draw_top, rect_bar.right, draw_bottom}; fill_rect_with_color(fill_addr, rect, fgColor, phical_screen); } } /* * Fill a rectangle with logo content * */ void fill_animation_dynamic(unsigned int index, RECT_REGION_T rect, void *fill_addr, void * dec_logo_addr, void * logo_addr, LCM_SCREEN_T phical_screen) { LOGO_PARA_T logo_info; if(check_logo_index_valid(index, logo_addr, &logo_info) != CHECK_LOGO_BIN_OK) return; decompress_logo((void*)logo_info.inaddr, (void*)dec_logo_addr, logo_info.logolen, (rect.right-rect.left)*(rect.bottom-rect.top)*2); fill_rect_with_content(fill_addr, rect, (unsigned short *)dec_logo_addr, phical_screen); } /* * Fill a rectangle with number logo content * * number_position: 0~1st number, 1~2nd number */ void fill_animation_number(unsigned int index, unsigned int number_position, void *fill_addr, void * logo_addr, LCM_SCREEN_T phical_screen) { LOG_ANIM("[show_animation_common: %s %d]index= %d, number_position = %d\n",__FUNCTION__,__LINE__, index, number_position); LOGO_PARA_T logo_info; if(check_logo_index_valid(index, logo_addr, &logo_info) != CHECK_LOGO_BIN_OK) return; // draw default number rect, decompress_logo((void*)logo_info.inaddr, (void*)number_pic_addr, logo_info.logolen, number_pic_size); //static RECT_REGION_T number_location_rect = {NUMBER_LEFT,NUMBER_TOP,NUMBER_RIGHT,NUMBER_BOTTOM}; RECT_REGION_T battery_number_rect = {NUMBER_LEFT + (NUMBER_RIGHT - NUMBER_LEFT)*number_position, NUMBER_TOP, NUMBER_RIGHT + (NUMBER_RIGHT - NUMBER_LEFT)*number_position, NUMBER_BOTTOM}; fill_rect_with_content(fill_addr, battery_number_rect, (unsigned short *)number_pic_addr,phical_screen); } /* * Fill a line with special color * */ void fill_animation_line(unsigned int index, unsigned int capacity_grids, void *fill_addr, void * logo_addr, LCM_SCREEN_T phical_screen) { LOGO_PARA_T logo_info; if(check_logo_index_valid(index, logo_addr, &logo_info) != CHECK_LOGO_BIN_OK) return; decompress_logo((void*)logo_info.inaddr, (void*)line_pic_addr, logo_info.logolen, line_pic_size); RECT_REGION_T rect = {CAPACITY_LEFT, CAPACITY_TOP, CAPACITY_RIGHT, CAPACITY_BOTTOM}; int i = capacity_grids; for(; i < CAPACITY_BOTTOM; i++) { rect.top = i; rect.bottom = i+1; fill_rect_with_content(fill_addr, rect, (unsigned short *)line_pic_addr, phical_screen); } } /* * Show charging animation version 0 * */ void fill_animation_battery_ver_0(unsigned int capacity, void *fill_addr, void * dec_logo_addr, void * logo_addr, LCM_SCREEN_T phical_screen) { unsigned int capacity_grids = 0; if (capacity > 100) capacity = 100; capacity_grids = (capacity * (ANIM_V0_REGIONS)) / 100; LOG_ANIM("[show_animation_common: %s %d]capacity =%d, capacity_grids = %d\n",__FUNCTION__,__LINE__, capacity, capacity_grids); //show_logo(1); fill_animation_logo(ANIM_V0_BACKGROUND_INDEX, fill_addr, dec_logo_addr, logo_addr,phical_screen); // Fill Occupied Color //RECT_REGION_T bar_rect = {BAR_LEFT, BAR_TOP, BAR_RIGHT, BAR_BOTTOM}; RECT_REGION_T rect_bar = {bar_rect.left + 1, bar_rect.top + 1, bar_rect.right, bar_rect.bottom}; // RECT_REGION_T rect_bar = {BAR_LEFT + 1, BAR_TOP + 1,BAR_RIGHT, BAR_BOTTOM}; fill_animation_prog_bar(rect_bar, (unsigned int)(BAR_OCCUPIED_COLOR), 0, capacity_grids, fill_addr, phical_screen); fill_animation_prog_bar(rect_bar, (unsigned int)(BAR_EMPTY_COLOR), capacity_grids, ANIM_V0_REGIONS - capacity_grids, fill_addr, phical_screen); } /* * Show charging animation version 1 * */ void fill_animation_battery_ver_1(unsigned int capacity, void *fill_addr, void * dec_logo_addr, void * logo_addr, LCM_SCREEN_T phical_screen) { LOG_ANIM("[show_animation_common: %s %d]capacity : %d\n",__FUNCTION__,__LINE__, capacity); if (capacity >= 100) { //show_logo(37); // battery 100 fill_animation_logo(FULL_BATTERY_INDEX, fill_addr, dec_logo_addr, logo_addr,phical_screen); } else if (capacity < 10) { LOG_ANIM("[show_animation_common: %s %d]charging_low_index = %d\n",__FUNCTION__,__LINE__, charging_low_index); charging_low_index ++ ; fill_animation_logo(LOW_BAT_ANIM_START_0 + charging_low_index, fill_addr, dec_logo_addr, logo_addr,phical_screen); fill_animation_number(NUMBER_PIC_START_0 + capacity, 1, fill_addr, logo_addr, phical_screen); fill_animation_dynamic(NUMBER_PIC_PERCENT, percent_location_rect, fill_addr, percent_pic_addr, logo_addr, phical_screen); if (charging_low_index >= 9) charging_low_index = 0; } else { unsigned int capacity_grids = 0; //static RECT_REGION_T battery_rect = {CAPACITY_LEFT,CAPACITY_TOP,CAPACITY_RIGHT,CAPACITY_BOTTOM}; capacity_grids = CAPACITY_BOTTOM /*- (CAPACITY_BOTTOM - CAPACITY_TOP) * (capacity - 10) / 90*/; LOG_ANIM("[show_animation_common: %s %d]capacity_grids : %d,charging_animation_index = %d\n",__FUNCTION__,__LINE__, capacity_grids,charging_animation_index); //background fill_animation_logo(ANIM_V1_BACKGROUND_INDEX, fill_addr, dec_logo_addr, logo_addr,phical_screen); //fill_animation_line(ANIM_LINE_INDEX, capacity_grids, fill_addr, logo_addr, phical_screen); //fill_animation_number(NUMBER_PIC_START_0 + (capacity/10), 0, fill_addr, logo_addr, phical_screen); //fill_animation_number(NUMBER_PIC_START_0 + (capacity%10), 1, fill_addr, logo_addr, phical_screen); //fill_animation_dynamic(NUMBER_PIC_PERCENT, percent_location_rect, fill_addr, dec_logo_addr, logo_addr, phical_screen); // if (capacity <= 90) //{//動畫範圍 RECT_REGION_T top_animation_rect = {TOP_ANIMATION_LEFT, /*capacity_grids - (TOP_ANIMATION_BOTTOM - TOP_ANIMATION_TOP)*/0, TOP_ANIMATION_RIGHT, capacity_grids}; //top_animation_rect.bottom = capacity_grids; //top_animation_rect.top = capacity_grids - top_animation_height; charging_animation_index++; //show_animation_dynamic(15 + charging_animation_index, top_animation_rect, top_animation_addr); //動畫 fill_animation_dynamic(BAT_ANIM_START_0 + charging_animation_index, top_animation_rect, fill_addr, dec_logo_addr, logo_addr, phical_screen); //十位數字 fill_animation_number(NUMBER_PIC_START_0 + (capacity/10), 0, fill_addr, logo_addr, phical_screen); //個位數字 fill_animation_number(NUMBER_PIC_START_0 + (capacity%10), 1, fill_addr, logo_addr, phical_screen); //% fill_animation_dynamic(NUMBER_PIC_PERCENT, percent_location_rect, fill_addr, dec_logo_addr, logo_addr, phical_screen); if (charging_animation_index >= 9) charging_animation_index = 0; //} } } /* * Show charging animation version 2:wireless ui * total 29 logo:from 39 ~ 68 * less(0<10): 50-53 , low(<30):54-57 ,middle(<60):58-61 , high():62-75 , o:66, full:67,num (0-9):39-48, %:49 * */ void fill_animation_battery_ver_2(unsigned int capacity, void *fill_addr, void * dec_logo_addr, void * logo_addr, LCM_SCREEN_T phical_screen) { LOG_ANIM("[show_animation_common: %s %d]capacity : %d\n",__FUNCTION__,__LINE__, capacity); // RECT_REGION_T wireless_bgd_rect = {0, 0, phical_screen.width, phical_screen.height}; charging_low_index >= 3? charging_low_index = 0:charging_low_index++; LOG_ANIM("[show_animation_common: %s %d]charging_low_index = %d\n",__FUNCTION__,__LINE__, charging_low_index); if (capacity >= 100) { // battery 100 fill_animation_logo(V2_BAT_100_INDEX, fill_addr, dec_logo_addr, logo_addr,phical_screen); } else if (capacity <= 0) { fill_animation_logo(V2_BAT_0_INDEX, fill_addr, dec_logo_addr, logo_addr,phical_screen); } else { int bg_index = V2_BAT_0_10_START_INDEX; //capacity > 0 && capacity < 10 if (capacity >= 10 && capacity < 40) { bg_index = V2_BAT_10_40_START_INDEX; } else if (capacity >= 40 && capacity < 80) { bg_index = V2_BAT_40_80_START_INDEX; } else if (capacity >= 80 && capacity < 100) { bg_index = V2_BAT_80_100_START_NDEX; } fill_animation_logo(bg_index + charging_low_index, fill_addr, dec_logo_addr, logo_addr,phical_screen); RECT_REGION_T tmp_rect = {(int)phical_screen.width * 4/10, (int) phical_screen.height * 1/6, (int)phical_screen.width* 5/10, (int)phical_screen.height*16/60}; unsigned short tmp_num_addr[(int)phical_screen.width * phical_screen.height/100]; //addr if (capacity >= 10) { LOG_ANIM("[show_animation_common: %s %d]tmp_rect left = %d, right = %d,top = %d,bottom = %d,\n",__FUNCTION__,__LINE__, tmp_rect.left,tmp_rect.right,tmp_rect.top,tmp_rect.bottom); fill_animation_dynamic(V2_NUM_START_0_INDEX + (capacity/10), tmp_rect, fill_addr, tmp_num_addr, logo_addr, phical_screen); tmp_rect.left += (int)phical_screen.width /10; tmp_rect.right += (int)phical_screen.width /10; } LOG_ANIM("[show_animation_common: %s %d]tmp_rect left = %d, right = %d,top = %d,bottom = %d,\n",__FUNCTION__,__LINE__, tmp_rect.left,tmp_rect.right,tmp_rect.top,tmp_rect.bottom); fill_animation_dynamic(V2_NUM_START_0_INDEX + (capacity%10), tmp_rect, fill_addr, tmp_num_addr, logo_addr, phical_screen); tmp_rect.left += (int)phical_screen.width /10; tmp_rect.right += (int)phical_screen.width /10; LOG_ANIM("[show_animation_common: %s %d]tmp_rect left = %d, right = %d,top = %d,bottom = %d,\n",__FUNCTION__,__LINE__, tmp_rect.left,tmp_rect.right,tmp_rect.top,tmp_rect.bottom); fill_animation_dynamic(V2_NUM_PERCENT_INDEX, tmp_rect, fill_addr, tmp_num_addr, logo_addr, phical_screen); } } /* * Pump charging aniamtion * index 39: 100%, 40~45 : animation logo, 46~55: number logo, 56: % logo * */ void fill_animation_battery_fast_charging(unsigned int capacity, void *fill_addr, void * dec_logo_addr, void * logo_addr, LCM_SCREEN_T phical_screen) { int display_width = phical_screen.width; int display_height = phical_screen.height; int curr_left = 0; int num_width = 0; int num_height = 0; int top_margin_height = 0; if (0 == strncmp(MTK_LCM_PHYSICAL_ROTATION, "90", 2) || 0 == strncmp(MTK_LCM_PHYSICAL_ROTATION, "270", 3)) { display_width = phical_screen.height; display_height = phical_screen.width; } num_width = LOGO_NUM_WIDTH(display_width); num_height = LOGO_NUM_HEIGHT(display_height); top_margin_height = LOGO_TOP_MARGIN(display_height); LOG_ANIM("[show_animation_common: %s %d]capacity : %d, num_width:%d, num_height:%d, top_margin_height:%d\n", __FUNCTION__,__LINE__, capacity, num_width, num_height, top_margin_height); charging_low_index >= 5? charging_low_index = 0:charging_low_index++; LOG_ANIM("[show_animation_common: %s %d]charging_low_index = %d\n",__FUNCTION__,__LINE__, charging_low_index); LOG_ANIM("[show_animation_common: %s %d]capacity : %d\n",__FUNCTION__,__LINE__, capacity); if (capacity <= 0) { return; } else if (capacity >= 100) { fill_animation_logo(FAST_CHARGING_BAT_100_INDEX, fill_addr, dec_logo_addr, logo_addr, phical_screen); } else { fill_animation_logo(FAST_CHARGING_BAT_START_0_INDEX + charging_low_index, fill_addr, dec_logo_addr, logo_addr, phical_screen); curr_left = (display_width - num_width * 2) >> 1; unsigned short tmp_num_addr[(int)phical_screen.width * phical_screen.height/50]; if (capacity > 10) { curr_left = (display_width - num_width * 3) >> 1; RECT_REGION_T tmp_rect_1 = {curr_left, top_margin_height, curr_left + num_width, top_margin_height + num_height}; LOG_ANIM("[show_animation_common: %s %d]capacity = %d, show 1nd num : %d\n",__FUNCTION__,__LINE__, capacity, capacity/10); fill_animation_dynamic(FAST_CHARGING_NUM_START_0_INDEX + (capacity/10), tmp_rect_1, fill_addr, tmp_num_addr, logo_addr, phical_screen); curr_left += num_width; } RECT_REGION_T tmp_rect_2 = {curr_left, top_margin_height, curr_left + num_width, top_margin_height + num_height}; LOG_ANIM("[show_animation_common: %s %d]capacity = %d, show 2st num : %d\n",__FUNCTION__,__LINE__, capacity, capacity%10); fill_animation_dynamic(FAST_CHARGING_NUM_START_0_INDEX + (capacity%10), tmp_rect_2, fill_addr, tmp_num_addr, logo_addr, phical_screen); curr_left += num_width; RECT_REGION_T tmp_rect_3 = {curr_left, top_margin_height, curr_left + num_width, top_margin_height + num_height}; LOG_ANIM("[show_animation_common: %s %d]show percent \n",__FUNCTION__,__LINE__); fill_animation_dynamic(FAST_CHARGING_NUM_PERCENT_INDEX, tmp_rect_3, fill_addr, tmp_num_addr, logo_addr, phical_screen); } } /* * Show charging animation by version * */ void fill_animation_battery_by_ver(unsigned int capacity,void *fill_addr, void * dec_logo_addr, void * logo_addr, LCM_SCREEN_T phical_screen, int version) { LOG_ANIM("[show_animation_common: %s %d]version : %d\n",__FUNCTION__,__LINE__, version); switch (version) { case 0: fill_animation_battery_ver_0(capacity, fill_addr, dec_logo_addr, logo_addr, phical_screen); break; case 1: fill_animation_battery_ver_1(capacity, fill_addr, dec_logo_addr, logo_addr, phical_screen); break; case WIRELESS_CHARGING_ANIM_VER: fill_animation_battery_ver_2(capacity, fill_addr, dec_logo_addr, logo_addr, phical_screen); break; default: fill_animation_battery_ver_0(capacity, fill_addr, dec_logo_addr, logo_addr, phical_screen); break; } }
mediatek\external\ipod\bootlogo.cpp
show_battery_capacity(capacity);