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

Side by Side Diff: src/gpu/SkGpuDevice.cpp

Issue 19449002: Replace all instances of GrRect with SkRect. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years, 5 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 | « src/gpu/GrTextStrike.cpp ('k') | src/gpu/SkGrFontScaler.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2011 Google Inc. 2 * Copyright 2011 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkGpuDevice.h" 8 #include "SkGpuDevice.h"
9 9
10 #include "effects/GrTextureDomainEffect.h" 10 #include "effects/GrTextureDomainEffect.h"
(...skipping 1262 matching lines...) Expand 10 before | Expand all | Expand 10 after
1273 const SkPaint& paint) { 1273 const SkPaint& paint) {
1274 SkASSERT(bitmap.width() <= fContext->getMaxTextureSize() && 1274 SkASSERT(bitmap.width() <= fContext->getMaxTextureSize() &&
1275 bitmap.height() <= fContext->getMaxTextureSize()); 1275 bitmap.height() <= fContext->getMaxTextureSize());
1276 1276
1277 GrTexture* texture; 1277 GrTexture* texture;
1278 SkAutoCachedTexture act(this, bitmap, &params, &texture); 1278 SkAutoCachedTexture act(this, bitmap, &params, &texture);
1279 if (NULL == texture) { 1279 if (NULL == texture) {
1280 return; 1280 return;
1281 } 1281 }
1282 1282
1283 GrRect dstRect(srcRect); 1283 SkRect dstRect(srcRect);
1284 GrRect paintRect; 1284 SkRect paintRect;
1285 SkScalar wInv = SkScalarInvert(SkIntToScalar(bitmap.width())); 1285 SkScalar wInv = SkScalarInvert(SkIntToScalar(bitmap.width()));
1286 SkScalar hInv = SkScalarInvert(SkIntToScalar(bitmap.height())); 1286 SkScalar hInv = SkScalarInvert(SkIntToScalar(bitmap.height()));
1287 paintRect.setLTRB(SkScalarMul(srcRect.fLeft, wInv), 1287 paintRect.setLTRB(SkScalarMul(srcRect.fLeft, wInv),
1288 SkScalarMul(srcRect.fTop, hInv), 1288 SkScalarMul(srcRect.fTop, hInv),
1289 SkScalarMul(srcRect.fRight, wInv), 1289 SkScalarMul(srcRect.fRight, wInv),
1290 SkScalarMul(srcRect.fBottom, hInv)); 1290 SkScalarMul(srcRect.fBottom, hInv));
1291 1291
1292 bool needsTextureDomain = false; 1292 bool needsTextureDomain = false;
1293 if (params.isBilerp()) { 1293 if (params.isBilerp()) {
1294 // Need texture domain if drawing a sub rect. 1294 // Need texture domain if drawing a sub rect.
1295 needsTextureDomain = srcRect.width() < bitmap.width() || 1295 needsTextureDomain = srcRect.width() < bitmap.width() ||
1296 srcRect.height() < bitmap.height(); 1296 srcRect.height() < bitmap.height();
1297 if (m.rectStaysRect() && fContext->getMatrix().rectStaysRect()) { 1297 if (m.rectStaysRect() && fContext->getMatrix().rectStaysRect()) {
1298 // sampling is axis-aligned 1298 // sampling is axis-aligned
1299 GrRect transformedRect; 1299 SkRect transformedRect;
1300 SkMatrix srcToDeviceMatrix(m); 1300 SkMatrix srcToDeviceMatrix(m);
1301 srcToDeviceMatrix.postConcat(fContext->getMatrix()); 1301 srcToDeviceMatrix.postConcat(fContext->getMatrix());
1302 srcToDeviceMatrix.mapRect(&transformedRect, srcRect); 1302 srcToDeviceMatrix.mapRect(&transformedRect, srcRect);
1303 1303
1304 if (hasAlignedSamples(srcRect, transformedRect)) { 1304 if (hasAlignedSamples(srcRect, transformedRect)) {
1305 // We could also turn off filtering here (but we already did a c ache lookup with 1305 // We could also turn off filtering here (but we already did a c ache lookup with
1306 // params). 1306 // params).
1307 needsTextureDomain = false; 1307 needsTextureDomain = false;
1308 } else { 1308 } else {
1309 needsTextureDomain = needsTextureDomain && 1309 needsTextureDomain = needsTextureDomain &&
1310 mayColorBleed(srcRect, transformedRect, m); 1310 mayColorBleed(srcRect, transformedRect, m);
1311 } 1311 }
1312 } 1312 }
1313 } 1313 }
1314 1314
1315 GrRect textureDomain = GrRect::MakeEmpty(); 1315 SkRect textureDomain = SkRect::MakeEmpty();
1316 SkAutoTUnref<GrEffectRef> effect; 1316 SkAutoTUnref<GrEffectRef> effect;
1317 if (needsTextureDomain) { 1317 if (needsTextureDomain) {
1318 // Use a constrained texture domain to avoid color bleeding 1318 // Use a constrained texture domain to avoid color bleeding
1319 SkScalar left, top, right, bottom; 1319 SkScalar left, top, right, bottom;
1320 if (srcRect.width() > SK_Scalar1) { 1320 if (srcRect.width() > SK_Scalar1) {
1321 SkScalar border = SK_ScalarHalf / bitmap.width(); 1321 SkScalar border = SK_ScalarHalf / bitmap.width();
1322 left = paintRect.left() + border; 1322 left = paintRect.left() + border;
1323 right = paintRect.right() - border; 1323 right = paintRect.right() - border;
1324 } else { 1324 } else {
1325 left = right = SkScalarHalf(paintRect.left() + paintRect.right()); 1325 left = right = SkScalarHalf(paintRect.left() + paintRect.right());
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1398 } 1398 }
1399 1399
1400 GrPaint grPaint; 1400 GrPaint grPaint;
1401 grPaint.addColorTextureEffect(texture, SkMatrix::I()); 1401 grPaint.addColorTextureEffect(texture, SkMatrix::I());
1402 1402
1403 if(!skPaint2GrPaintNoShader(this, paint, true, false, &grPaint)) { 1403 if(!skPaint2GrPaintNoShader(this, paint, true, false, &grPaint)) {
1404 return; 1404 return;
1405 } 1405 }
1406 1406
1407 fContext->drawRectToRect(grPaint, 1407 fContext->drawRectToRect(grPaint,
1408 GrRect::MakeXYWH(SkIntToScalar(left), 1408 SkRect::MakeXYWH(SkIntToScalar(left),
1409 SkIntToScalar(top), 1409 SkIntToScalar(top),
1410 SkIntToScalar(w), 1410 SkIntToScalar(w),
1411 SkIntToScalar(h)), 1411 SkIntToScalar(h)),
1412 GrRect::MakeXYWH(SkIntToScalar(offset.fX), 1412 SkRect::MakeXYWH(SkIntToScalar(offset.fX),
1413 SkIntToScalar(offset.fY), 1413 SkIntToScalar(offset.fY),
1414 SK_Scalar1 * w / texture->width(), 1414 SK_Scalar1 * w / texture->width(),
1415 SK_Scalar1 * h / texture->height() )); 1415 SK_Scalar1 * h / texture->height() ));
1416 } 1416 }
1417 1417
1418 void SkGpuDevice::drawBitmapRect(const SkDraw& draw, const SkBitmap& bitmap, 1418 void SkGpuDevice::drawBitmapRect(const SkDraw& draw, const SkBitmap& bitmap,
1419 const SkRect* src, const SkRect& dst, 1419 const SkRect* src, const SkRect& dst,
1420 const SkPaint& paint) { 1420 const SkPaint& paint) {
1421 SkMatrix matrix; 1421 SkMatrix matrix;
1422 SkRect bitmapBounds, tmpSrc; 1422 SkRect bitmapBounds, tmpSrc;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1481 } 1481 }
1482 } 1482 }
1483 1483
1484 GrPaint grPaint; 1484 GrPaint grPaint;
1485 grPaint.addColorTextureEffect(devTex, SkMatrix::I()); 1485 grPaint.addColorTextureEffect(devTex, SkMatrix::I());
1486 1486
1487 if (!skPaint2GrPaintNoShader(this, paint, true, false, &grPaint)) { 1487 if (!skPaint2GrPaintNoShader(this, paint, true, false, &grPaint)) {
1488 return; 1488 return;
1489 } 1489 }
1490 1490
1491 GrRect dstRect = GrRect::MakeXYWH(SkIntToScalar(x), 1491 SkRect dstRect = SkRect::MakeXYWH(SkIntToScalar(x),
1492 SkIntToScalar(y), 1492 SkIntToScalar(y),
1493 SkIntToScalar(w), 1493 SkIntToScalar(w),
1494 SkIntToScalar(h)); 1494 SkIntToScalar(h));
1495 1495
1496 // The device being drawn may not fill up its texture (e.g. saveLayer uses a pproximate 1496 // The device being drawn may not fill up its texture (e.g. saveLayer uses a pproximate
1497 // scratch texture). 1497 // scratch texture).
1498 GrRect srcRect = GrRect::MakeWH(SK_Scalar1 * w / devTex->width(), 1498 SkRect srcRect = SkRect::MakeWH(SK_Scalar1 * w / devTex->width(),
1499 SK_Scalar1 * h / devTex->height()); 1499 SK_Scalar1 * h / devTex->height());
1500 1500
1501 fContext->drawRectToRect(grPaint, dstRect, srcRect); 1501 fContext->drawRectToRect(grPaint, dstRect, srcRect);
1502 } 1502 }
1503 1503
1504 bool SkGpuDevice::canHandleImageFilter(SkImageFilter* filter) { 1504 bool SkGpuDevice::canHandleImageFilter(SkImageFilter* filter) {
1505 return filter->canFilterImageGPU(); 1505 return filter->canFilterImageGPU();
1506 } 1506 }
1507 1507
1508 bool SkGpuDevice::filterImage(SkImageFilter* filter, const SkBitmap& src, 1508 bool SkGpuDevice::filterImage(SkImageFilter* filter, const SkBitmap& src,
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
1760 GrTexture* texture, 1760 GrTexture* texture,
1761 bool needClear) 1761 bool needClear)
1762 : SkDevice(make_bitmap(context, texture->asRenderTarget())) { 1762 : SkDevice(make_bitmap(context, texture->asRenderTarget())) {
1763 1763
1764 GrAssert(texture && texture->asRenderTarget()); 1764 GrAssert(texture && texture->asRenderTarget());
1765 // This constructor is called from onCreateCompatibleDevice. It has locked t he RT in the texture 1765 // This constructor is called from onCreateCompatibleDevice. It has locked t he RT in the texture
1766 // cache. We pass true for the third argument so that it will get unlocked. 1766 // cache. We pass true for the third argument so that it will get unlocked.
1767 this->initFromRenderTarget(context, texture->asRenderTarget(), true); 1767 this->initFromRenderTarget(context, texture->asRenderTarget(), true);
1768 fNeedClear = needClear; 1768 fNeedClear = needClear;
1769 } 1769 }
OLDNEW
« no previous file with comments | « src/gpu/GrTextStrike.cpp ('k') | src/gpu/SkGrFontScaler.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698