1 /*
2  * Copyright (C) 2016 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef HEALTHD_ANIMATION_H
18 #define HEALTHD_ANIMATION_H
19 
20 #include <inttypes.h>
21 
22 #include <string>
23 
24 class GRSurface;
25 struct GRFont;
26 
27 namespace android {
28 
29 #define CENTER_VAL INT_MAX
30 
31 struct animation {
32     struct frame {
33         int disp_time;
34         int min_level;
35         int max_level;
36 
37         GRSurface* surface;
38     };
39 
40     struct text_field {
41         std::string font_file;
42         int pos_x;
43         int pos_y;
44         int color_r;
45         int color_g;
46         int color_b;
47         int color_a;
48 
49         GRFont* font;
50     };
51 
52     // When libminui loads PNG images:
53     // - When treating paths as relative paths, it adds ".png" suffix.
54     // - When treating paths as absolute paths, it doesn't add the suffix. Hence, the suffix
55     //   is added here.
56     // If |backup_root| is provided, additionally check if file under |root| is accessbile or not.
57     // If not accessbile, use |backup_root| instead.
58     // Require that |root| starts and ends with "/". If |backup_root| is provided, require that
59     // |backup_root| starts and ends with "/".
60     void set_resource_root(const std::string& root, const std::string& backup_root = "");
61 
62     std::string animation_file;
63     std::string fail_file;
64 
65     text_field text_clock;
66     text_field text_percent;
67 
68     bool run;
69 
70     frame* frames = nullptr;
71     int cur_frame;
72     int num_frames;
73     int first_frame_repeats;  // Number of times to repeat the first frame in the current cycle
74 
75     int cur_cycle;
76     int num_cycles;  // Number of cycles to complete before blanking the screen
77 
78     int cur_level;  // current battery level being animated (0-100)
79     int cur_status;  // current battery status - see BatteryService.h for BATTERY_STATUS_*
80 
~animationanimation81     ~animation() { delete frames; }
82 };
83 
84 }
85 
86 #endif // HEALTHD_ANIMATION_H
87