diff --git a/make-overlay.py b/make-overlay.py new file mode 100644 index 0000000..7f931b3 --- /dev/null +++ b/make-overlay.py @@ -0,0 +1,102 @@ +# Copyright (C) 2011 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. + +"""Script to take a set of frames (PNG files) for a recovery +"installing" icon animation and turn it into a base image plus a set +of overlays, as needed by the recovery UI code. Run with the names of +all the input frames on the command line, in order.""" + +import sys +try: + import Image +except ImportError: + print "This script requires the Python Imaging Library to be installed." + sys.exit(1) + +# Find the smallest box that contains all the pixels which change +# between images. + +print "reading", sys.argv[1] +base = Image.open(sys.argv[1]) + +minmini = base.size[0]-1 +maxmaxi = 0 +minminj = base.size[1]-1 +maxmaxj = 0 + +for top_name in sys.argv[2:]: + print "reading", top_name + top = Image.open(top_name) + + assert base.size == top.size + + mini = base.size[0]-1 + maxi = 0 + minj = base.size[1]-1 + maxj = 0 + + h, w = base.size + for j in range(w): + for i in range(h): + b = base.getpixel((i,j)) + t = top.getpixel((i,j)) + if b != t: + if i < mini: mini = i + if i > maxi: maxi = i + if j < minj: minj = j + if j > maxj: maxj = j + + minmini = min(minmini, mini) + maxmaxi = max(maxmaxi, maxi) + minminj = min(minminj, minj) + maxmaxj = max(maxmaxj, maxj) + +w = maxmaxi - minmini + 1 +h = maxmaxj - minminj + 1 + +# Now write out an image containing just that box, for each frame. + +for num, top_name in enumerate(sys.argv[1:]): + top = Image.open(top_name) + + out = Image.new("RGB", (w, h)) + for i in range(w): + for j in range(h): + t = top.getpixel((i+minmini, j+minminj)) + out.putpixel((i, j), t) + + fn = "icon_installing_overlay%02d.png" % (num+1,) + out.save(fn) + print "saved", fn + +# Write out the base icon, which is the first frame with that box +# blacked out (just to make the file smaller, since it's always +# displayed with one of the overlays on top of it). + +for i in range(w): + for j in range(h): + base.putpixel((i+minmini, j+minminj), (0, 0, 0)) +fn = "icon_installing.png" +base.save(fn) +print "saved", fn + +# The device_ui_init() function needs to tell the recovery UI the +# position of the overlay box. + +print +print "add this to your device_ui_init() function:" +print "-" * 40 +print " ui_parameters->install_overlay_offset_x = %d;" % (minmini,) +print " ui_parameters->install_overlay_offset_y = %d;" % (minminj,) +print "-" * 40 diff --git a/res/images/icon_error.png b/res/images/icon_error.png old mode 100755 new mode 100644 index 90c8d87..6cfcc8a Binary files a/res/images/icon_error.png and b/res/images/icon_error.png differ diff --git a/res/images/icon_installing.png b/res/images/icon_installing.png old mode 100755 new mode 100644 index d428f57..2866b04 Binary files a/res/images/icon_installing.png and b/res/images/icon_installing.png differ diff --git a/res/images/icon_installing_overlay01.png b/res/images/icon_installing_overlay01.png new file mode 100644 index 0000000..c71d840 Binary files /dev/null and b/res/images/icon_installing_overlay01.png differ diff --git a/res/images/icon_installing_overlay02.png b/res/images/icon_installing_overlay02.png new file mode 100644 index 0000000..4c97c78 Binary files /dev/null and b/res/images/icon_installing_overlay02.png differ diff --git a/res/images/icon_installing_overlay03.png b/res/images/icon_installing_overlay03.png new file mode 100644 index 0000000..ff4ee94 Binary files /dev/null and b/res/images/icon_installing_overlay03.png differ diff --git a/res/images/icon_installing_overlay04.png b/res/images/icon_installing_overlay04.png new file mode 100644 index 0000000..48998ce Binary files /dev/null and b/res/images/icon_installing_overlay04.png differ diff --git a/res/images/icon_installing_overlay05.png b/res/images/icon_installing_overlay05.png new file mode 100644 index 0000000..9f056b1 Binary files /dev/null and b/res/images/icon_installing_overlay05.png differ diff --git a/res/images/icon_installing_overlay06.png b/res/images/icon_installing_overlay06.png new file mode 100644 index 0000000..e5872fd Binary files /dev/null and b/res/images/icon_installing_overlay06.png differ diff --git a/res/images/icon_installing_overlay07.png b/res/images/icon_installing_overlay07.png new file mode 100644 index 0000000..4ad8bf3 Binary files /dev/null and b/res/images/icon_installing_overlay07.png differ diff --git a/res/images/indeterminate01.png b/res/images/indeterminate01.png new file mode 100644 index 0000000..84f04b0 Binary files /dev/null and b/res/images/indeterminate01.png differ diff --git a/res/images/indeterminate02.png b/res/images/indeterminate02.png new file mode 100644 index 0000000..21d0121 Binary files /dev/null and b/res/images/indeterminate02.png differ diff --git a/res/images/indeterminate03.png b/res/images/indeterminate03.png new file mode 100644 index 0000000..8a190a8 Binary files /dev/null and b/res/images/indeterminate03.png differ diff --git a/res/images/indeterminate04.png b/res/images/indeterminate04.png new file mode 100644 index 0000000..baf8d63 Binary files /dev/null and b/res/images/indeterminate04.png differ diff --git a/res/images/indeterminate05.png b/res/images/indeterminate05.png new file mode 100644 index 0000000..5653c7b Binary files /dev/null and b/res/images/indeterminate05.png differ diff --git a/res/images/indeterminate06.png b/res/images/indeterminate06.png new file mode 100644 index 0000000..858de85 Binary files /dev/null and b/res/images/indeterminate06.png differ diff --git a/res/images/indeterminate1.png b/res/images/indeterminate1.png deleted file mode 100644 index 90cb9fb..0000000 Binary files a/res/images/indeterminate1.png and /dev/null differ diff --git a/res/images/indeterminate2.png b/res/images/indeterminate2.png deleted file mode 100644 index f7fb289..0000000 Binary files a/res/images/indeterminate2.png and /dev/null differ diff --git a/res/images/indeterminate3.png b/res/images/indeterminate3.png deleted file mode 100644 index ba10dfa..0000000 Binary files a/res/images/indeterminate3.png and /dev/null differ diff --git a/res/images/indeterminate4.png b/res/images/indeterminate4.png deleted file mode 100644 index ad5d9a5..0000000 Binary files a/res/images/indeterminate4.png and /dev/null differ diff --git a/res/images/indeterminate5.png b/res/images/indeterminate5.png deleted file mode 100644 index 8c19c8d..0000000 Binary files a/res/images/indeterminate5.png and /dev/null differ diff --git a/res/images/indeterminate6.png b/res/images/indeterminate6.png deleted file mode 100644 index c0c6638..0000000 Binary files a/res/images/indeterminate6.png and /dev/null differ diff --git a/res/images/progress_empty.png b/res/images/progress_empty.png index 4cb4998..c682015 100644 Binary files a/res/images/progress_empty.png and b/res/images/progress_empty.png differ diff --git a/res/images/progress_fill.png b/res/images/progress_fill.png index eb71754..9748435 100644 Binary files a/res/images/progress_fill.png and b/res/images/progress_fill.png differ diff --git a/ui.c b/ui.c index 054e53f..5a2a837 100644 --- a/ui.c +++ b/ui.c @@ -39,10 +39,10 @@ #define UI_WAIT_KEY_TIMEOUT_SEC 120 UIParameters ui_parameters = { - 6, // indeterminate progress bar frames - 15, // fps - 0, // installation icon frames (0 == static image) - 0, 0, // installation icon overlay offset + 6, // indeterminate progress bar frames + 20, // fps + 7, // installation icon frames (0 == static image) + 23, 83, // installation icon overlay offset }; static pthread_mutex_t gUpdateMutex = PTHREAD_MUTEX_INITIALIZER; @@ -386,10 +386,8 @@ void ui_init(void) sizeof(gr_surface)); for (i = 0; i < ui_parameters.indeterminate_frames; ++i) { char filename[40]; - // "indeterminateN" if fewer than 10 frames, else "indeterminateNN". - sprintf(filename, "indeterminate%0*d", - ui_parameters.indeterminate_frames < 10 ? 1 : 2, - i+1); + // "indeterminate01.png", "indeterminate02.png", ... + sprintf(filename, "indeterminate%02d", i+1); int result = res_create_surface(filename, gProgressBarIndeterminate+i); if (result < 0) { LOGE("Missing bitmap %s\n(Code %d)\n", filename, result); @@ -401,9 +399,9 @@ void ui_init(void) sizeof(gr_surface)); for (i = 0; i < ui_parameters.installing_frames; ++i) { char filename[40]; - sprintf(filename, "icon_installing_overlay%0*d", - ui_parameters.installing_frames < 10 ? 1 : 2, - i+1); + // "icon_installing_overlay01.png", + // "icon_installing_overlay02.png", ... + sprintf(filename, "icon_installing_overlay%02d", i+1); int result = res_create_surface(filename, gInstallationOverlay+i); if (result < 0) { LOGE("Missing bitmap %s\n(Code %d)\n", filename, result);