OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 #include "SkAAClip.h" | 9 #include "SkAAClip.h" |
10 #include "SkBlitter.h" | 10 #include "SkBlitter.h" |
(...skipping 1255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1266 } | 1266 } |
1267 } | 1267 } |
1268 | 1268 |
1269 /** | 1269 /** |
1270 Must evaluate clips in scan-line order, so don't want to allow blitV(), | 1270 Must evaluate clips in scan-line order, so don't want to allow blitV(), |
1271 but an AAClip can be clipped down to a single pixel wide, so we | 1271 but an AAClip can be clipped down to a single pixel wide, so we |
1272 must support it (given AntiRect semantics: minimum width is 2). | 1272 must support it (given AntiRect semantics: minimum width is 2). |
1273 Instead we'll rely on the runtime asserts to guarantee Y monotonicity; | 1273 Instead we'll rely on the runtime asserts to guarantee Y monotonicity; |
1274 any failure cases that misses may have minor artifacts. | 1274 any failure cases that misses may have minor artifacts. |
1275 */ | 1275 */ |
1276 void blitV(int x, int y, int height, SkAlpha alpha) SK_OVERRIDE { | 1276 void blitV(int x, int y, int height, SkAlpha alpha) override { |
1277 this->recordMinY(y); | 1277 this->recordMinY(y); |
1278 fBuilder->addColumn(x, y, alpha, height); | 1278 fBuilder->addColumn(x, y, alpha, height); |
1279 fLastY = y + height - 1; | 1279 fLastY = y + height - 1; |
1280 } | 1280 } |
1281 | 1281 |
1282 void blitRect(int x, int y, int width, int height) SK_OVERRIDE { | 1282 void blitRect(int x, int y, int width, int height) override { |
1283 this->recordMinY(y); | 1283 this->recordMinY(y); |
1284 this->checkForYGap(y); | 1284 this->checkForYGap(y); |
1285 fBuilder->addRectRun(x, y, width, height); | 1285 fBuilder->addRectRun(x, y, width, height); |
1286 fLastY = y + height - 1; | 1286 fLastY = y + height - 1; |
1287 } | 1287 } |
1288 | 1288 |
1289 virtual void blitAntiRect(int x, int y, int width, int height, | 1289 virtual void blitAntiRect(int x, int y, int width, int height, |
1290 SkAlpha leftAlpha, SkAlpha rightAlpha) SK_OVERRIDE { | 1290 SkAlpha leftAlpha, SkAlpha rightAlpha) override { |
1291 this->recordMinY(y); | 1291 this->recordMinY(y); |
1292 this->checkForYGap(y); | 1292 this->checkForYGap(y); |
1293 fBuilder->addAntiRectRun(x, y, width, height, leftAlpha, rightAlpha); | 1293 fBuilder->addAntiRectRun(x, y, width, height, leftAlpha, rightAlpha); |
1294 fLastY = y + height - 1; | 1294 fLastY = y + height - 1; |
1295 } | 1295 } |
1296 | 1296 |
1297 void blitMask(const SkMask&, const SkIRect& clip) SK_OVERRIDE | 1297 void blitMask(const SkMask&, const SkIRect& clip) override |
1298 { unexpected(); } | 1298 { unexpected(); } |
1299 | 1299 |
1300 const SkBitmap* justAnOpaqueColor(uint32_t*) SK_OVERRIDE { | 1300 const SkBitmap* justAnOpaqueColor(uint32_t*) override { |
1301 return NULL; | 1301 return NULL; |
1302 } | 1302 } |
1303 | 1303 |
1304 void blitH(int x, int y, int width) SK_OVERRIDE { | 1304 void blitH(int x, int y, int width) override { |
1305 this->recordMinY(y); | 1305 this->recordMinY(y); |
1306 this->checkForYGap(y); | 1306 this->checkForYGap(y); |
1307 fBuilder->addRun(x, y, 0xFF, width); | 1307 fBuilder->addRun(x, y, 0xFF, width); |
1308 } | 1308 } |
1309 | 1309 |
1310 virtual void blitAntiH(int x, int y, const SkAlpha alpha[], | 1310 virtual void blitAntiH(int x, int y, const SkAlpha alpha[], |
1311 const int16_t runs[]) SK_OVERRIDE { | 1311 const int16_t runs[]) override { |
1312 this->recordMinY(y); | 1312 this->recordMinY(y); |
1313 this->checkForYGap(y); | 1313 this->checkForYGap(y); |
1314 for (;;) { | 1314 for (;;) { |
1315 int count = *runs; | 1315 int count = *runs; |
1316 if (count <= 0) { | 1316 if (count <= 0) { |
1317 return; | 1317 return; |
1318 } | 1318 } |
1319 | 1319 |
1320 // The supersampler's buffer can be the width of the device, so | 1320 // The supersampler's buffer can be the width of the device, so |
1321 // we may have to trim the run to our bounds. If so, we assert that | 1321 // we may have to trim the run to our bounds. If so, we assert that |
(...skipping 893 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2215 rowMask.fBounds.fBottom = y + 1; | 2215 rowMask.fBounds.fBottom = y + 1; |
2216 fBlitter->blitMask(rowMask, rowMask.fBounds); | 2216 fBlitter->blitMask(rowMask, rowMask.fBounds); |
2217 src = (const void*)((const char*)src + srcRB); | 2217 src = (const void*)((const char*)src + srcRB); |
2218 } while (++y < localStopY); | 2218 } while (++y < localStopY); |
2219 } while (y < stopY); | 2219 } while (y < stopY); |
2220 } | 2220 } |
2221 | 2221 |
2222 const SkBitmap* SkAAClipBlitter::justAnOpaqueColor(uint32_t* value) { | 2222 const SkBitmap* SkAAClipBlitter::justAnOpaqueColor(uint32_t* value) { |
2223 return NULL; | 2223 return NULL; |
2224 } | 2224 } |
OLD | NEW |