Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(555)

Side by Side Diff: source/libvpx/vp9/common/vp9_textblit.c

Issue 11555023: libvpx: Add VP9 decoder. (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
1 /*
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #include <stdlib.h>
12
13 #include "vp9/common/vp9_textblit.h"
14
15 void vp9_blit_text(const char *msg, unsigned char *address, const int pitch) {
16 int letter_bitmap;
17 unsigned char *output_pos = address;
18 int colpos;
19 const int font[] = {
20 0x0, 0x5C00, 0x8020, 0xAFABEA, 0xD7EC0, 0x1111111, 0x1855740, 0x18000,
21 0x45C0, 0x74400, 0x51140, 0x23880, 0xC4000, 0x21080, 0x80000, 0x111110,
22 0xE9D72E, 0x87E40, 0x12AD732, 0xAAD62A, 0x4F94C4, 0x4D6B7, 0x456AA,
23 0x3E8423, 0xAAD6AA, 0xAAD6A2, 0x2800, 0x2A00, 0x8A880, 0x52940, 0x22A20,
24 0x15422, 0x6AD62E, 0x1E4A53E, 0xAAD6BF, 0x8C62E, 0xE8C63F, 0x118D6BF,
25 0x1094BF, 0xCAC62E, 0x1F2109F, 0x118FE31, 0xF8C628, 0x8A89F, 0x108421F,
26 0x1F1105F, 0x1F4105F, 0xE8C62E, 0x2294BF, 0x164C62E, 0x12694BF, 0x8AD6A2,
27 0x10FC21, 0x1F8421F, 0x744107, 0xF8220F, 0x1151151, 0x117041, 0x119D731,
28 0x47E0, 0x1041041, 0xFC400, 0x10440, 0x1084210, 0x820
29 };
30 colpos = 0;
31
32 while (msg[colpos] != 0) {
33 char letter = msg[colpos];
34 int fontcol, fontrow;
35
36 if (letter <= 'Z' && letter >= ' ')
37 letter_bitmap = font[letter - ' '];
38 else if (letter <= 'z' && letter >= 'a')
39 letter_bitmap = font[letter - 'a' + 'A' - ' '];
40 else
41 letter_bitmap = font[0];
42
43 for (fontcol = 6; fontcol >= 0; fontcol--)
44 for (fontrow = 0; fontrow < 5; fontrow++)
45 output_pos[fontrow * pitch + fontcol] =
46 ((letter_bitmap >> (fontcol * 5)) & (1 << fontrow) ? 255 : 0);
47
48 output_pos += 7;
49 colpos++;
50 }
51 }
52
53 static void plot(const int x, const int y, unsigned char *image, const int pitch ) {
54 image [x + y * pitch] ^= 255;
55 }
56
57 /* Bresenham line algorithm */
58 void vp9_blit_line(int x0, int x1, int y0, int y1, unsigned char *image, const i nt pitch) {
59 int steep = abs(y1 - y0) > abs(x1 - x0);
60 int deltax, deltay;
61 int error, ystep, y, x;
62
63 if (steep) {
64 int t;
65 t = x0;
66 x0 = y0;
67 y0 = t;
68
69 t = x1;
70 x1 = y1;
71 y1 = t;
72 }
73
74 if (x0 > x1) {
75 int t;
76 t = x0;
77 x0 = x1;
78 x1 = t;
79
80 t = y0;
81 y0 = y1;
82 y1 = t;
83 }
84
85 deltax = x1 - x0;
86 deltay = abs(y1 - y0);
87 error = deltax / 2;
88
89 y = y0;
90
91 if (y0 < y1)
92 ystep = 1;
93 else
94 ystep = -1;
95
96 if (steep) {
97 for (x = x0; x <= x1; x++) {
98 plot(y, x, image, pitch);
99
100 error = error - deltay;
101 if (error < 0) {
102 y = y + ystep;
103 error = error + deltax;
104 }
105 }
106 } else {
107 for (x = x0; x <= x1; x++) {
108 plot(x, y, image, pitch);
109
110 error = error - deltay;
111 if (error < 0) {
112 y = y + ystep;
113 error = error + deltax;
114 }
115 }
116 }
117 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698