| OLD | NEW |
| 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 1338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1349 effect.reset(GrBicubicEffect::Create(texture, SkMatrix::I(), tileModes))
; | 1349 effect.reset(GrBicubicEffect::Create(texture, SkMatrix::I(), tileModes))
; |
| 1350 } else { | 1350 } else { |
| 1351 effect.reset(GrSimpleTextureEffect::Create(texture, SkMatrix::I(), param
s)); | 1351 effect.reset(GrSimpleTextureEffect::Create(texture, SkMatrix::I(), param
s)); |
| 1352 } | 1352 } |
| 1353 | 1353 |
| 1354 // Construct a GrPaint by setting the bitmap texture as the first effect and
then configuring | 1354 // Construct a GrPaint by setting the bitmap texture as the first effect and
then configuring |
| 1355 // the rest from the SkPaint. | 1355 // the rest from the SkPaint. |
| 1356 GrPaint grPaint; | 1356 GrPaint grPaint; |
| 1357 grPaint.addColorEffect(effect); | 1357 grPaint.addColorEffect(effect); |
| 1358 bool alphaOnly = !(SkBitmap::kA8_Config == bitmap.config()); | 1358 bool alphaOnly = !(SkBitmap::kA8_Config == bitmap.config()); |
| 1359 SkPaint2GrPaintNoShader(this->context(), paint, alphaOnly, false, &grPaint); | 1359 GrColor grColor = (alphaOnly) ? SkColor2GrColorJustAlpha(paint.getColor()) : |
| 1360 SkColor2GrColor(paint.getColor()); |
| 1361 SkPaint2GrPaintNoShader(this->context(), paint, grColor, false, &grPaint); |
| 1360 | 1362 |
| 1361 fContext->drawRectToRect(grPaint, dstRect, paintRect, NULL); | 1363 fContext->drawRectToRect(grPaint, dstRect, paintRect, NULL); |
| 1362 } | 1364 } |
| 1363 | 1365 |
| 1364 static bool filter_texture(SkBaseDevice* device, GrContext* context, | 1366 static bool filter_texture(SkBaseDevice* device, GrContext* context, |
| 1365 GrTexture* texture, const SkImageFilter* filter, | 1367 GrTexture* texture, const SkImageFilter* filter, |
| 1366 int w, int h, const SkImageFilter::Context& ctx, | 1368 int w, int h, const SkImageFilter::Context& ctx, |
| 1367 SkBitmap* result, SkIPoint* offset) { | 1369 SkBitmap* result, SkIPoint* offset) { |
| 1368 SkASSERT(filter); | 1370 SkASSERT(filter); |
| 1369 SkDeviceImageFilterProxy proxy(device); | 1371 SkDeviceImageFilterProxy proxy(device); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1415 left += offset.x(); | 1417 left += offset.x(); |
| 1416 top += offset.y(); | 1418 top += offset.y(); |
| 1417 } else { | 1419 } else { |
| 1418 return; | 1420 return; |
| 1419 } | 1421 } |
| 1420 } | 1422 } |
| 1421 | 1423 |
| 1422 GrPaint grPaint; | 1424 GrPaint grPaint; |
| 1423 grPaint.addColorTextureEffect(texture, SkMatrix::I()); | 1425 grPaint.addColorTextureEffect(texture, SkMatrix::I()); |
| 1424 | 1426 |
| 1425 SkPaint2GrPaintNoShader(this->context(), paint, true, false, &grPaint); | 1427 SkPaint2GrPaintNoShader(this->context(), paint, SkColor2GrColorJustAlpha(pai
nt.getColor()), |
| 1428 false, &grPaint); |
| 1426 | 1429 |
| 1427 fContext->drawRectToRect(grPaint, | 1430 fContext->drawRectToRect(grPaint, |
| 1428 SkRect::MakeXYWH(SkIntToScalar(left), | 1431 SkRect::MakeXYWH(SkIntToScalar(left), |
| 1429 SkIntToScalar(top), | 1432 SkIntToScalar(top), |
| 1430 SkIntToScalar(w), | 1433 SkIntToScalar(w), |
| 1431 SkIntToScalar(h)), | 1434 SkIntToScalar(h)), |
| 1432 SkRect::MakeXYWH(0, | 1435 SkRect::MakeXYWH(0, |
| 1433 0, | 1436 0, |
| 1434 SK_Scalar1 * w / texture->width(), | 1437 SK_Scalar1 * w / texture->width(), |
| 1435 SK_Scalar1 * h / texture->height()
)); | 1438 SK_Scalar1 * h / texture->height()
)); |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1523 x += offset.fX; | 1526 x += offset.fX; |
| 1524 y += offset.fY; | 1527 y += offset.fY; |
| 1525 } else { | 1528 } else { |
| 1526 return; | 1529 return; |
| 1527 } | 1530 } |
| 1528 } | 1531 } |
| 1529 | 1532 |
| 1530 GrPaint grPaint; | 1533 GrPaint grPaint; |
| 1531 grPaint.addColorTextureEffect(devTex, SkMatrix::I()); | 1534 grPaint.addColorTextureEffect(devTex, SkMatrix::I()); |
| 1532 | 1535 |
| 1533 SkPaint2GrPaintNoShader(this->context(), paint, true, false, &grPaint); | 1536 SkPaint2GrPaintNoShader(this->context(), paint, SkColor2GrColorJustAlpha(pai
nt.getColor()), |
| 1537 false, &grPaint); |
| 1534 | 1538 |
| 1535 SkRect dstRect = SkRect::MakeXYWH(SkIntToScalar(x), | 1539 SkRect dstRect = SkRect::MakeXYWH(SkIntToScalar(x), |
| 1536 SkIntToScalar(y), | 1540 SkIntToScalar(y), |
| 1537 SkIntToScalar(w), | 1541 SkIntToScalar(w), |
| 1538 SkIntToScalar(h)); | 1542 SkIntToScalar(h)); |
| 1539 | 1543 |
| 1540 // The device being drawn may not fill up its texture (e.g. saveLayer uses a
pproximate | 1544 // The device being drawn may not fill up its texture (e.g. saveLayer uses a
pproximate |
| 1541 // scratch texture). | 1545 // scratch texture). |
| 1542 SkRect srcRect = SkRect::MakeWH(SK_Scalar1 * w / devTex->width(), | 1546 SkRect srcRect = SkRect::MakeWH(SK_Scalar1 * w / devTex->width(), |
| 1543 SK_Scalar1 * h / devTex->height()); | 1547 SK_Scalar1 * h / devTex->height()); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1609 pts[i + 5] = vertices[state.f0]; | 1613 pts[i + 5] = vertices[state.f0]; |
| 1610 i += 6; | 1614 i += 6; |
| 1611 } | 1615 } |
| 1612 draw.drawPoints(SkCanvas::kLines_PointMode, i, pts, copy, true); | 1616 draw.drawPoints(SkCanvas::kLines_PointMode, i, pts, copy, true); |
| 1613 return; | 1617 return; |
| 1614 } | 1618 } |
| 1615 | 1619 |
| 1616 GrPaint grPaint; | 1620 GrPaint grPaint; |
| 1617 // we ignore the shader if texs is null. | 1621 // we ignore the shader if texs is null. |
| 1618 if (NULL == texs) { | 1622 if (NULL == texs) { |
| 1619 SkPaint2GrPaintNoShader(this->context(), paint, false, NULL == colors, &
grPaint); | 1623 SkPaint2GrPaintNoShader(this->context(), paint, SkColor2GrColor(paint.ge
tColor()), |
| 1624 NULL == colors, &grPaint); |
| 1620 } else { | 1625 } else { |
| 1621 SkPaint2GrPaintShader(this->context(), paint, NULL == colors, &grPaint); | 1626 SkPaint2GrPaintShader(this->context(), paint, NULL == colors, &grPaint); |
| 1622 } | 1627 } |
| 1623 | 1628 |
| 1624 #if 0 | 1629 #if 0 |
| 1625 if (NULL != xmode && NULL != texs && NULL != colors) { | 1630 if (NULL != xmode && NULL != texs && NULL != colors) { |
| 1626 if (!SkXfermode::IsMode(xmode, SkXfermode::kModulate_Mode)) { | 1631 if (!SkXfermode::IsMode(xmode, SkXfermode::kModulate_Mode)) { |
| 1627 SkDebugf("Unsupported vertex-color/texture xfer mode.\n"); | 1632 SkDebugf("Unsupported vertex-color/texture xfer mode.\n"); |
| 1628 return; | 1633 return; |
| 1629 } | 1634 } |
| (...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1976 GrCachedLayer* layer = fContext->getLayerCache()->findLayerOrCreate(pict
ure, i); | 1981 GrCachedLayer* layer = fContext->getLayerCache()->findLayerOrCreate(pict
ure, i); |
| 1977 | 1982 |
| 1978 if (NULL != layer->getTexture()) { | 1983 if (NULL != layer->getTexture()) { |
| 1979 fContext->unlockScratchTexture(layer->getTexture()); | 1984 fContext->unlockScratchTexture(layer->getTexture()); |
| 1980 layer->setTexture(NULL); | 1985 layer->setTexture(NULL); |
| 1981 } | 1986 } |
| 1982 } | 1987 } |
| 1983 | 1988 |
| 1984 return true; | 1989 return true; |
| 1985 } | 1990 } |
| OLD | NEW |