• Dmitry Kovalev's avatar
    Code cleanup. · 548b4dd5
    Dmitry Kovalev authored
    Removing redundant 'extern' keywords and parentheses, fixing indentation,
    making variable names lower case, using short expressions x *= c
    instead of x = x * c, minor code simplifications.
    
    Change-Id: If6a25fcf306d1db26e90d27e3c24a32735c607de
    548b4dd5
vp9_textblit.c 2.89 KiB
/*
 *  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"
static 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
static void plot(int x, int y, unsigned char *image, int pitch) {
  image[x + y * pitch] ^= 255;
void vp9_blit_text(const char *msg, unsigned char *address, const int pitch) {
  int letter_bitmap;
  unsigned char *output_pos = address;
  int 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++;
/* Bresenham line algorithm */
void vp9_blit_line(int x0, int x1, int y0, int y1, unsigned char *image,
                   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;
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
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; } } } }