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

Side by Side Diff: skia/sgl/SkBitmapProcState_sample.h

Issue 113827: Remove the remainder of the skia source code from the Chromium repo.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 7 months 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
« no previous file with comments | « skia/sgl/SkBitmapProcState_matrixProcs.cpp ('k') | skia/sgl/SkBitmapSampler.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1
2 #if DSTSIZE==32
3 #define DSTTYPE SkPMColor
4 #elif DSTSIZE==16
5 #define DSTTYPE uint16_t
6 #else
7 #error "need DSTSIZE to be 32 or 16"
8 #endif
9
10 static void MAKENAME(_nofilter_DXDY)(const SkBitmapProcState& s,
11 const uint32_t* SK_RESTRICT xy,
12 int count, DSTTYPE* SK_RESTRICT colors) {
13 SkASSERT(count > 0 && colors != NULL);
14 SkASSERT(s.fDoFilter == false);
15 SkDEBUGCODE(CHECKSTATE(s);)
16
17 #ifdef PREAMBLE
18 PREAMBLE(s);
19 #endif
20 const char* SK_RESTRICT srcAddr = (const char*)s.fBitmap->getPixels();
21 int i, rb = s.fBitmap->rowBytes();
22
23 uint32_t XY;
24 SRCTYPE src;
25
26 for (i = (count >> 1); i > 0; --i) {
27 XY = *xy++;
28 SkASSERT((XY >> 16) < (unsigned)s.fBitmap->height() &&
29 (XY & 0xFFFF) < (unsigned)s.fBitmap->width());
30 src = ((const SRCTYPE*)(srcAddr + (XY >> 16) * rb))[XY & 0xFFFF];
31 *colors++ = RETURNDST(src);
32
33 XY = *xy++;
34 SkASSERT((XY >> 16) < (unsigned)s.fBitmap->height() &&
35 (XY & 0xFFFF) < (unsigned)s.fBitmap->width());
36 src = ((const SRCTYPE*)(srcAddr + (XY >> 16) * rb))[XY & 0xFFFF];
37 *colors++ = RETURNDST(src);
38 }
39 if (count & 1) {
40 XY = *xy++;
41 SkASSERT((XY >> 16) < (unsigned)s.fBitmap->height() &&
42 (XY & 0xFFFF) < (unsigned)s.fBitmap->width());
43 src = ((const SRCTYPE*)(srcAddr + (XY >> 16) * rb))[XY & 0xFFFF];
44 *colors++ = RETURNDST(src);
45 }
46
47 #ifdef POSTAMBLE
48 POSTAMBLE(s);
49 #endif
50 }
51
52 static void MAKENAME(_nofilter_DX)(const SkBitmapProcState& s,
53 const uint32_t* SK_RESTRICT xy,
54 int count, DSTTYPE* SK_RESTRICT colors) {
55 SkASSERT(count > 0 && colors != NULL);
56 SkASSERT(s.fInvType <= (SkMatrix::kTranslate_Mask | SkMatrix::kScale_Mask));
57 SkASSERT(s.fDoFilter == false);
58 SkDEBUGCODE(CHECKSTATE(s);)
59
60 #ifdef PREAMBLE
61 PREAMBLE(s);
62 #endif
63 const SRCTYPE* SK_RESTRICT srcAddr = (const SRCTYPE*)s.fBitmap->getPixels();
64 int i;
65
66 // bump srcAddr to the proper row, since we're told Y never changes
67 SkASSERT((unsigned)xy[0] < (unsigned)s.fBitmap->height());
68 srcAddr = (const SRCTYPE*)((const char*)srcAddr +
69 xy[0] * s.fBitmap->rowBytes());
70 // buffer is y32, x16, x16, x16, x16, x16
71 const uint16_t* SK_RESTRICT xx = (const uint16_t*)(xy + 1);
72
73 SRCTYPE src;
74
75 for (i = (count >> 2); i > 0; --i) {
76 SkASSERT(*xx < (unsigned)s.fBitmap->width());
77 src = srcAddr[*xx++]; *colors++ = RETURNDST(src);
78
79 SkASSERT(*xx < (unsigned)s.fBitmap->width());
80 src = srcAddr[*xx++]; *colors++ = RETURNDST(src);
81
82 SkASSERT(*xx < (unsigned)s.fBitmap->width());
83 src = srcAddr[*xx++]; *colors++ = RETURNDST(src);
84
85 SkASSERT(*xx < (unsigned)s.fBitmap->width());
86 src = srcAddr[*xx++]; *colors++ = RETURNDST(src);
87 }
88 for (i = (count & 3); i > 0; --i) {
89 SkASSERT(*xx < (unsigned)s.fBitmap->width());
90 src = srcAddr[*xx++]; *colors++ = RETURNDST(src);
91 }
92
93 #ifdef POSTAMBLE
94 POSTAMBLE(s);
95 #endif
96 }
97
98 ///////////////////////////////////////////////////////////////////////////////
99
100 static void MAKENAME(_filter_DX)(const SkBitmapProcState& s,
101 const uint32_t* SK_RESTRICT xy,
102 int count, DSTTYPE* SK_RESTRICT colors) {
103 SkASSERT(count > 0 && colors != NULL);
104 SkASSERT(s.fDoFilter);
105 SkDEBUGCODE(CHECKSTATE(s);)
106
107 #ifdef PREAMBLE
108 PREAMBLE(s);
109 #endif
110 const char* SK_RESTRICT srcAddr = (const char*)s.fBitmap->getPixels();
111 unsigned rb = s.fBitmap->rowBytes();
112 unsigned subY;
113 const SRCTYPE* SK_RESTRICT row0;
114 const SRCTYPE* SK_RESTRICT row1;
115
116 // setup row ptrs and update proc_table
117 {
118 uint32_t XY = *xy++;
119 unsigned y0 = XY >> 14;
120 row0 = (const SRCTYPE*)(srcAddr + (y0 >> 4) * rb);
121 row1 = (const SRCTYPE*)(srcAddr + (XY & 0x3FFF) * rb);
122 subY = y0 & 0xF;
123 }
124
125 do {
126 uint32_t XX = *xy++; // x0:14 | 4 | x1:14
127 unsigned x0 = XX >> 14;
128 unsigned x1 = XX & 0x3FFF;
129 unsigned subX = x0 & 0xF;
130 x0 >>= 4;
131
132 uint32_t c = FILTER_PROC(subX, subY,
133 SRC_TO_FILTER(row0[x0]),
134 SRC_TO_FILTER(row0[x1]),
135 SRC_TO_FILTER(row1[x0]),
136 SRC_TO_FILTER(row1[x1]));
137 *colors++ = FILTER_TO_DST(c);
138
139 } while (--count != 0);
140
141 #ifdef POSTAMBLE
142 POSTAMBLE(s);
143 #endif
144 }
145 static void MAKENAME(_filter_DXDY)(const SkBitmapProcState& s,
146 const uint32_t* SK_RESTRICT xy,
147 int count, DSTTYPE* SK_RESTRICT colors) {
148 SkASSERT(count > 0 && colors != NULL);
149 SkASSERT(s.fDoFilter);
150 SkDEBUGCODE(CHECKSTATE(s);)
151
152 #ifdef PREAMBLE
153 PREAMBLE(s);
154 #endif
155 const char* SK_RESTRICT srcAddr = (const char*)s.fBitmap->getPixels();
156 int rb = s.fBitmap->rowBytes();
157
158 do {
159 uint32_t data = *xy++;
160 unsigned y0 = data >> 14;
161 unsigned y1 = data & 0x3FFF;
162 unsigned subY = y0 & 0xF;
163 y0 >>= 4;
164
165 data = *xy++;
166 unsigned x0 = data >> 14;
167 unsigned x1 = data & 0x3FFF;
168 unsigned subX = x0 & 0xF;
169 x0 >>= 4;
170
171 const SRCTYPE* SK_RESTRICT row0 = (const SRCTYPE*)(srcAddr + y0 * rb);
172 const SRCTYPE* SK_RESTRICT row1 = (const SRCTYPE*)(srcAddr + y1 * rb);
173
174 uint32_t c = FILTER_PROC(subX, subY,
175 SRC_TO_FILTER(row0[x0]),
176 SRC_TO_FILTER(row0[x1]),
177 SRC_TO_FILTER(row1[x0]),
178 SRC_TO_FILTER(row1[x1]));
179 *colors++ = FILTER_TO_DST(c);
180 } while (--count != 0);
181
182 #ifdef POSTAMBLE
183 POSTAMBLE(s);
184 #endif
185 }
186
187 #undef MAKENAME
188 #undef DSTSIZE
189 #undef DSTTYPE
190 #undef SRCTYPE
191 #undef CHECKSTATE
192 #undef RETURNDST
193 #undef SRC_TO_FILTER
194 #undef FILTER_TO_DST
195
196 #ifdef PREAMBLE
197 #undef PREAMBLE
198 #endif
199 #ifdef POSTAMBLE
200 #undef POSTAMBLE
201 #endif
202
203 #undef FILTER_PROC_TYPE
204 #undef GET_FILTER_TABLE
205 #undef GET_FILTER_ROW
206 #undef GET_FILTER_ROW_PROC
207 #undef GET_FILTER_PROC
OLDNEW
« no previous file with comments | « skia/sgl/SkBitmapProcState_matrixProcs.cpp ('k') | skia/sgl/SkBitmapSampler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698