From a36ee8740ec26d333ec9480f8124b67ad7aaa6d4 Mon Sep 17 00:00:00 2001 From: Bill Richardson Date: Thu, 25 Aug 2011 11:01:48 -0700 Subject: [PATCH] Scale the HWID font to match the rest of the text. BUG=chromium-os:18631 TEST=manual Boot to recovery mode screen. HWID should be the same size and shape as the rest of the text. Change-Id: Iee0b0611c1319a304d911b710dd7f35ef999a1eb Reviewed-on: http://gerrit.chromium.org/gerrit/6667 Reviewed-by: Randall Spangler Tested-by: Bill Richardson --- scripts/newbitmaps/README | 106 +++++++++++++------- scripts/newbitmaps/fonts/make_ascii_bmps.py | 2 + scripts/newbitmaps/images/Makefile | 36 ++++--- scripts/newbitmaps/images/hwid_fonts.bin | Bin 66136 -> 58196 bytes scripts/newbitmaps/images/make_default_yaml | 13 +++ scripts/newbitmaps/lib/bmpblock.py | 1 - 6 files changed, 105 insertions(+), 53 deletions(-) diff --git a/scripts/newbitmaps/README b/scripts/newbitmaps/README index 728d42f21e..d605077799 100644 --- a/scripts/newbitmaps/README +++ b/scripts/newbitmaps/README @@ -71,56 +71,85 @@ image name. For example: en The old v1.1 bmpblock will be accepted by the vboot wrapper, but a $HWID -screen without a corresponding font will be silently ignored. +screen without a corresponding font should be silently ignored. -Instructions: +-------------------------------------------- +Instructions for manually rebuilding things: -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. +We do most of the image manipulation using ImageMagick, which is much easier +and simpler to do OUTSIDE of the chroot. So the first step is to just build +vboot_reference outside of the chroot. -* First, get the bitmap_viewer working. This is best done OUTSIDE of the - chroot. Test it by changing to the scripts/newbitmaps/images/16x9_generic - directory and running "../../bitmap_viewer DEFAULT.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. + cd src/platform/vboot_reference + make -* Now make changes to the DEFAULT.yaml config file, and use bitmap_viewer to - see how the layout looks. Hit Ctrl-R in the small window to reload the - config file without restarting. +You'll probably need to install several additional packages to make this +work. In addition, scripts/newbitmaps/bitmap_viewer is a python script that +may require some packages of its own. Test it by changing to the +scripts/newbitmaps/images directory and running -* The bitmap_viewer tool 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: + ../bitmap_viewer DEFAULT.yaml - convert IN.bmp -colors 256 -compress none -alpha off OUT.bmp +On Ubuntu you may find you need libtspi-dev, uuid-dev, imagemagick, +python-yaml, and python-wxgtk2.8, among others. -* When you have the screens tweaked to your satisfaction, generate the - binary bmpblock to embed into the BIOS. - bmpblk_utility -c DEFAULT.yaml bmpblock.bin +Once you've built vboot_reference you'll find the executables in +./build/utility/ (and ./build/cgpt/cgpt, if you want it). Put these +somewhere in your $PATH. -* Use the gbb_utility to modify the BIOS to contain this new set of bitmaps. - NOTE: These commands are run (as root) on the device under test! +Create the font file: - NOTE: This will only work if the BIOS write-protection is disabled! + cd scripts/newbitmaps/fonts + ./make_ascii_bmps.py + bmpblk_font --outfile ../images/hwid_fonts.bin outdir/* - Copy our new bmpblock over. +Create and examine the localized images: + +For x86: + + cd scripts/newbitmaps/images + make x86 + cd out_x86 + ../../bitmap_viewer DEFAULT.yaml + bmpblock_utility -c DEFAULT.yaml bmpblock.bin + +For arm: + + cd scripts/newbitmaps/images + make arm + cd out_arm + ../../bitmap_viewer DEFAULT.yaml + bmpblock_utility -c DEFAULT.yaml bmpblock.bin + + +Now use the gbb_utility to modify your BIOS to contain this new set of +bitmaps: + + gbb_utility -s -b PATH/TO/YOUR/bmpblock.bin OLDBIOS.bin NEWBIOS.bin + + + +You can do that last step on the chromebook device itself, provided that the +BIOS write-protection is disabled. gbb_utility should be in the rootfs: + + Become root: + + sudo bash + + Copy your new bmpblock over: cd /mnt/stateful_partition scp USER@SOMEHOST:/SOMEPATH/bmpblock.bin . - Get a copy of the current BIOS. + Get a copy of the current BIOS: flashrom -p internal:bus=spi -r bios.bin - Put the new bmpblock in the copy of the BIOS + Put the new bmpblock in the copy of the BIOS: gbb_utility -s -b bmpblock.bin bios.bin @@ -128,19 +157,20 @@ composited screens as described by the config file. flashrom -p internal:bus=spi -w bios.bin -* Reboot. You should see your new bitmaps appear whenever the BIOS screens + 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 +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 -y bmpblock.bin + bmpblk_utility bmpblock.bin - bmpblk_utility -x -d /SOME/SCRATCH/DIR bmpblock.bin + bmpblk_utility -y bmpblock.bin - Once you've unpacked it you can use the bitmap_viewer on the unpacked yaml - file to see what it looks like. There's not (yet) a single tool that - directly displays the raw binary. + bmpblk_utility -x -d /SOME/SCRATCH/DIR bmpblock.bin + +Once you've unpacked it you can use the bitmap_viewer on the unpacked +config.yaml file to see what it looks like. There's not (yet) a single tool +that directly displays the raw binary. diff --git a/scripts/newbitmaps/fonts/make_ascii_bmps.py b/scripts/newbitmaps/fonts/make_ascii_bmps.py index df6083e18d..1c626d567a 100755 --- a/scripts/newbitmaps/fonts/make_ascii_bmps.py +++ b/scripts/newbitmaps/fonts/make_ascii_bmps.py @@ -70,6 +70,8 @@ def main(): '-border', '0x3', '-gravity', 'Center', '-pointsize', options.size, + '-resize', '120%x100', # Yes, magic. + '-scale', '59%x78%', # Here, too. 'label:%s' % ascii, '-remap', gradient_file, '-compress', 'none', diff --git a/scripts/newbitmaps/images/Makefile b/scripts/newbitmaps/images/Makefile index fe2be48265..2c8571af89 100644 --- a/scripts/newbitmaps/images/Makefile +++ b/scripts/newbitmaps/images/Makefile @@ -12,6 +12,9 @@ TARGETS=x86 arm +DEFAULT_LOCALES=en fr es it de nl + + BASE_IMAGES=Devmode.bmp Insert.bmp Remove.bmp Yuck.bmp OTHER_IMAGES=Url.bmp hwid_unknown.bmp FONTS=hwid_fonts.bin @@ -48,18 +51,20 @@ x86:: done # copy stuff we need cp "${FONTS}" "out_$@" - # scale the background pictures exactly - for i in ${BASE_IMAGES}; do \ + # scale the background pictures exactly... + @for i in ${BASE_IMAGES}; do \ + echo " out_$@/$$i"; \ convert $$i -scale "${_x86_max}" "out_$@/$$i"; \ done - # scale the localized string images using percentages - for i in ${OTHER_IMAGES} localized_images/*/*.bmp; do \ + # scale the localized string images using percentages... + @for i in ${OTHER_IMAGES} localized_images/*/*.bmp; do \ + echo " out_$@/$$i"; \ convert $$i -scale "${_x86_scale}" "out_$@/$$i"; \ done # produce the new yaml - cd "out_$@" && ../make_default_yaml - # Note: hand-edit the new DEFAULT.yaml to select the shipping locales, - # then use bmpblk_utility to create the binary. + cd "out_$@" && ../make_default_yaml ${DEFAULT_LOCALES} + # Note: manually use bmpblk_utility to create the binary from out_$@ + arm:: @@ -74,20 +79,23 @@ arm:: -colors 256 -unique-colors "out_$@/base_cmap.png" convert localized_images/*/*.bmp -append \ -colors 256 -unique-colors "out_$@/loc_cmap.png" - # scale the background pictures exactly - for i in ${BASE_IMAGES}; do \ + # scale the background pictures exactly... + @for i in ${BASE_IMAGES}; do \ + echo " out_$@/$$i"; \ convert $$i -scale "${_arm_max}" \ -remap "out_$@/base_cmap.png" "out_$@/$$i"; \ done - # scale the localized string images using percentages - for i in ${OTHER_IMAGES} localized_images/*/*.bmp; do \ + # scale the localized string images using percentages... + @for i in ${OTHER_IMAGES} localized_images/*/*.bmp; do \ + echo " out_$@/$$i"; \ convert $$i -scale "${_arm_scale}" \ -remap "out_$@/loc_cmap.png" "out_$@/$$i"; \ done # produce the new yaml - cd "out_$@" && ../make_default_yaml - # Note: hand-edit the new DEFAULT.yaml to select the shipping locales, - # then use bmpblk_utility to create the binary. + cd "out_$@" && ../make_default_yaml ${DEFAULT_LOCALES} + perl -i -p -e 's/^compression:.*/compression: 2/;' "out_$@/DEFAULT.yaml" + # Note: manually use bmpblk_utility to create the binary from out_$@ + diff --git a/scripts/newbitmaps/images/hwid_fonts.bin b/scripts/newbitmaps/images/hwid_fonts.bin index ecdfaef6a0788e3f0df481f208c3f346aaf25312..b2832fd80917f0e21fc1d89fa1b38eb25d5635bd 100644 GIT binary patch literal 58196 zcmeHQiCa`hwm*4anwAC|1VJO9xPUA%4`ak&6a>X6(4dXdAc;u#1yMn5Woe1ONO zG#a`EToV%$GuhXfOlHY!nf+znyf<%u^Y(rF-uM25ch0HXi}?&f#%<=SV@};uRi_r} zOa1!Xs&lJ$*46GS003elJ@OLdhbV&de-8^Lxx)0n7$YjiXC6MI+6y@SV+>Og1alQw zP0)D=LN4M~IPWI5!W8kK6{eYOFzvCy46#>%3&cYTTx4#8OT%q&dAJ=ekF>)T;?cu! zm3XWJo+tKozzfVr;F@{_Ui2S@mx#xY!FA#QaVNY?JkbfS5TEUW8_2JoI}TrYj`#$; zHhBVGpF9b#2T#Hq#34JpNqpW8Z=F8{Z%v(ox0z4FJ5$Khr{Ue{Zg_X58{Q+nK->fG z6JP9s4=(n?hnI-^;H#JW;A>YL@X=M`Gw^ld=g+{$%>D533;pm7;%fu&P2_LA=!9>- z^m)-DP;#UUYd&D;e;rll{@Pk)9@ab2)@I&I)hTuoUuM-c$kBQ$H zhMzExz)#;CfuFrK3O|3FcntpFoiX_A9Upx5t`B~}timteQ{fMZ-&f(6@B87GANb*q zn8)FdKS2I)9Dem-0Dkq=0Q?E@*Cyaki9ecvKl|t`{Q1|3&%s}Od=CEd8_&UC5r1O8UBm;3jFuah_Ax`{QN5a|0;vu zr4i6G9zjxlcKvGnyA1W-V+3UdwwdlyM5>MTXX;B6F(IXGB>|U!FBWbcWNXQB_?$Z? zMztj-N=%fPc0ph)X>JU(MFu|@|#OjKd2(xkAR7}XY-xESq1X(viMQQC=O z#>nsvjDWD|u%h^_wgZoe3iT$nv)>~kt31{E)22 zWU8Aeo#hPmah4red#1Xcp@@NPe=$UcKfD^;RX^hzgJbQ8A684 zg1i(>obQ8M#6pCdv3NWCdwEn_;H`Wwm+$5By?nlNPwIbu1j?#~Vb^XKPn-5^x08hj zVAGz_d`{PK{-WGR`$&Jq3I7$=ODpq=^1AAFQQx8!pKtM2aYkg!h+36GOWL4vtx~R4 z-fG6kw0kiEI?&;N)KY@Et)mV9%Obh^vfu0Xj}=me#g(o@A`#ZOEa@yzu-SFIKqLd` zR(Fh<7lpGDDm)g>S(J)dyS!^C!~84;S$?(-%^qx~@GRF~;B8yKxwjiNQMbbF_xEx# zVr5ogenz+f%AE&o&~zo<%Do}EH#ColBUSJA2+(E=Q|i;U=B)xV7ag8(xl}V}m8)C9 zU>c_FATV`e{%Y|KpFwZ_na^$HvH*)Rn}rU>ZO>gaYsqm>HMyF3y&!XAA{d?;TT2;F zy72L+$~)$nu8#E^J6!z!4_jTT>e?#G#$^^1WJY?Y)i=k-6PljHTZy+4Z|68^q}sh6 zfyZjm(?_G7L%1eNgtqO|L%i6Tysfsj_H?L$7D3ZpAyu7uiPu;Yl;c@xwJMvju;z3H z>Wi|v^4_el49Tt5+Hjqa-a8bLVPi$Sxc|H@Zs-inQ&jTz9mJbWii9l9F6*YoYT(C^U1FP!jFvqN4nw z@pj(RM;5qyBM`yc#B%F1>qRWSHsEpvwsWI7o^nWfhMWfgws$81 z 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 literal 66136 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 + exit 1 + fi + done + locales="$*" +fi + + # Arbitrary padding ypad=5 xpad=10 diff --git a/scripts/newbitmaps/lib/bmpblock.py b/scripts/newbitmaps/lib/bmpblock.py index 539159bc19..bcad981c92 100755 --- a/scripts/newbitmaps/lib/bmpblock.py +++ b/scripts/newbitmaps/lib/bmpblock.py @@ -46,7 +46,6 @@ class BmpBlock(object): """Raise an error if the specified dict is not a valid BmpBlock structure""" assert isinstance(thing, dict) - assert thing["bmpblock"] == 1.0 or thing["bmpblock"] == 1.1 seen_images = {"$HWID":1, "$HWID.rtol":2} seen_screens = {}