summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Richardson <wfrichar@chromium.org>2011-03-01 12:58:27 -0800
committerBill Richardson <wfrichar@chromium.org>2011-03-01 12:58:27 -0800
commitdfe4ca5e4057132b634c3df859ddecbdee35cd29 (patch)
treec58e3bf264b6e19cd380a454926cb9cd3aabae36
parent618d17d48ceb095e06f7c4395217c304567f316e (diff)
downloadvboot-dfe4ca5e4057132b634c3df859ddecbdee35cd29.tar.gz
Add stuff to support new bitmap format.
Add bitmap_viewer program (to run OUTSIDE of chroot) and example bitmaps (to be replaced by the REAL bitmaps for each platform). BUG=chromium-os:10949 TEST=none These are just nonessential tools and examples. No regression testing needed. Change-Id: I7f9aab30809251e4c62d71bfa73293d0b4d97196 Review URL: http://codereview.chromium.org/6598046
-rw-r--r--scripts/newbitmaps/README110
-rwxr-xr-xscripts/newbitmaps/bitmap_viewer34
-rw-r--r--scripts/newbitmaps/images/1280x800/Developer.bmpbin0 -> 1440054 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/Recovery.bmpbin0 -> 1440054 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/RecoveryMissingOS.bmpbin0 -> 1440054 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/RecoveryNoOS.bmpbin0 -> 1440054 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/de_devmode_text.bmpbin0 -> 24662 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/de_insert_text.bmpbin0 -> 14962 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/de_model.bmpbin0 -> 2170 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/de_remove_text.bmpbin0 -> 14806 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/de_yuck_text.bmpbin0 -> 15430 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/en_devmode_text.bmpbin0 -> 10906 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/en_insert_text.bmpbin0 -> 10750 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/en_model.bmpbin0 -> 2086 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/en_remove_text.bmpbin0 -> 9562 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/en_yuck_text.bmpbin0 -> 11074 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/es_devmode_text.bmpbin0 -> 19486 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/es_insert_text.bmpbin0 -> 16522 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/es_model.bmpbin0 -> 2338 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/es_remove_text.bmpbin0 -> 12754 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/es_yuck_text.bmpbin0 -> 22138 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/fr_devmode_text.bmpbin0 -> 17146 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/fr_insert_text.bmpbin0 -> 13714 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/fr_model.bmpbin0 -> 2338 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/fr_remove_text.bmpbin0 -> 11830 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/fr_yuck_text.bmpbin0 -> 19330 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/hwid_unknown.bmpbin0 -> 5530 bytes
-rw-r--r--scripts/newbitmaps/images/1280x800/unknown.yaml164
-rw-r--r--scripts/newbitmaps/images/1280x800/url.bmpbin0 -> 21678 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/Developer.bmpbin0 -> 1440054 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/Recovery.bmpbin0 -> 1440054 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/RecoveryMissingOS.bmpbin0 -> 1440054 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/RecoveryNoOS.bmpbin0 -> 1440054 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/de_devmode_text.bmpbin0 -> 24662 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/de_insert_text.bmpbin0 -> 14962 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/de_model.bmpbin0 -> 2170 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/de_remove_text.bmpbin0 -> 14806 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/de_yuck_text.bmpbin0 -> 15430 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/en_devmode_text.bmpbin0 -> 10906 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/en_insert_text.bmpbin0 -> 10750 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/en_model.bmpbin0 -> 2086 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/en_remove_text.bmpbin0 -> 9562 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/en_yuck_text.bmpbin0 -> 11074 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/es_devmode_text.bmpbin0 -> 19486 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/es_insert_text.bmpbin0 -> 16522 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/es_model.bmpbin0 -> 2338 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/es_remove_text.bmpbin0 -> 12754 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/es_yuck_text.bmpbin0 -> 22138 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/fr_devmode_text.bmpbin0 -> 17146 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/fr_insert_text.bmpbin0 -> 13714 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/fr_model.bmpbin0 -> 2338 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/fr_remove_text.bmpbin0 -> 11830 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/fr_yuck_text.bmpbin0 -> 19330 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/hwid_unknown.bmpbin0 -> 5530 bytes
-rw-r--r--scripts/newbitmaps/images/1366x768/unknown.yaml164
-rw-r--r--scripts/newbitmaps/images/1366x768/url.bmpbin0 -> 21678 bytes
-rw-r--r--scripts/newbitmaps/lib/__init__.py6
-rwxr-xr-xscripts/newbitmaps/lib/bmpblock.py104
-rwxr-xr-xscripts/newbitmaps/lib/pixcontrol.py102
-rwxr-xr-xscripts/newbitmaps/lib/pixdisplay.py62
-rw-r--r--scripts/newbitmaps/strings/README3
-rw-r--r--scripts/newbitmaps/strings/de_devmode_text.txt3
-rw-r--r--scripts/newbitmaps/strings/de_insert_text.txt2
-rw-r--r--scripts/newbitmaps/strings/de_model.txt1
-rw-r--r--scripts/newbitmaps/strings/de_remove_text.txt2
-rw-r--r--scripts/newbitmaps/strings/de_yuck_text.txt2
-rw-r--r--scripts/newbitmaps/strings/en_devmode_text.txt2
-rw-r--r--scripts/newbitmaps/strings/en_insert_text.txt2
-rw-r--r--scripts/newbitmaps/strings/en_model.txt1
-rw-r--r--scripts/newbitmaps/strings/en_remove_text.txt1
-rw-r--r--scripts/newbitmaps/strings/en_yuck_text.txt1
-rw-r--r--scripts/newbitmaps/strings/es_devmode_text.txt2
-rw-r--r--scripts/newbitmaps/strings/es_insert_text.txt2
-rw-r--r--scripts/newbitmaps/strings/es_model.txt1
-rw-r--r--scripts/newbitmaps/strings/es_remove_text.txt1
-rw-r--r--scripts/newbitmaps/strings/es_yuck_text.txt2
-rw-r--r--scripts/newbitmaps/strings/fr_devmode_text.txt2
-rw-r--r--scripts/newbitmaps/strings/fr_insert_text.txt2
-rw-r--r--scripts/newbitmaps/strings/fr_model.txt1
-rw-r--r--scripts/newbitmaps/strings/fr_remove_text.txt1
-rw-r--r--scripts/newbitmaps/strings/fr_yuck_text.txt2
-rw-r--r--scripts/newbitmaps/strings/hwid.txt1
-rwxr-xr-xscripts/newbitmaps/strings/text_to_bmp53
-rw-r--r--scripts/newbitmaps/strings/url.TXT1
84 files changed, 837 insertions, 0 deletions
diff --git a/scripts/newbitmaps/README b/scripts/newbitmaps/README
new file mode 100644
index 00000000..c5b7c2ba
--- /dev/null
+++ b/scripts/newbitmaps/README
@@ -0,0 +1,110 @@
+This directory contains examples of the new-style BIOS bitmaps, and a simple
+(and ugly) tool to view the configuration file that describes how each
+screen is displayed.
+
+Old-style bitmaps:
+
+In the Cr-48 BIOS there are four BIOS screens that may be presented to the
+user. Each contains a graphic, a URL, and some informative text. The screens
+are single bitmap images, hardcoded in read-only BIOS (because they have to
+display even when the R/W BIOS and SSD are both completely erased). They can
+be replaced at manufacturing time, but creating the screens is difficult.
+The format is a compressed EFI firmware volume that is generated when the
+BIOS is compiled. The result is an opaque blob that cannot be viewed or
+edited with linux-based tools.
+
+
+New-style bitmaps:
+
+Future BIOSes will continue to display the same basic screens, but using a
+different format. Each screen will have separate bitmaps for the basic
+graphic, the URL, and the informative text, and will be displayed by
+rendering each component in order. This will allow us to modify and replace
+any bitmap (most frequently the HWID), using standard command-line tools
+such as imagemagick. Compositing each screen in this way also means that we
+can easily provide localized BIOS screens or custom messages.
+
+
+Note:
+
+Because the bitmap images and display code is part of the Read-Only BIOS,
+back-porting the new-style bitmaps to older devices is not possible.
+
+
+Instructions:
+
+The bmpblk_utility reads a config file and produces a binary bmpblock. The
+config file lists the individual bitmaps and describes where to place each
+one when displaying each screen. The bmpblock is then written into the BIOS
+image with the gbb_utility. The bitmap_viewer program lets you view the
+composited screens as described by the config file.
+
+* First, get the bitmap_viewer working. This is best used OUTSIDE of the
+ chroot. Test it by changing to the scripts/newbitmaps/images/1280x800
+ directory and running "../../bitmap_viewer unknown.yaml". You may need to
+ install some additional packages. For example, on Ubuntu you'll probably
+ need to install the "python-yaml" and "python-wxgtk2.8" packages.
+
+* Now make changes to the unknown.yaml config file, and use the
+ bitmap_viewer to see how the layout looks. Hit Ctrl-R in the small window
+ to reload the config file without restarting.
+
+* The bitmap_viewer can display images in several different formats, but the
+ BIOS is very limited (and may differ between x86 and ARM). For x86, ensure
+ that you're using the proper format by converting any new bitmaps with a
+ command like this:
+
+ convert IN.bmp -colors 256 -compress none -alpha off OUT.bmp
+
+* When you have the screens tweaked to your satisfaction, generate the
+ binary bmpblock to embed into the BIOS.
+
+ bmpblk_utility -c unknown.yaml bmpblock.bin
+
+* Use the gbb_utility to modify the BIOS to contain our new set of bitmaps.
+ We will need to pad our replacement bmpblock to match the size of the
+ original.
+
+ NOTE: These commands are run (as root) on the device under test!
+
+ NOTE: This will only work if the BIOS write-protection is disabled!
+
+ Copy our new bmpblock over.
+
+ cd /mnt/stateful_partition
+ scp USER@SOMEHOST:/SOMEPATH/bmpblock.bin .
+
+ Get a copy of the current BIOS.
+
+ flashrom -r bios.bin
+
+ Extract the current bmpblock from the BIOS, and see how big it is.
+
+ gbb_utility -g -b oldblob bios.bin
+ ls -l oldblob
+
+ Pad our bmpblock to the same size (for example, 253568 bytes)
+
+ dd if=bmpblock.bin bs=253568 count=1 of=newblob
+
+ Put our bmpblock in our copy of the BIOS
+
+ gbb_utility -s newblob bios.bin
+
+ Reflash the BIOS with the new content
+
+ flashrom -w bios.bin
+
+* Reboot. You should see your new bitmaps appear whenever the BIOS screens
+ are displayed. If you have more than one localization, you should be able
+ to cycle among them with the arrow keys.
+
+* If you want to examine a binary bmpblock that you've pulled from a BIOS
+ image, the bmpblk_utility has options to display or unpack the binary.
+
+ bmpblk_utility bmpblock.bin
+
+ bmpblk_utility -y bmpblock.bin
+
+ cd /SOME/SCRATCH/DIR
+ bmpblk_utility -x bmpblock.bin
diff --git a/scripts/newbitmaps/bitmap_viewer b/scripts/newbitmaps/bitmap_viewer
new file mode 100755
index 00000000..795ff77e
--- /dev/null
+++ b/scripts/newbitmaps/bitmap_viewer
@@ -0,0 +1,34 @@
+#!/usr/bin/python -tt
+# 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.
+
+"""Quick-and-dirty viewer for bmpblock yaml files"""
+import os
+import sys
+import wx
+
+from lib import bmpblock
+from lib import pixcontrol
+from lib import pixdisplay
+
+class MyApp(wx.App):
+
+ def OnInit(self):
+ self._bmpblock = bmpblock.BmpBlock(sys.argv[1])
+ progname = os.path.basename(sys.argv[0])
+ self._mainframe = pixcontrol.Frame(self._bmpblock, progname)
+ self._mainframe.Show()
+ self.SetTopWindow(self._mainframe)
+ self._imgframe = pixdisplay.Frame(self._bmpblock, sys.argv[1])
+ self._imgframe.Show()
+ return True
+
+def main():
+ if len(sys.argv) != 2:
+ print "You must specify a config.yaml file to view"
+ sys.exit(1)
+ MyApp(False).MainLoop()
+
+if __name__ == '__main__':
+ main()
diff --git a/scripts/newbitmaps/images/1280x800/Developer.bmp b/scripts/newbitmaps/images/1280x800/Developer.bmp
new file mode 100644
index 00000000..5a500aee
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/Developer.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/Recovery.bmp b/scripts/newbitmaps/images/1280x800/Recovery.bmp
new file mode 100644
index 00000000..f81002f6
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/Recovery.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/RecoveryMissingOS.bmp b/scripts/newbitmaps/images/1280x800/RecoveryMissingOS.bmp
new file mode 100644
index 00000000..2bd1bf81
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/RecoveryMissingOS.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/RecoveryNoOS.bmp b/scripts/newbitmaps/images/1280x800/RecoveryNoOS.bmp
new file mode 100644
index 00000000..92e14d3f
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/RecoveryNoOS.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/de_devmode_text.bmp b/scripts/newbitmaps/images/1280x800/de_devmode_text.bmp
new file mode 100644
index 00000000..fa3ea30f
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/de_devmode_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/de_insert_text.bmp b/scripts/newbitmaps/images/1280x800/de_insert_text.bmp
new file mode 100644
index 00000000..3be236c1
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/de_insert_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/de_model.bmp b/scripts/newbitmaps/images/1280x800/de_model.bmp
new file mode 100644
index 00000000..c31cd9d3
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/de_model.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/de_remove_text.bmp b/scripts/newbitmaps/images/1280x800/de_remove_text.bmp
new file mode 100644
index 00000000..c878e000
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/de_remove_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/de_yuck_text.bmp b/scripts/newbitmaps/images/1280x800/de_yuck_text.bmp
new file mode 100644
index 00000000..d250ff85
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/de_yuck_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/en_devmode_text.bmp b/scripts/newbitmaps/images/1280x800/en_devmode_text.bmp
new file mode 100644
index 00000000..5cd309fe
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/en_devmode_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/en_insert_text.bmp b/scripts/newbitmaps/images/1280x800/en_insert_text.bmp
new file mode 100644
index 00000000..c7aa8acc
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/en_insert_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/en_model.bmp b/scripts/newbitmaps/images/1280x800/en_model.bmp
new file mode 100644
index 00000000..2c7511a8
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/en_model.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/en_remove_text.bmp b/scripts/newbitmaps/images/1280x800/en_remove_text.bmp
new file mode 100644
index 00000000..840b4aab
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/en_remove_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/en_yuck_text.bmp b/scripts/newbitmaps/images/1280x800/en_yuck_text.bmp
new file mode 100644
index 00000000..1825a235
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/en_yuck_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/es_devmode_text.bmp b/scripts/newbitmaps/images/1280x800/es_devmode_text.bmp
new file mode 100644
index 00000000..c0174cb9
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/es_devmode_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/es_insert_text.bmp b/scripts/newbitmaps/images/1280x800/es_insert_text.bmp
new file mode 100644
index 00000000..838633b4
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/es_insert_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/es_model.bmp b/scripts/newbitmaps/images/1280x800/es_model.bmp
new file mode 100644
index 00000000..841a8d86
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/es_model.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/es_remove_text.bmp b/scripts/newbitmaps/images/1280x800/es_remove_text.bmp
new file mode 100644
index 00000000..de59d248
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/es_remove_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/es_yuck_text.bmp b/scripts/newbitmaps/images/1280x800/es_yuck_text.bmp
new file mode 100644
index 00000000..32533fac
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/es_yuck_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/fr_devmode_text.bmp b/scripts/newbitmaps/images/1280x800/fr_devmode_text.bmp
new file mode 100644
index 00000000..88203a48
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/fr_devmode_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/fr_insert_text.bmp b/scripts/newbitmaps/images/1280x800/fr_insert_text.bmp
new file mode 100644
index 00000000..77a6e775
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/fr_insert_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/fr_model.bmp b/scripts/newbitmaps/images/1280x800/fr_model.bmp
new file mode 100644
index 00000000..325b18ae
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/fr_model.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/fr_remove_text.bmp b/scripts/newbitmaps/images/1280x800/fr_remove_text.bmp
new file mode 100644
index 00000000..a774d7ac
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/fr_remove_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/fr_yuck_text.bmp b/scripts/newbitmaps/images/1280x800/fr_yuck_text.bmp
new file mode 100644
index 00000000..ed1e1011
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/fr_yuck_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/hwid_unknown.bmp b/scripts/newbitmaps/images/1280x800/hwid_unknown.bmp
new file mode 100644
index 00000000..af0d19d5
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/hwid_unknown.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1280x800/unknown.yaml b/scripts/newbitmaps/images/1280x800/unknown.yaml
new file mode 100644
index 00000000..061c851b
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/unknown.yaml
@@ -0,0 +1,164 @@
+
+bmpblock: 1.0
+
+compression: 1
+
+images:
+
+ # The HWID must change for every BOM
+
+ hwid: hwid_unknown.bmp
+
+ # This URL never changes
+
+ url: url.bmp
+
+ # These are from the UI people
+
+ devmode_bg: Developer.bmp
+ remove_bg: Recovery.bmp
+ yuck_bg: RecoveryNoOS.bmp
+ insert_bg: RecoveryMissingOS.bmp
+
+ # The following strings must be approved by the localization people
+
+ en_model: en_model.bmp
+ en_devmode_text: en_devmode_text.bmp
+ en_remove_text: en_remove_text.bmp
+ en_yuck_text: en_yuck_text.bmp
+ en_insert_text: en_insert_text.bmp
+
+ de_model: de_model.bmp
+ de_devmode_text: de_devmode_text.bmp
+ de_remove_text: de_remove_text.bmp
+ de_yuck_text: de_yuck_text.bmp
+ de_insert_text: de_insert_text.bmp
+
+ es_model: es_model.bmp
+ es_devmode_text: es_devmode_text.bmp
+ es_remove_text: es_remove_text.bmp
+ es_yuck_text: es_yuck_text.bmp
+ es_insert_text: es_insert_text.bmp
+
+ fr_model: fr_model.bmp
+ fr_devmode_text: fr_devmode_text.bmp
+ fr_remove_text: fr_remove_text.bmp
+ fr_yuck_text: fr_yuck_text.bmp
+ fr_insert_text: fr_insert_text.bmp
+
+screens:
+ en_devel:
+ - [ 0, 0, devmode_bg]
+ - [274, 470, en_devmode_text]
+
+ en_remove:
+ - [ 0, 0, remove_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [264, 559, en_model]
+ - [198, 488, en_remove_text]
+
+ en_yuck:
+ - [ 0, 0, yuck_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [264, 559, en_model]
+ - [163, 488, en_yuck_text]
+
+ en_insert:
+ - [ 0, 0, insert_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [264, 559, en_model]
+ - [277, 470, en_insert_text]
+
+
+ de_devel:
+ - [ 0, 0, devmode_bg]
+ - [234, 452, de_devmode_text]
+
+ de_remove:
+ - [ 0, 0, remove_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [265, 559, de_model]
+ - [224, 470, de_remove_text]
+
+ de_yuck:
+ - [ 0, 0, yuck_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [265, 559, de_model]
+ - [216, 470, de_yuck_text]
+
+ de_insert:
+ - [ 0, 0, insert_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [265, 559, de_model]
+ - [222, 470, de_insert_text]
+
+
+ es_devel:
+ - [ 0, 0, devmode_bg]
+ - [165, 470, es_devmode_text]
+
+ es_remove:
+ - [ 0, 0, remove_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [260, 559, es_model]
+ - [122, 488, es_remove_text]
+
+ es_yuck:
+ - [ 0, 0, yuck_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [260, 559, es_model]
+ - [130, 470, es_yuck_text]
+
+ es_insert:
+ - [ 0, 0, insert_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [260, 559, es_model]
+ - [202, 470, es_insert_text]
+
+
+
+ fr_devel:
+ - [ 0, 0, devmode_bg]
+ - [195, 470, fr_devmode_text]
+
+ fr_remove:
+ - [ 0, 0, remove_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [260, 559, fr_model]
+ - [144, 488, fr_remove_text]
+
+ fr_yuck:
+ - [ 0, 0, yuck_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [260, 559, fr_model]
+ - [166, 470, fr_yuck_text]
+
+ fr_insert:
+ - [ 0, 0, insert_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [260, 559, fr_model]
+ - [238, 470, fr_insert_text]
+
+
+
+localizations:
+
+ # This determines the order in which the localizations appear. The first
+ # one is the default.
+
+ - [ en_devel, en_remove, en_yuck, en_insert ]
+ - [ es_devel, es_remove, es_yuck, es_insert ]
+ - [ fr_devel, fr_remove, fr_yuck, fr_insert ]
+ - [ de_devel, de_remove, de_yuck, de_insert ]
diff --git a/scripts/newbitmaps/images/1280x800/url.bmp b/scripts/newbitmaps/images/1280x800/url.bmp
new file mode 100644
index 00000000..f61ce1cc
--- /dev/null
+++ b/scripts/newbitmaps/images/1280x800/url.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/Developer.bmp b/scripts/newbitmaps/images/1366x768/Developer.bmp
new file mode 100644
index 00000000..cba54f68
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/Developer.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/Recovery.bmp b/scripts/newbitmaps/images/1366x768/Recovery.bmp
new file mode 100644
index 00000000..b15adf05
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/Recovery.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/RecoveryMissingOS.bmp b/scripts/newbitmaps/images/1366x768/RecoveryMissingOS.bmp
new file mode 100644
index 00000000..af25a08d
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/RecoveryMissingOS.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/RecoveryNoOS.bmp b/scripts/newbitmaps/images/1366x768/RecoveryNoOS.bmp
new file mode 100644
index 00000000..bf9930c0
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/RecoveryNoOS.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/de_devmode_text.bmp b/scripts/newbitmaps/images/1366x768/de_devmode_text.bmp
new file mode 100644
index 00000000..fa3ea30f
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/de_devmode_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/de_insert_text.bmp b/scripts/newbitmaps/images/1366x768/de_insert_text.bmp
new file mode 100644
index 00000000..3be236c1
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/de_insert_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/de_model.bmp b/scripts/newbitmaps/images/1366x768/de_model.bmp
new file mode 100644
index 00000000..c31cd9d3
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/de_model.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/de_remove_text.bmp b/scripts/newbitmaps/images/1366x768/de_remove_text.bmp
new file mode 100644
index 00000000..c878e000
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/de_remove_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/de_yuck_text.bmp b/scripts/newbitmaps/images/1366x768/de_yuck_text.bmp
new file mode 100644
index 00000000..d250ff85
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/de_yuck_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/en_devmode_text.bmp b/scripts/newbitmaps/images/1366x768/en_devmode_text.bmp
new file mode 100644
index 00000000..5cd309fe
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/en_devmode_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/en_insert_text.bmp b/scripts/newbitmaps/images/1366x768/en_insert_text.bmp
new file mode 100644
index 00000000..c7aa8acc
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/en_insert_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/en_model.bmp b/scripts/newbitmaps/images/1366x768/en_model.bmp
new file mode 100644
index 00000000..2c7511a8
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/en_model.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/en_remove_text.bmp b/scripts/newbitmaps/images/1366x768/en_remove_text.bmp
new file mode 100644
index 00000000..840b4aab
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/en_remove_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/en_yuck_text.bmp b/scripts/newbitmaps/images/1366x768/en_yuck_text.bmp
new file mode 100644
index 00000000..1825a235
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/en_yuck_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/es_devmode_text.bmp b/scripts/newbitmaps/images/1366x768/es_devmode_text.bmp
new file mode 100644
index 00000000..c0174cb9
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/es_devmode_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/es_insert_text.bmp b/scripts/newbitmaps/images/1366x768/es_insert_text.bmp
new file mode 100644
index 00000000..838633b4
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/es_insert_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/es_model.bmp b/scripts/newbitmaps/images/1366x768/es_model.bmp
new file mode 100644
index 00000000..841a8d86
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/es_model.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/es_remove_text.bmp b/scripts/newbitmaps/images/1366x768/es_remove_text.bmp
new file mode 100644
index 00000000..de59d248
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/es_remove_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/es_yuck_text.bmp b/scripts/newbitmaps/images/1366x768/es_yuck_text.bmp
new file mode 100644
index 00000000..32533fac
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/es_yuck_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/fr_devmode_text.bmp b/scripts/newbitmaps/images/1366x768/fr_devmode_text.bmp
new file mode 100644
index 00000000..88203a48
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/fr_devmode_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/fr_insert_text.bmp b/scripts/newbitmaps/images/1366x768/fr_insert_text.bmp
new file mode 100644
index 00000000..77a6e775
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/fr_insert_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/fr_model.bmp b/scripts/newbitmaps/images/1366x768/fr_model.bmp
new file mode 100644
index 00000000..325b18ae
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/fr_model.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/fr_remove_text.bmp b/scripts/newbitmaps/images/1366x768/fr_remove_text.bmp
new file mode 100644
index 00000000..a774d7ac
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/fr_remove_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/fr_yuck_text.bmp b/scripts/newbitmaps/images/1366x768/fr_yuck_text.bmp
new file mode 100644
index 00000000..ed1e1011
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/fr_yuck_text.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/hwid_unknown.bmp b/scripts/newbitmaps/images/1366x768/hwid_unknown.bmp
new file mode 100644
index 00000000..af0d19d5
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/hwid_unknown.bmp
Binary files differ
diff --git a/scripts/newbitmaps/images/1366x768/unknown.yaml b/scripts/newbitmaps/images/1366x768/unknown.yaml
new file mode 100644
index 00000000..061c851b
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/unknown.yaml
@@ -0,0 +1,164 @@
+
+bmpblock: 1.0
+
+compression: 1
+
+images:
+
+ # The HWID must change for every BOM
+
+ hwid: hwid_unknown.bmp
+
+ # This URL never changes
+
+ url: url.bmp
+
+ # These are from the UI people
+
+ devmode_bg: Developer.bmp
+ remove_bg: Recovery.bmp
+ yuck_bg: RecoveryNoOS.bmp
+ insert_bg: RecoveryMissingOS.bmp
+
+ # The following strings must be approved by the localization people
+
+ en_model: en_model.bmp
+ en_devmode_text: en_devmode_text.bmp
+ en_remove_text: en_remove_text.bmp
+ en_yuck_text: en_yuck_text.bmp
+ en_insert_text: en_insert_text.bmp
+
+ de_model: de_model.bmp
+ de_devmode_text: de_devmode_text.bmp
+ de_remove_text: de_remove_text.bmp
+ de_yuck_text: de_yuck_text.bmp
+ de_insert_text: de_insert_text.bmp
+
+ es_model: es_model.bmp
+ es_devmode_text: es_devmode_text.bmp
+ es_remove_text: es_remove_text.bmp
+ es_yuck_text: es_yuck_text.bmp
+ es_insert_text: es_insert_text.bmp
+
+ fr_model: fr_model.bmp
+ fr_devmode_text: fr_devmode_text.bmp
+ fr_remove_text: fr_remove_text.bmp
+ fr_yuck_text: fr_yuck_text.bmp
+ fr_insert_text: fr_insert_text.bmp
+
+screens:
+ en_devel:
+ - [ 0, 0, devmode_bg]
+ - [274, 470, en_devmode_text]
+
+ en_remove:
+ - [ 0, 0, remove_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [264, 559, en_model]
+ - [198, 488, en_remove_text]
+
+ en_yuck:
+ - [ 0, 0, yuck_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [264, 559, en_model]
+ - [163, 488, en_yuck_text]
+
+ en_insert:
+ - [ 0, 0, insert_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [264, 559, en_model]
+ - [277, 470, en_insert_text]
+
+
+ de_devel:
+ - [ 0, 0, devmode_bg]
+ - [234, 452, de_devmode_text]
+
+ de_remove:
+ - [ 0, 0, remove_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [265, 559, de_model]
+ - [224, 470, de_remove_text]
+
+ de_yuck:
+ - [ 0, 0, yuck_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [265, 559, de_model]
+ - [216, 470, de_yuck_text]
+
+ de_insert:
+ - [ 0, 0, insert_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [265, 559, de_model]
+ - [222, 470, de_insert_text]
+
+
+ es_devel:
+ - [ 0, 0, devmode_bg]
+ - [165, 470, es_devmode_text]
+
+ es_remove:
+ - [ 0, 0, remove_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [260, 559, es_model]
+ - [122, 488, es_remove_text]
+
+ es_yuck:
+ - [ 0, 0, yuck_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [260, 559, es_model]
+ - [130, 470, es_yuck_text]
+
+ es_insert:
+ - [ 0, 0, insert_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [260, 559, es_model]
+ - [202, 470, es_insert_text]
+
+
+
+ fr_devel:
+ - [ 0, 0, devmode_bg]
+ - [195, 470, fr_devmode_text]
+
+ fr_remove:
+ - [ 0, 0, remove_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [260, 559, fr_model]
+ - [144, 488, fr_remove_text]
+
+ fr_yuck:
+ - [ 0, 0, yuck_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [260, 559, fr_model]
+ - [166, 470, fr_yuck_text]
+
+ fr_insert:
+ - [ 0, 0, insert_bg]
+ - [324, 559, hwid]
+ - [195, 509, url]
+ - [260, 559, fr_model]
+ - [238, 470, fr_insert_text]
+
+
+
+localizations:
+
+ # This determines the order in which the localizations appear. The first
+ # one is the default.
+
+ - [ en_devel, en_remove, en_yuck, en_insert ]
+ - [ es_devel, es_remove, es_yuck, es_insert ]
+ - [ fr_devel, fr_remove, fr_yuck, fr_insert ]
+ - [ de_devel, de_remove, de_yuck, de_insert ]
diff --git a/scripts/newbitmaps/images/1366x768/url.bmp b/scripts/newbitmaps/images/1366x768/url.bmp
new file mode 100644
index 00000000..f61ce1cc
--- /dev/null
+++ b/scripts/newbitmaps/images/1366x768/url.bmp
Binary files differ
diff --git a/scripts/newbitmaps/lib/__init__.py b/scripts/newbitmaps/lib/__init__.py
new file mode 100644
index 00000000..8fa877aa
--- /dev/null
+++ b/scripts/newbitmaps/lib/__init__.py
@@ -0,0 +1,6 @@
+# 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.
+import bmpblock
+import pixcontrol
+import pixdisplay
diff --git a/scripts/newbitmaps/lib/bmpblock.py b/scripts/newbitmaps/lib/bmpblock.py
new file mode 100755
index 00000000..eacf72fa
--- /dev/null
+++ b/scripts/newbitmaps/lib/bmpblock.py
@@ -0,0 +1,104 @@
+#!/usr/bin/python -tt
+# 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.
+
+"""A BmpBlock class"""
+
+import os
+import types
+import yaml
+
+class BmpBlock(object):
+ """A wrapper for the config.yaml file.
+ It has a few special attributes to specify which part we're focusing on.
+ """
+
+ def __init__(self, filename=None):
+ self.yaml = None
+ self.filename = None
+ self.current_screen = None
+ self.filename = filename # always set, so we can reload
+ if filename:
+ self.LoadFile(filename)
+
+ def LoadFile(self, filename):
+ """Load the specified yaml file and verify that it's a valid BmpBlock"""
+ print "Loading", filename
+ with open(filename, 'rb') as f:
+ stuff = yaml.safe_load(f)
+ # FIXME: This is pretty lame. We should be able to find images using a
+ # default directory path instead of using chdir.
+ if os.path.dirname(filename):
+ os.chdir(os.path.dirname(filename))
+ if self.IsValidSyntax(stuff):
+ self.yaml = stuff
+ self.current_screen = sorted(self.yaml["screens"].keys())[0]
+
+ def Reload(self):
+ tmp = self.current_screen
+ self.LoadFile(self.filename)
+ if tmp in self.yaml["screens"]:
+ self.current_screen = tmp
+
+ def IsValidSyntax(self, thing):
+ """Raise an error if the specified dict is not a valid BmpBlock structure"""
+
+ assert isinstance(thing, dict)
+ assert thing["bmpblock"] == 1.0
+
+ seen_images = {}
+ seen_screens = {}
+
+ images = thing["images"]
+ assert isinstance(images, dict)
+ assert len(images) > 0
+ # image values should all be filenames (ie, strings)
+ for val in images.values():
+ assert val and isinstance(val, types.StringTypes)
+
+ screens = thing["screens"]
+ assert isinstance(screens, dict)
+ assert screens
+ # screen values should all be lists of 3-tuples
+ for scrname, imglist in screens.items():
+ assert len(imglist) <= 8
+ for img in imglist:
+ assert 3 == len(img)
+ # must have defined all referenced bitmaps
+ x,y,i = img
+ assert i in images
+ seen_images[i] = True
+
+ localizations = thing["localizations"]
+ assert hasattr(localizations, '__iter__')
+ assert localizations
+ # localizations should all be lists with the same number of screens
+ len0 = len(localizations[0])
+ assert len0
+ for elt in localizations:
+ assert len0 == len(elt)
+ # we must have defined all referenced screens
+ for scr in elt:
+ assert scr in screens
+ seen_screens[scr] = True
+
+ for unused_img in [x for x in images if x not in seen_images]:
+ print " Unused image:", unused_img
+ for unused_scr in [x for x in screens if x not in seen_screens]:
+ print " Unused screen:", unused_scr
+
+ return True
+
+ def RegisterScreenDisplayObject(self, displayer):
+ """Register an object with a .Redisplay() function to display updates."""
+ self.displayer = displayer
+
+
+ def Redisplay(self):
+ """Redisplay contents."""
+ if self.displayer:
+ if self.current_screen:
+ sc = self.yaml['screens'][self.current_screen]
+ slist = [(x,y,self.yaml['images'][z]) for x,y,z in sc]
+ self.displayer.DisplayScreen(self.current_screen, slist)
diff --git a/scripts/newbitmaps/lib/pixcontrol.py b/scripts/newbitmaps/lib/pixcontrol.py
new file mode 100755
index 00000000..1f46558e
--- /dev/null
+++ b/scripts/newbitmaps/lib/pixcontrol.py
@@ -0,0 +1,102 @@
+#!/usr/bin/python -tt
+# 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.
+
+"""Edit buttons for bmpblock object"""
+
+import wx
+
+class Frame(wx.Frame):
+
+ def __init__(self, bmpblock=None, title=None):
+ wx.Frame.__init__(self, None, wx.ID_ANY, title, size=(200,400))
+ menuFile = wx.Menu()
+ m_about = menuFile.Append(wx.ID_ANY, "About...\tCtrl+A")
+ menuFile.AppendSeparator()
+ m_reload = menuFile.Append(wx.ID_ANY, "Reload\tCtrl+R")
+ m_quit = menuFile.Append(wx.ID_ANY, "Quit\tCtrl+Q")
+ menuBar = wx.MenuBar()
+ menuBar.Append(menuFile, "&File")
+ self.SetMenuBar(menuBar)
+ self.CreateStatusBar()
+ self.Bind(wx.EVT_MENU, self.OnAbout, m_about)
+ self.Bind(wx.EVT_MENU, self.OnReload, m_reload)
+ self.Bind(wx.EVT_MENU, self.OnQuit, m_quit)
+ self.Bind(wx.EVT_CLOSE, self.OnQuit)
+
+ acctbl = wx.AcceleratorTable([
+ (wx.ACCEL_CTRL, ord('A'), m_about.GetId()),
+ (wx.ACCEL_CTRL, ord('R'), m_reload.GetId()),
+ (wx.ACCEL_CTRL, ord('Q'), m_quit.GetId())
+ ])
+
+ self.SetAcceleratorTable(acctbl)
+
+ # create UI components
+ panel = wx.Panel(self)
+ button_reload = wx.Button(panel, label="Reload File")
+ self.screenlist = wx.ListBox(panel, wx.ID_ANY)
+
+ # connect events
+ self.Bind(wx.EVT_BUTTON, self.OnReload, button_reload)
+ self.Bind(wx.EVT_LISTBOX, self.OnSelected, self.screenlist)
+ self.Bind(wx.EVT_IDLE, self.OnIdle)
+
+ # place the componenents
+ sizer = wx.BoxSizer(wx.VERTICAL)
+ sizer.Add(button_reload)
+ sizer.Add(wx.StaticText(panel, wx.ID_ANY, "Screens"))
+ sizer.Add(self.screenlist, 1, wx.EXPAND)
+
+ panel.SetSizer(sizer)
+ panel.Fit()
+
+ # now, what are we looking at?
+ self.bmpblock = bmpblock
+ self.UpdateControls()
+ self.do_update = True
+ self.screenlist.SetFocus()
+
+ def OnAbout(self, event):
+ """Display basic information about this application."""
+ msg = ("Yes, all this does right now is display the screens from the config"
+ " file. You still have to edit, save, and reload in order to see any"
+ " changes. Learning python and wxpython is my 20% project (actually"
+ " it's more like 5%). Feel free to improve things.\n\t-- bill")
+ wx.MessageBox(msg, "About", wx.OK | wx.ICON_INFORMATION, self)
+
+ def OnQuit(self, event):
+ """Close all application windows and quit."""
+ wx.GetApp().ExitMainLoop()
+
+ def OnReload(self, event):
+ """Tell the model object to refresh the view that the user sees.
+ FIXME: The model itself should know to do this without being told.
+ """
+ self.bmpblock.Reload()
+ self.do_update = True;
+ self.UpdateControls()
+
+ def OnSelected(self, event):
+ """User may have picked one of the pulldowns."""
+ if event.IsSelection():
+ self.bmpblock.current_screen = event.GetString()
+ self.do_update = True
+ event.Skip()
+
+ def UpdateControls(self):
+ """Reload all the buttons with the current model information."""
+ screens = self.bmpblock.yaml["screens"]
+ self.screenlist.Clear()
+ self.screenlist.AppendItems(sorted(screens.keys()))
+ current = self.bmpblock.current_screen
+ self.screenlist.SetStringSelection(current)
+ self.SetStatusText(self.bmpblock.filename)
+
+ def OnIdle(self, event=None):
+ """What to do, what to do..."""
+ if self.do_update:
+ # FIXME: The model should know when to do this itself, right?
+ self.bmpblock.Redisplay()
+ self.do_update = False
diff --git a/scripts/newbitmaps/lib/pixdisplay.py b/scripts/newbitmaps/lib/pixdisplay.py
new file mode 100755
index 00000000..0d40580b
--- /dev/null
+++ b/scripts/newbitmaps/lib/pixdisplay.py
@@ -0,0 +1,62 @@
+#!/usr/bin/python -tt
+# 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.
+
+"""Display for bmpblock object."""
+import wx
+
+class MyPanel(wx.Panel):
+
+ def __init__(self, parent):
+ wx.Panel.__init__(self, parent, wx.ID_ANY)
+ self.Bind(wx.EVT_PAINT, self.OnPaint)
+ self.parent = parent
+ self.imglist = ()
+
+ def OnPaint(self, evt=None):
+ if (evt):
+ dc = wx.PaintDC(self)
+ else:
+ dc = wx.ClientDC(self)
+
+ done_first = False
+ # The first image in the sequence may be used by the BIOS to set the
+ # display resolution. Regardless, it should match the desired or default
+ # resolution so that any previous screens get cleared.
+ for x, y, filename in self.imglist:
+ img = wx.Image(filename, wx.BITMAP_TYPE_ANY)
+ if (not done_first):
+ size = img.GetSize()
+ self.SetMinSize(size)
+ self.SetSize(size)
+ self.Fit()
+ w,h = self.parent.GetBestSize()
+ self.parent.SetDimensions(-1, -1, w, h, wx.SIZE_AUTO)
+ done_first = True
+ bmp = img.ConvertToBitmap()
+ dc.DrawBitmap(bmp, x, y)
+
+
+class Frame(wx.Frame):
+
+ def __init__(self, bmpblock=None, title=None):
+ wx.Frame.__init__(self, None, wx.ID_ANY, title=title)
+ self.CreateStatusBar()
+ self.SetStatusText(title)
+ self.Bind(wx.EVT_CLOSE, self.OnQuit)
+
+ self.bmpblock = bmpblock
+ if self.bmpblock:
+ self.bmpblock.RegisterScreenDisplayObject(self)
+
+ self.p = MyPanel(self)
+
+
+ def OnQuit(self, event):
+ wx.GetApp().ExitMainLoop()
+
+ def DisplayScreen(self, name, imglist):
+ self.SetStatusText(name)
+ self.p.imglist = imglist
+ self.p.OnPaint()
diff --git a/scripts/newbitmaps/strings/README b/scripts/newbitmaps/strings/README
new file mode 100644
index 00000000..4b7c1931
--- /dev/null
+++ b/scripts/newbitmaps/strings/README
@@ -0,0 +1,3 @@
+These text files and the text_to_bmp script are here for reference only, to
+give an idea of the messages we're trying to convey. Real linguists and
+graphic artists will probably sneer at these.
diff --git a/scripts/newbitmaps/strings/de_devmode_text.txt b/scripts/newbitmaps/strings/de_devmode_text.txt
new file mode 100644
index 00000000..ff9036f2
--- /dev/null
+++ b/scripts/newbitmaps/strings/de_devmode_text.txt
@@ -0,0 +1,3 @@
+Die Überprüfung von Chrome OS ist deaktiviert.
+Drücken Sie die Leertaste,
+um mit der Wiederherstellung zu beginnen.
diff --git a/scripts/newbitmaps/strings/de_insert_text.txt b/scripts/newbitmaps/strings/de_insert_text.txt
new file mode 100644
index 00000000..225120ab
--- /dev/null
+++ b/scripts/newbitmaps/strings/de_insert_text.txt
@@ -0,0 +1,2 @@
+Chrome OS ist nicht vorhanden oder beschädigt
+Bitte schließen Sie ein Wiederherstellungsgerät an.
diff --git a/scripts/newbitmaps/strings/de_model.txt b/scripts/newbitmaps/strings/de_model.txt
new file mode 100644
index 00000000..9bedd1f4
--- /dev/null
+++ b/scripts/newbitmaps/strings/de_model.txt
@@ -0,0 +1 @@
+Modell:
diff --git a/scripts/newbitmaps/strings/de_remove_text.txt b/scripts/newbitmaps/strings/de_remove_text.txt
new file mode 100644
index 00000000..2c7c7f1e
--- /dev/null
+++ b/scripts/newbitmaps/strings/de_remove_text.txt
@@ -0,0 +1,2 @@
+Bitte entfernen Sie sämtliche USB- und SD-Geräte,
+um mit der Wiederherstellung zu beginnen.
diff --git a/scripts/newbitmaps/strings/de_yuck_text.txt b/scripts/newbitmaps/strings/de_yuck_text.txt
new file mode 100644
index 00000000..5a65325e
--- /dev/null
+++ b/scripts/newbitmaps/strings/de_yuck_text.txt
@@ -0,0 +1,2 @@
+Das angeschlossene Gerät enthält kein Chrome OS.
+Bitte versuchen Sie ein anderes.
diff --git a/scripts/newbitmaps/strings/en_devmode_text.txt b/scripts/newbitmaps/strings/en_devmode_text.txt
new file mode 100644
index 00000000..b1d4c04a
--- /dev/null
+++ b/scripts/newbitmaps/strings/en_devmode_text.txt
@@ -0,0 +1,2 @@
+Chrome OS verification is turned off.
+Press space to begin recovery.
diff --git a/scripts/newbitmaps/strings/en_insert_text.txt b/scripts/newbitmaps/strings/en_insert_text.txt
new file mode 100644
index 00000000..c110cf53
--- /dev/null
+++ b/scripts/newbitmaps/strings/en_insert_text.txt
@@ -0,0 +1,2 @@
+Chrome OS is missing or damaged.
+Please connect a recovery device.
diff --git a/scripts/newbitmaps/strings/en_model.txt b/scripts/newbitmaps/strings/en_model.txt
new file mode 100644
index 00000000..ea345b8b
--- /dev/null
+++ b/scripts/newbitmaps/strings/en_model.txt
@@ -0,0 +1 @@
+Model:
diff --git a/scripts/newbitmaps/strings/en_remove_text.txt b/scripts/newbitmaps/strings/en_remove_text.txt
new file mode 100644
index 00000000..6925289f
--- /dev/null
+++ b/scripts/newbitmaps/strings/en_remove_text.txt
@@ -0,0 +1 @@
+Please remove all USB and SD devices to begin recovery.
diff --git a/scripts/newbitmaps/strings/en_yuck_text.txt b/scripts/newbitmaps/strings/en_yuck_text.txt
new file mode 100644
index 00000000..6957bf4f
--- /dev/null
+++ b/scripts/newbitmaps/strings/en_yuck_text.txt
@@ -0,0 +1 @@
+The device you inserted does not contain Chrome OS. Try another?
diff --git a/scripts/newbitmaps/strings/es_devmode_text.txt b/scripts/newbitmaps/strings/es_devmode_text.txt
new file mode 100644
index 00000000..90db0285
--- /dev/null
+++ b/scripts/newbitmaps/strings/es_devmode_text.txt
@@ -0,0 +1,2 @@
+La verificación del systema operativo esta apagada.
+Presione la barra de espacio para empezar el recobro del systema.
diff --git a/scripts/newbitmaps/strings/es_insert_text.txt b/scripts/newbitmaps/strings/es_insert_text.txt
new file mode 100644
index 00000000..f9eddc5d
--- /dev/null
+++ b/scripts/newbitmaps/strings/es_insert_text.txt
@@ -0,0 +1,2 @@
+El systema operativo de Chrome falta o esta dañado.
+Por favor conecte un dispositivo de recobro del systema.
diff --git a/scripts/newbitmaps/strings/es_model.txt b/scripts/newbitmaps/strings/es_model.txt
new file mode 100644
index 00000000..f8bbe4af
--- /dev/null
+++ b/scripts/newbitmaps/strings/es_model.txt
@@ -0,0 +1 @@
+Modelo:
diff --git a/scripts/newbitmaps/strings/es_remove_text.txt b/scripts/newbitmaps/strings/es_remove_text.txt
new file mode 100644
index 00000000..a79aa734
--- /dev/null
+++ b/scripts/newbitmaps/strings/es_remove_text.txt
@@ -0,0 +1 @@
+Por favor quite todos los USB y SD para comenzar la recuperación del systema.
diff --git a/scripts/newbitmaps/strings/es_yuck_text.txt b/scripts/newbitmaps/strings/es_yuck_text.txt
new file mode 100644
index 00000000..89de7240
--- /dev/null
+++ b/scripts/newbitmaps/strings/es_yuck_text.txt
@@ -0,0 +1,2 @@
+El dispositivo que ha insertado no contiene es systema operativo de Chrome.
+¿Desea probar otro?
diff --git a/scripts/newbitmaps/strings/fr_devmode_text.txt b/scripts/newbitmaps/strings/fr_devmode_text.txt
new file mode 100644
index 00000000..32333fc5
--- /dev/null
+++ b/scripts/newbitmaps/strings/fr_devmode_text.txt
@@ -0,0 +1,2 @@
+La vérification de Chrome OS est désactivée.
+Tappez la touche "espace" pour commencer la réparation.
diff --git a/scripts/newbitmaps/strings/fr_insert_text.txt b/scripts/newbitmaps/strings/fr_insert_text.txt
new file mode 100644
index 00000000..09ad73a6
--- /dev/null
+++ b/scripts/newbitmaps/strings/fr_insert_text.txt
@@ -0,0 +1,2 @@
+Chrome OS est absent ou corrompu.
+Veuillez insérer un périphérique de réparation.
diff --git a/scripts/newbitmaps/strings/fr_model.txt b/scripts/newbitmaps/strings/fr_model.txt
new file mode 100644
index 00000000..53ab8599
--- /dev/null
+++ b/scripts/newbitmaps/strings/fr_model.txt
@@ -0,0 +1 @@
+Modèle:
diff --git a/scripts/newbitmaps/strings/fr_remove_text.txt b/scripts/newbitmaps/strings/fr_remove_text.txt
new file mode 100644
index 00000000..98f55608
--- /dev/null
+++ b/scripts/newbitmaps/strings/fr_remove_text.txt
@@ -0,0 +1 @@
+Enlevez tous les périphériques USB et SD pour commencer la réparation.
diff --git a/scripts/newbitmaps/strings/fr_yuck_text.txt b/scripts/newbitmaps/strings/fr_yuck_text.txt
new file mode 100644
index 00000000..1c50b067
--- /dev/null
+++ b/scripts/newbitmaps/strings/fr_yuck_text.txt
@@ -0,0 +1,2 @@
+Le périphérique que vous avez inséré ne contient pas Chrome OS.
+Essayez un autre?
diff --git a/scripts/newbitmaps/strings/hwid.txt b/scripts/newbitmaps/strings/hwid.txt
new file mode 100644
index 00000000..aff8c801
--- /dev/null
+++ b/scripts/newbitmaps/strings/hwid.txt
@@ -0,0 +1 @@
+DANGER! UNOFFICIAL BIOS!
diff --git a/scripts/newbitmaps/strings/text_to_bmp b/scripts/newbitmaps/strings/text_to_bmp
new file mode 100755
index 00000000..e0c77b99
--- /dev/null
+++ b/scripts/newbitmaps/strings/text_to_bmp
@@ -0,0 +1,53 @@
+#!/bin/bash -e
+# 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.
+#
+# Render a text file into a bitmap.
+#
+
+# Image parameters
+bg='#607c91'
+bluecolor='#9ccaec'
+bluefont="Helvetica-Narrow"
+bluepointsize=19
+whitefont="Helvetica-Narrow"
+whitepointsize=30
+
+
+tmpdir=$(mktemp -d /tmp/tmp.bmp.XXXXXX)
+trap "rm -rf $tmpdir" EXIT
+label_file="${tmpdir}/label.txt"
+
+for txtfile in $*; do
+ bmpfile="${txtfile%.*}".bmp
+ perl -p -e 'BEGIN{ $/=undef; }' \
+ -e 's/^\s+//s;' -e 's/\s+$//s;' \
+ "$txtfile" > "$label_file"
+
+ case "$txtfile" in
+ *.txt)
+ convert \
+ -background "$bg" -fill "$bluecolor" \
+ -font "$bluefont" -pointsize "$bluepointsize" \
+ -bordercolor "$bg" -border 0x1 -gravity Center \
+ label:'@'"$label_file" \
+ -colors 256 -compress none -alpha off \
+ "$bmpfile"
+ echo "wrote $bmpfile"
+ ;;
+ *.TXT)
+ convert \
+ -background "$bg" -fill "white" \
+ -font "$whitefont" -pointsize "$whitepointsize" \
+ -bordercolor "$bg" -border 0x10 -gravity Center \
+ label:'@'"$label_file" \
+ -colors 256 -compress none -alpha off \
+ "$bmpfile"
+ echo "wrote $bmpfile"
+ ;;
+ *)
+ echo "Ignoring $txtfile. Filname should end with .txt or .TXT"
+ ;;
+ esac
+done
diff --git a/scripts/newbitmaps/strings/url.TXT b/scripts/newbitmaps/strings/url.TXT
new file mode 100644
index 00000000..3ff970c7
--- /dev/null
+++ b/scripts/newbitmaps/strings/url.TXT
@@ -0,0 +1 @@
+http://google.com/chromeos/recovery