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

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

Issue 318923005: SkShader::asNewEffect Refactoring (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: SkColorShader refactor and fix Created 6 years, 6 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
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/GrBicubicEffect.h" 10 #include "effects/GrBicubicEffect.h"
(...skipping 1368 matching lines...) Expand 10 before | Expand all | Expand 10 after
1379 effect.reset(GrBicubicEffect::Create(texture, SkMatrix::I(), tileModes)) ; 1379 effect.reset(GrBicubicEffect::Create(texture, SkMatrix::I(), tileModes)) ;
1380 } else { 1380 } else {
1381 effect.reset(GrSimpleTextureEffect::Create(texture, SkMatrix::I(), param s)); 1381 effect.reset(GrSimpleTextureEffect::Create(texture, SkMatrix::I(), param s));
1382 } 1382 }
1383 1383
1384 // Construct a GrPaint by setting the bitmap texture as the first effect and then configuring 1384 // Construct a GrPaint by setting the bitmap texture as the first effect and then configuring
1385 // the rest from the SkPaint. 1385 // the rest from the SkPaint.
1386 GrPaint grPaint; 1386 GrPaint grPaint;
1387 grPaint.addColorEffect(effect); 1387 grPaint.addColorEffect(effect);
1388 bool alphaOnly = !(SkBitmap::kA8_Config == bitmap.config()); 1388 bool alphaOnly = !(SkBitmap::kA8_Config == bitmap.config());
1389 SkPaint2GrPaintNoShader(this->context(), paint, alphaOnly, false, &grPaint); 1389 GrColor grColor = (alphaOnly) ? SkColor2GrColorJustAlpha(paint.getColor()) :
1390 SkColor2GrColor(paint.getColor());
1391 SkPaint2GrPaintNoShader(this->context(), paint, grColor, false, &grPaint);
1390 1392
1391 fContext->drawRectToRect(grPaint, dstRect, paintRect, NULL); 1393 fContext->drawRectToRect(grPaint, dstRect, paintRect, NULL);
1392 } 1394 }
1393 1395
1394 static bool filter_texture(SkBaseDevice* device, GrContext* context, 1396 static bool filter_texture(SkBaseDevice* device, GrContext* context,
1395 GrTexture* texture, const SkImageFilter* filter, 1397 GrTexture* texture, const SkImageFilter* filter,
1396 int w, int h, const SkImageFilter::Context& ctx, 1398 int w, int h, const SkImageFilter::Context& ctx,
1397 SkBitmap* result, SkIPoint* offset) { 1399 SkBitmap* result, SkIPoint* offset) {
1398 SkASSERT(filter); 1400 SkASSERT(filter);
1399 SkDeviceImageFilterProxy proxy(device); 1401 SkDeviceImageFilterProxy proxy(device);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1445 left += offset.x(); 1447 left += offset.x();
1446 top += offset.y(); 1448 top += offset.y();
1447 } else { 1449 } else {
1448 return; 1450 return;
1449 } 1451 }
1450 } 1452 }
1451 1453
1452 GrPaint grPaint; 1454 GrPaint grPaint;
1453 grPaint.addColorTextureEffect(texture, SkMatrix::I()); 1455 grPaint.addColorTextureEffect(texture, SkMatrix::I());
1454 1456
1455 SkPaint2GrPaintNoShader(this->context(), paint, true, false, &grPaint); 1457 SkPaint2GrPaintNoShader(this->context(), paint, SkColor2GrColorJustAlpha(pai nt.getColor()),
1458 false, &grPaint);
1456 1459
1457 fContext->drawRectToRect(grPaint, 1460 fContext->drawRectToRect(grPaint,
1458 SkRect::MakeXYWH(SkIntToScalar(left), 1461 SkRect::MakeXYWH(SkIntToScalar(left),
1459 SkIntToScalar(top), 1462 SkIntToScalar(top),
1460 SkIntToScalar(w), 1463 SkIntToScalar(w),
1461 SkIntToScalar(h)), 1464 SkIntToScalar(h)),
1462 SkRect::MakeXYWH(0, 1465 SkRect::MakeXYWH(0,
1463 0, 1466 0,
1464 SK_Scalar1 * w / texture->width(), 1467 SK_Scalar1 * w / texture->width(),
1465 SK_Scalar1 * h / texture->height() )); 1468 SK_Scalar1 * h / texture->height() ));
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
1553 x += offset.fX; 1556 x += offset.fX;
1554 y += offset.fY; 1557 y += offset.fY;
1555 } else { 1558 } else {
1556 return; 1559 return;
1557 } 1560 }
1558 } 1561 }
1559 1562
1560 GrPaint grPaint; 1563 GrPaint grPaint;
1561 grPaint.addColorTextureEffect(devTex, SkMatrix::I()); 1564 grPaint.addColorTextureEffect(devTex, SkMatrix::I());
1562 1565
1563 SkPaint2GrPaintNoShader(this->context(), paint, true, false, &grPaint); 1566 SkPaint2GrPaintNoShader(this->context(), paint, SkColor2GrColorJustAlpha(pai nt.getColor()),
1567 false, &grPaint);
1564 1568
1565 SkRect dstRect = SkRect::MakeXYWH(SkIntToScalar(x), 1569 SkRect dstRect = SkRect::MakeXYWH(SkIntToScalar(x),
1566 SkIntToScalar(y), 1570 SkIntToScalar(y),
1567 SkIntToScalar(w), 1571 SkIntToScalar(w),
1568 SkIntToScalar(h)); 1572 SkIntToScalar(h));
1569 1573
1570 // The device being drawn may not fill up its texture (e.g. saveLayer uses a pproximate 1574 // The device being drawn may not fill up its texture (e.g. saveLayer uses a pproximate
1571 // scratch texture). 1575 // scratch texture).
1572 SkRect srcRect = SkRect::MakeWH(SK_Scalar1 * w / devTex->width(), 1576 SkRect srcRect = SkRect::MakeWH(SK_Scalar1 * w / devTex->width(),
1573 SK_Scalar1 * h / devTex->height()); 1577 SK_Scalar1 * h / devTex->height());
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1639 pts[i + 5] = vertices[state.f0]; 1643 pts[i + 5] = vertices[state.f0];
1640 i += 6; 1644 i += 6;
1641 } 1645 }
1642 draw.drawPoints(SkCanvas::kLines_PointMode, i, pts, copy, true); 1646 draw.drawPoints(SkCanvas::kLines_PointMode, i, pts, copy, true);
1643 return; 1647 return;
1644 } 1648 }
1645 1649
1646 GrPaint grPaint; 1650 GrPaint grPaint;
1647 // we ignore the shader if texs is null. 1651 // we ignore the shader if texs is null.
1648 if (NULL == texs) { 1652 if (NULL == texs) {
1649 SkPaint2GrPaintNoShader(this->context(), paint, false, NULL == colors, & grPaint); 1653 SkPaint2GrPaintNoShader(this->context(), paint, SkColor2GrColor(paint.ge tColor()),
1654 NULL == colors, &grPaint);
1650 } else { 1655 } else {
1651 SkPaint2GrPaintShader(this->context(), paint, NULL == colors, &grPaint); 1656 SkPaint2GrPaintShader(this->context(), paint, NULL == colors, &grPaint);
1652 } 1657 }
1653 1658
1654 #if 0 1659 #if 0
1655 if (NULL != xmode && NULL != texs && NULL != colors) { 1660 if (NULL != xmode && NULL != texs && NULL != colors) {
1656 if (!SkXfermode::IsMode(xmode, SkXfermode::kModulate_Mode)) { 1661 if (!SkXfermode::IsMode(xmode, SkXfermode::kModulate_Mode)) {
1657 SkDebugf("Unsupported vertex-color/texture xfer mode.\n"); 1662 SkDebugf("Unsupported vertex-color/texture xfer mode.\n");
1658 return; 1663 return;
1659 } 1664 }
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after
2006 GrCachedLayer* layer = fContext->getLayerCache()->findLayerOrCreate(pict ure, i); 2011 GrCachedLayer* layer = fContext->getLayerCache()->findLayerOrCreate(pict ure, i);
2007 2012
2008 if (NULL != layer->getTexture()) { 2013 if (NULL != layer->getTexture()) {
2009 fContext->unlockScratchTexture(layer->getTexture()); 2014 fContext->unlockScratchTexture(layer->getTexture());
2010 layer->setTexture(NULL); 2015 layer->setTexture(NULL);
2011 } 2016 }
2012 } 2017 }
2013 2018
2014 return true; 2019 return true;
2015 } 2020 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698