123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- /*
- * GRUB -- GRand Unified Bootloader
- * Copyright (C) 2003,2007,2008,2009 Free Software Foundation, Inc.
- *
- * GRUB is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GRUB is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
- */
- #ifndef GRUB_FONT_HEADER
- #define GRUB_FONT_HEADER 1
- #include <grub/types.h>
- #include <grub/video.h>
- #include <grub/file.h>
- /* Forward declaration of opaque structure grub_font.
- Users only pass struct grub_font pointers to the font module functions,
- and do not have knowledge of the structure contents. */
- struct grub_font;
- /* Font type used to access font functions. */
- typedef struct grub_font *grub_font_t;
- struct grub_font_node
- {
- struct grub_font_node *next;
- grub_font_t value;
- };
- /* Global font registry. */
- extern struct grub_font_node *grub_font_list;
- struct grub_font_glyph
- {
- /* Reference to the font this glyph belongs to. */
- grub_font_t font;
- /* Glyph bitmap width in pixels. */
- grub_uint16_t width;
- /* Glyph bitmap height in pixels. */
- grub_uint16_t height;
- /* Glyph bitmap x offset in pixels. Add to screen coordinate. */
- grub_int16_t offset_x;
- /* Glyph bitmap y offset in pixels. Subtract from screen coordinate. */
- grub_int16_t offset_y;
- /* Number of pixels to advance to start the next character. */
- grub_uint16_t device_width;
- /* Row-major order, packed bits (no padding; rows can break within a byte).
- The length of the array is (width * height + 7) / 8. Within a
- byte, the most significant bit is the first (leftmost/uppermost) pixel.
- Pixels are coded as bits, value 1 meaning of opaque pixel and 0 is
- transparent. If the length of the array does not fit byte boundary, it
- will be padded with 0 bits to make it fit. */
- grub_uint8_t bitmap[0];
- };
- /* Initialize the font loader.
- Must be called before any fonts are loaded or used. */
- void grub_font_loader_init (void);
- /* Load a font and add it to the beginning of the global font list.
- Returns: 0 upon success; nonzero upon failure. */
- int grub_font_load (const char *filename);
- /* Get the font that has the specified name. Font names are in the form
- "Family Name Bold Italic 14", where Bold and Italic are optional.
- If no font matches the name specified, the most recently loaded font
- is returned as a fallback. */
- grub_font_t grub_font_get (const char *font_name);
- const char *grub_font_get_name (grub_font_t font);
- int grub_font_get_max_char_width (grub_font_t font);
- int grub_font_get_max_char_height (grub_font_t font);
- int grub_font_get_ascent (grub_font_t font);
- int grub_font_get_descent (grub_font_t font);
- int grub_font_get_leading (grub_font_t font);
- int grub_font_get_height (grub_font_t font);
- int grub_font_get_code_width (grub_font_t font, const char *str,
- const char **end);
- int grub_font_get_string_width (grub_font_t font, const char *str);
- struct grub_font_glyph *grub_font_get_glyph (grub_font_t font,
- grub_uint32_t code);
- struct grub_font_glyph *grub_font_get_glyph_with_fallback (grub_font_t font,
- grub_uint32_t code);
- grub_err_t grub_font_draw_glyph (struct grub_font_glyph *glyph,
- grub_video_color_t color,
- int left_x, int baseline_y);
- grub_err_t grub_font_draw_string (const char *str, grub_font_t font,
- grub_video_color_t color,
- int left_x, int baseline_y);
- #endif /* ! GRUB_FONT_HEADER */
|