[FFmpeg-cvslog] r24296 - in trunk/libavcodec: cga_data.c cga_data.h

pross subversion
Sun Jul 18 09:44:38 CEST 2010


Author: pross
Date: Sun Jul 18 09:44:38 2010
New Revision: 24296

Log:
Add ff_draw_pc_font()

Modified:
   trunk/libavcodec/cga_data.c
   trunk/libavcodec/cga_data.h

Modified: trunk/libavcodec/cga_data.c
==============================================================================
--- trunk/libavcodec/cga_data.c	Sun Jul 18 09:42:15 2010	(r24295)
+++ trunk/libavcodec/cga_data.c	Sun Jul 18 09:44:38 2010	(r24296)
@@ -19,6 +19,7 @@
  */
 
 #include <stdint.h>
+#include "cga_data.h"
 
 const uint8_t ff_cga_font[2048] = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0xbd, 0x99, 0x81, 0x7e,
@@ -425,3 +426,14 @@ const uint32_t ff_ega_palette[64] = {
     0x555500, 0x5555AA, 0x55FF00, 0x55FFAA, 0xFF5500, 0xFF55AA, 0xFFFF00, 0xFFFFAA,
     0x555555, 0x5555FF, 0x55FF55, 0x55FFFF, 0xFF5555, 0xFF55FF, 0xFFFF55, 0xFFFFFF
 };
+
+void ff_draw_pc_font(uint8_t *dst, int linesize, const uint8_t *font, int font_height, int ch, int fg, int bg)
+{
+    int char_y, mask;
+    for (char_y = 0; char_y < font_height; char_y++) {
+        for (mask = 0x80; mask; mask >>= 1) {
+            *dst++ = font[ch * font_height + char_y] & mask ? fg : bg;
+        }
+        dst += linesize - 8;
+    }
+}

Modified: trunk/libavcodec/cga_data.h
==============================================================================
--- trunk/libavcodec/cga_data.h	Sun Jul 18 09:42:15 2010	(r24295)
+++ trunk/libavcodec/cga_data.h	Sun Jul 18 09:44:38 2010	(r24296)
@@ -28,4 +28,16 @@ extern const uint8_t ff_vga16_font[4096]
 extern const uint32_t ff_cga_palette[16];
 extern const uint32_t ff_ega_palette[64];
 
+/**
+ * Draw CGA/EGA/VGA font to 8-bit pixel buffer
+ *
+ * @param dst Destination pixel buffer
+ * @param linesize Linesize (pixels)
+ * @param font Font table. We assume font width is always 8 pixels wide.
+ * @param font_height Font height (pixels)
+ * @param fg,bg Foreground and background palette index
+ * @param ch Character to draw
+ */
+void ff_draw_pc_font(uint8_t *dst, int linesize, const uint8_t *font, int font_height, int ch, int fg, int bg);
+
 #endif



More information about the ffmpeg-cvslog mailing list