font.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /*
  2. * File : font.h
  3. * This file is part of RT-Thread RTOS
  4. * COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
  5. *
  6. * The license and distribution terms for this file may be
  7. * found in the file LICENSE in this distribution or at
  8. * http://www.rt-thread.org/license/LICENSE
  9. *
  10. * Change Logs:
  11. * Date Author Notes
  12. * 2009-10-16 Bernard first version
  13. */
  14. #ifndef __RTGUI_FONT_H__
  15. #define __RTGUI_FONT_H__
  16. #include <rtgui/rtgui.h>
  17. #include <rtgui/list.h>
  18. struct rtgui_font;
  19. struct rtgui_dc;
  20. struct rtgui_rect;
  21. struct rtgui_font_engine
  22. {
  23. /* font engine function */
  24. void (*font_init)(struct rtgui_font* font);
  25. void (*font_load)(struct rtgui_font* font);
  26. void (*font_draw_text)(struct rtgui_font* font, struct rtgui_dc* dc, const rt_uint8_t* text,
  27. rt_ubase_t len, struct rtgui_rect* rect);
  28. void (*font_get_metrics)(struct rtgui_font* font, const rt_uint8_t* text, struct rtgui_rect* rect);
  29. };
  30. /*
  31. * bitmap font engine
  32. */
  33. /* bitmap font private data */
  34. struct rtgui_font_bitmap
  35. {
  36. /* bitmap data */
  37. const rt_uint8_t* bmp;
  38. rt_uint16_t width;
  39. rt_uint16_t height;
  40. rt_uint8_t first_char;
  41. rt_uint8_t last_char;
  42. };
  43. extern struct rtgui_font_engine bmp_font_engine;
  44. struct rtgui_font
  45. {
  46. /* font name */
  47. char* family;
  48. /* font height */
  49. rt_uint16_t height;
  50. /* refer count */
  51. rt_uint32_t refer_count;
  52. /* font engine */
  53. struct rtgui_font_engine* engine;
  54. /* font private data */
  55. void* data;
  56. /* the font list */
  57. rtgui_list_t list;
  58. };
  59. typedef struct rtgui_font rtgui_font_t;
  60. void rtgui_font_system_init(void);
  61. void rtgui_font_system_add_font(struct rtgui_font* font);
  62. void rtgui_font_system_remove_font(struct rtgui_font* font);
  63. struct rtgui_font* rtgui_font_default(void);
  64. void rtgui_font_set_defaut(struct rtgui_font* font);
  65. struct rtgui_font* rtgui_font_refer(const rt_uint8_t* family, rt_uint16_t height);
  66. void rtgui_font_derefer(struct rtgui_font* font);
  67. /* draw a text */
  68. void rtgui_font_draw(struct rtgui_font* font, struct rtgui_dc* dc, const rt_uint8_t* text, rt_ubase_t len, struct rtgui_rect* rect);
  69. int rtgui_font_get_string_width(struct rtgui_font* font, const rt_uint8_t* text);
  70. void rtgui_font_get_metrics(struct rtgui_font* font, const rt_uint8_t* text, struct rtgui_rect* rect);
  71. #endif