Index: scripts/newbitmaps/images/make_yaml_from_hwids |
diff --git a/scripts/newbitmaps/images/make_yaml_from_hwids b/scripts/newbitmaps/images/make_yaml_from_hwids |
new file mode 100755 |
index 0000000000000000000000000000000000000000..7e7da3f17231422fdb102898ff7b4ac4e04389da |
--- /dev/null |
+++ b/scripts/newbitmaps/images/make_yaml_from_hwids |
@@ -0,0 +1,219 @@ |
+#!/bin/bash -eu |
+# Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+# |
+# Generate a new yaml file for each specified hwid_*.bmp file. |
+# |
+ |
+# Do initial release locales only, 'cause I'm in a hurry. GB == US. |
+locales="en es fr it nl de" |
+localedir="./localized_bitmaps" |
+ |
+# Arbitrary padding |
+ypad=5 |
+xpad=10 |
+yborder=40 |
+ |
+ |
+# Stuff to center and position bitmaps from the bottom of the screen upwards. |
+ |
+# Globals |
+cur_x=0 |
+cur_y=0 |
+ |
+ |
+# Return width of the specified .bmp file |
+get_x() { |
+ file $1 | awk '{print $7}' |
+} |
+ |
+get_xx() { |
+ local ffile=$(eval "echo \$$1") |
+ get_x $ffile |
+} |
+ |
+# Return height of the specified .bmp file |
+get_y() { |
+ file $1 | awk '{print $9}' |
+} |
+ |
+# Return height of the specified .bmp file |
+get_yy() { |
+ local ffile=$(eval "echo \$$1") |
+ get_y $ffile |
+} |
+ |
+ |
+# Guess the locale based on the filename, set a global "newlocales" list |
+# accordingly. |
+guess_locale() { |
+ local lc |
+ local islc |
+ local matches |
+ islc= |
+ |
+ matches=0 |
+ for lc in $locales; do |
+ case "$1" in |
+ *[_-]${lc}_* ) |
+ matches=$(expr $matches + 1) |
+ islc=$lc |
+ ;; |
+ esac |
+ done |
+ if (( $matches != 1 )); then |
+ islc='en' |
+ fi |
+ |
+ local newlist |
+ newlist="$islc" |
+ for lc in $locales; do |
+ if [ "$lc" != "$islc" ]; then |
+ newlist="$newlist $lc" |
+ fi |
+ done |
+ |
+ newlocales=$newlist |
+} |
+ |
+ |
+# Reset the current baseline and width to the size of the specified .bmp file |
+reset_base() { |
+ cur_x=$(get_x "$1") |
+ cur_y=$(expr $(get_y $1) - $yborder) |
+} |
+ |
+# Emit a screen line entry centering the given .bmp files at the current |
+# baseline. We assume that all args are the same height. |
+center_up() { |
+ local totalx |
+ local totaly |
+ local x |
+ local ffile |
+ |
+ totaly=$(get_yy "$1") |
+ cur_y=$(expr $cur_y - $totaly - $ypad) |
+ |
+ totalx=$(expr 0 - $xpad / 2) |
+ for fname in "$@"; do |
+ totalx=$(expr $totalx + $(get_xx $fname) + $xpad) |
+ done |
+ |
+ x=$(expr "(" $cur_x - $totalx ")" / 2) |
+ |
+ for fname in $*; do |
+ echo " - [$x, $cur_y, $fname]" >> "$yaml_file" |
+ x=$(expr $x + $(get_xx $fname) + $xpad) |
+ done |
+} |
+ |
+ |
+ |
+# Generate a new yaml file for each specified hwid_*.bmp file. |
+for hwid_bmp in "$@"; do |
+ yaml_file=$(echo $(basename "$hwid_bmp" .bmp) | tr 'A-Z' 'a-z').yaml |
+ echo "$yaml_file" |
+ |
+ # List the images. The major difference is the HWID. |
+ cat >"$yaml_file" <<EOF1 |
+bmpblock: 1.0 |
+ |
+compression: 1 |
+ |
+images: |
+ |
+ # The HWID must change for every BOM |
+ hwid: $hwid_bmp |
+ |
+ # This URL never changes |
+ url: URL.bmp |
+ |
+ # The background images are from the UI people |
+ devmode_bg: Devmode.bmp |
+ remove_bg: Remove.bmp |
+ yuck_bg: Yuck.bmp |
+ insert_bg: Insert.bmp |
+ |
+ # The following strings must be approved by the localization people |
+EOF1 |
+ |
+ # some global variables matching the yaml definitions |
+ hwid=$hwid_bmp |
+ url="URL.bmp" |
+ |
+ # Enumerate the bitmaps for each locale-specific string. |
+ for lc in $locales; do |
+ cat >>"$yaml_file" <<EOF2 |
+ ${lc}_model_text: ${localedir}/$lc/model.bmp |
+ ${lc}_devmode_text: ${localedir}/$lc/devmode.bmp |
+ ${lc}_remove_text: ${localedir}/$lc/remove.bmp |
+ ${lc}_yuck_text: ${localedir}/$lc/yuck.bmp |
+ ${lc}_insert_text: ${localedir}/$lc/insert.bmp |
+ |
+EOF2 |
+ |
+ # Also define global variables matching those in the yaml file. |
+ eval "${lc}_model_text=${localedir}/$lc/model.bmp" |
+ eval "${lc}_devmode_text=${localedir}/$lc/devmode.bmp" |
+ eval "${lc}_remove_text=${localedir}/$lc/remove.bmp" |
+ eval "${lc}_yuck_text=${localedir}/$lc/yuck.bmp" |
+ eval "${lc}_insert_text=${localedir}/$lc/insert.bmp" |
+ done |
+ |
+ # List the screens. We need to composite four screens for each locale. |
+ echo "screens:" >> "$yaml_file" |
+ |
+ for lc in $locales; do |
+ echo " ${lc}_devel:" >> "$yaml_file" |
+ echo " - [ 0, 0, devmode_bg]" >> "$yaml_file" |
+ reset_base Devmode.bmp |
+ center_up "${lc}_devmode_text" |
+ echo "" >> "$yaml_file" |
+ |
+ echo " ${lc}_remove:" >> "$yaml_file" |
+ echo " - [ 0, 0, remove_bg]" >> "$yaml_file" |
+ reset_base Remove.bmp |
+ center_up "${lc}_model_text" "hwid" |
+ center_up "url" |
+ center_up "${lc}_remove_text" |
+ echo "" >> "$yaml_file" |
+ |
+ echo " ${lc}_yuck:" >> "$yaml_file" |
+ echo " - [ 0, 0, yuck_bg]" >> "$yaml_file" |
+ reset_base Yuck.bmp |
+ center_up "${lc}_model_text" "hwid" |
+ center_up "url" |
+ center_up "${lc}_yuck_text" |
+ echo "" >> "$yaml_file" |
+ |
+ echo " ${lc}_insert:" >> "$yaml_file" |
+ echo " - [ 0, 0, insert_bg]" >> "$yaml_file" |
+ reset_base Insert.bmp |
+ center_up "${lc}_model_text" "hwid" |
+ center_up "url" |
+ center_up "${lc}_insert_text" |
+ echo "" >> "$yaml_file" |
+ |
+ done |
+ |
+ |
+ # Finally list the localizations. |
+ |
+ cat >>"$yaml_file" <<EOF2 |
+localizations: |
+ |
+ # This determines the order in which the localizations appear. The first |
+ # one is the default. |
+ |
+EOF2 |
+ |
+ # Let's try to use the native one first, if we can. |
+ guess_locale "$yaml_file" |
+ |
+ for lc in $newlocales; do |
+ echo " - [ ${lc}_devel, ${lc}_remove, ${lc}_yuck, ${lc}_insert ]" >> \ |
+ "$yaml_file" |
+ done |
+ |
+done |