diff options
Diffstat (limited to 'scripts/newbitmaps/images/make_yaml_from_hwids')
-rwxr-xr-x | scripts/newbitmaps/images/make_yaml_from_hwids | 219 |
1 files changed, 219 insertions, 0 deletions
diff --git a/scripts/newbitmaps/images/make_yaml_from_hwids b/scripts/newbitmaps/images/make_yaml_from_hwids new file mode 100755 index 00000000..7e7da3f1 --- /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 |