platform_system_core/healthd/animation.h
Yifan Hong 082d295fb3 healthd: charger loads resources from /product
Load resources from /product/etc/res/{values,images}/charger. If a
resource fails, falls back to /res/{values,images}/charger.

If the device has GSI flashed, resources may exist in both paths.
Resources in /product is used with a higher priority.

Test: turn off device, charge, observe animation
Bug: 119549685
Change-Id: I5a5143d132a0cc6ce9135469fb523feeeafd1b1b
2019-01-28 14:46:53 -08:00

92 lines
2.4 KiB
C++

/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef HEALTHD_ANIMATION_H
#define HEALTHD_ANIMATION_H
#include <inttypes.h>
#include <string>
class GRSurface;
struct GRFont;
namespace android {
#define CENTER_VAL INT_MAX
struct animation {
struct frame {
int disp_time;
int min_level;
int max_level;
GRSurface* surface;
};
struct text_field {
std::string font_file;
int pos_x;
int pos_y;
int color_r;
int color_g;
int color_b;
int color_a;
GRFont* font;
};
// When libminui loads PNG images:
// - When treating paths as relative paths, it adds ".png" suffix.
// - When treating paths as absolute paths, it doesn't add the suffix. Hence, the suffix
// is added here.
void set_resource_root(const std::string& root) {
if (!animation_file.empty()) {
animation_file = root + animation_file + ".png";
}
if (!fail_file.empty()) {
fail_file = root + fail_file + ".png";
}
if (!text_clock.font_file.empty()) {
text_clock.font_file = root + text_clock.font_file + ".png";
}
if (!text_percent.font_file.empty()) {
text_percent.font_file = root + text_percent.font_file + ".png";
}
}
std::string animation_file;
std::string fail_file;
text_field text_clock;
text_field text_percent;
bool run;
frame* frames;
int cur_frame;
int num_frames;
int first_frame_repeats; // Number of times to repeat the first frame in the current cycle
int cur_cycle;
int num_cycles; // Number of cycles to complete before blanking the screen
int cur_level; // current battery level being animated (0-100)
int cur_status; // current battery status - see BatteryService.h for BATTERY_STATUS_*
};
}
#endif // HEALTHD_ANIMATION_H