| Index: source/libvpx/vp9/common/vp9_textblit.c
|
| ===================================================================
|
| --- source/libvpx/vp9/common/vp9_textblit.c (revision 0)
|
| +++ source/libvpx/vp9/common/vp9_textblit.c (revision 0)
|
| @@ -0,0 +1,117 @@
|
| +/*
|
| + * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
|
| + *
|
| + * Use of this source code is governed by a BSD-style license
|
| + * that can be found in the LICENSE file in the root of the source
|
| + * tree. An additional intellectual property rights grant can be found
|
| + * in the file PATENTS. All contributing project authors may
|
| + * be found in the AUTHORS file in the root of the source tree.
|
| + */
|
| +
|
| +#include <stdlib.h>
|
| +
|
| +#include "vp9/common/vp9_textblit.h"
|
| +
|
| +void vp9_blit_text(const char *msg, unsigned char *address, const int pitch) {
|
| + int letter_bitmap;
|
| + unsigned char *output_pos = address;
|
| + int colpos;
|
| + const int font[] = {
|
| + 0x0, 0x5C00, 0x8020, 0xAFABEA, 0xD7EC0, 0x1111111, 0x1855740, 0x18000,
|
| + 0x45C0, 0x74400, 0x51140, 0x23880, 0xC4000, 0x21080, 0x80000, 0x111110,
|
| + 0xE9D72E, 0x87E40, 0x12AD732, 0xAAD62A, 0x4F94C4, 0x4D6B7, 0x456AA,
|
| + 0x3E8423, 0xAAD6AA, 0xAAD6A2, 0x2800, 0x2A00, 0x8A880, 0x52940, 0x22A20,
|
| + 0x15422, 0x6AD62E, 0x1E4A53E, 0xAAD6BF, 0x8C62E, 0xE8C63F, 0x118D6BF,
|
| + 0x1094BF, 0xCAC62E, 0x1F2109F, 0x118FE31, 0xF8C628, 0x8A89F, 0x108421F,
|
| + 0x1F1105F, 0x1F4105F, 0xE8C62E, 0x2294BF, 0x164C62E, 0x12694BF, 0x8AD6A2,
|
| + 0x10FC21, 0x1F8421F, 0x744107, 0xF8220F, 0x1151151, 0x117041, 0x119D731,
|
| + 0x47E0, 0x1041041, 0xFC400, 0x10440, 0x1084210, 0x820
|
| + };
|
| + colpos = 0;
|
| +
|
| + while (msg[colpos] != 0) {
|
| + char letter = msg[colpos];
|
| + int fontcol, fontrow;
|
| +
|
| + if (letter <= 'Z' && letter >= ' ')
|
| + letter_bitmap = font[letter - ' '];
|
| + else if (letter <= 'z' && letter >= 'a')
|
| + letter_bitmap = font[letter - 'a' + 'A' - ' '];
|
| + else
|
| + letter_bitmap = font[0];
|
| +
|
| + for (fontcol = 6; fontcol >= 0; fontcol--)
|
| + for (fontrow = 0; fontrow < 5; fontrow++)
|
| + output_pos[fontrow * pitch + fontcol] =
|
| + ((letter_bitmap >> (fontcol * 5)) & (1 << fontrow) ? 255 : 0);
|
| +
|
| + output_pos += 7;
|
| + colpos++;
|
| + }
|
| +}
|
| +
|
| +static void plot(const int x, const int y, unsigned char *image, const int pitch) {
|
| + image [x + y * pitch] ^= 255;
|
| +}
|
| +
|
| +/* Bresenham line algorithm */
|
| +void vp9_blit_line(int x0, int x1, int y0, int y1, unsigned char *image, const int pitch) {
|
| + int steep = abs(y1 - y0) > abs(x1 - x0);
|
| + int deltax, deltay;
|
| + int error, ystep, y, x;
|
| +
|
| + if (steep) {
|
| + int t;
|
| + t = x0;
|
| + x0 = y0;
|
| + y0 = t;
|
| +
|
| + t = x1;
|
| + x1 = y1;
|
| + y1 = t;
|
| + }
|
| +
|
| + if (x0 > x1) {
|
| + int t;
|
| + t = x0;
|
| + x0 = x1;
|
| + x1 = t;
|
| +
|
| + t = y0;
|
| + y0 = y1;
|
| + y1 = t;
|
| + }
|
| +
|
| + deltax = x1 - x0;
|
| + deltay = abs(y1 - y0);
|
| + error = deltax / 2;
|
| +
|
| + y = y0;
|
| +
|
| + if (y0 < y1)
|
| + ystep = 1;
|
| + else
|
| + ystep = -1;
|
| +
|
| + if (steep) {
|
| + for (x = x0; x <= x1; x++) {
|
| + plot(y, x, image, pitch);
|
| +
|
| + error = error - deltay;
|
| + if (error < 0) {
|
| + y = y + ystep;
|
| + error = error + deltax;
|
| + }
|
| + }
|
| + } else {
|
| + for (x = x0; x <= x1; x++) {
|
| + plot(x, y, image, pitch);
|
| +
|
| + error = error - deltay;
|
| + if (error < 0) {
|
| + y = y + ystep;
|
| + error = error + deltax;
|
| + }
|
| + }
|
| + }
|
| +}
|
|
|
| Property changes on: source/libvpx/vp9/common/vp9_textblit.c
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|