| 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 | 
|---|