summaryrefslogtreecommitdiff
path: root/firmware/lib/include/bmpblk_font.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/lib/include/bmpblk_font.h')
-rw-r--r--firmware/lib/include/bmpblk_font.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/firmware/lib/include/bmpblk_font.h b/firmware/lib/include/bmpblk_font.h
new file mode 100644
index 00000000..1ffaefda
--- /dev/null
+++ b/firmware/lib/include/bmpblk_font.h
@@ -0,0 +1,65 @@
+/* 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.
+ *
+ * This describes the internal format used to pack a set of character glpyhs so
+ * we can render strings by drawing one character at a time.
+ *
+ * The format is this:
+ *
+ * +-------------------------+
+ * | FontArrayHeader |
+ * +-------------------------+
+ * | FontArrayEntryHeader[0] |
+ * +-------------------------+
+ * | raw image data[0] |
+ * +-------------------------+
+ * | FontArrayEntryHeader[1] |
+ * +-------------------------+
+ * | raw image data[1] |
+ * +-------------------------+
+ * | FontArrayEntryHeader[2] |
+ * +-------------------------+
+ * | raw image data[2] |
+ * +-------------------------+
+ * ...
+ * +-------------------------+
+ * | FontArrayEntryHeader[n] |
+ * +-------------------------+
+ * | raw image data[n] |
+ * +-------------------------+
+ *
+ * The FontArrayHeader describes how many characters will be encoded.
+ * Each character encoding consists of a FontArrayEntryHeader followed
+ * immediately by the raw image data for that character.
+ */
+
+#ifndef VBOOT_REFERENCE_BMPBLK_FONT_H_
+#define VBOOT_REFERENCE_BMPBLK_FONT_H_
+
+#include "bmpblk_header.h"
+
+__pragma(pack(push, 1)) /* Support packing for MSVC. */
+
+#define FONT_SIGNATURE "FONT"
+#define FONT_SIGNATURE_SIZE 4
+
+typedef struct FontArrayHeader {
+ uint8_t signature[FONT_SIGNATURE_SIZE];
+ uint32_t num_entries; /* Number of chars encoded here. */
+} __attribute__((packed)) FontArrayHeader;
+
+typedef struct FontArrayEntryHeader {
+ uint32_t ascii; /* What to show. Could even be UTF? */
+ ImageInfo info; /* Describes the bitmap. */
+ /* The image to use follows immediately, NOT compressed. It's uncompressed
+ * because each glyph is only a few hundred bytes, but they have much in
+ * common (colormaps, for example). When we add the whole font blob to the
+ * bmpblk, it will be compressed as a single item there.
+ */
+} __attribute__((packed)) FontArrayEntryHeader;
+
+
+__pragma(pack(pop)) /* Support packing for MSVC. */
+
+#endif /* VBOOT_REFERENCE_BMPBLK_FONT_H_ */