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 456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
467 | 467 |
468 if (usePath) { | 468 if (usePath) { |
469 SkPath path; | 469 SkPath path; |
470 path.addRect(rect); | 470 path.addRect(rect); |
471 this->drawPath(draw, path, paint, NULL, true); | 471 this->drawPath(draw, path, paint, NULL, true); |
472 return; | 472 return; |
473 } | 473 } |
474 | 474 |
475 GrPaint grPaint; | 475 GrPaint grPaint; |
476 SkPaint2GrPaintShader(this->context(), paint, true, &grPaint); | 476 SkPaint2GrPaintShader(this->context(), paint, true, &grPaint); |
477 | 477 |
478 fContext->drawRect(grPaint, rect, &strokeInfo); | 478 fContext->drawRect(grPaint, rect, &strokeInfo); |
479 } | 479 } |
480 | 480 |
481 /////////////////////////////////////////////////////////////////////////////// | 481 /////////////////////////////////////////////////////////////////////////////// |
482 | 482 |
483 void SkGpuDevice::drawRRect(const SkDraw& draw, const SkRRect& rect, | 483 void SkGpuDevice::drawRRect(const SkDraw& draw, const SkRRect& rect, |
484 const SkPaint& paint) { | 484 const SkPaint& paint) { |
485 CHECK_FOR_ANNOTATION(paint); | 485 CHECK_FOR_ANNOTATION(paint); |
486 CHECK_SHOULD_DRAW(draw, false); | 486 CHECK_SHOULD_DRAW(draw, false); |
487 | 487 |
488 GrPaint grPaint; | 488 GrPaint grPaint; |
489 SkPaint2GrPaintShader(this->context(), paint, true, &grPaint); | 489 SkPaint2GrPaintShader(this->context(), paint, true, &grPaint); |
490 | 490 |
491 GrStrokeInfo strokeInfo(paint); | 491 GrStrokeInfo strokeInfo(paint); |
492 if (paint.getMaskFilter()) { | 492 if (paint.getMaskFilter()) { |
493 // try to hit the fast path for drawing filtered round rects | 493 // try to hit the fast path for drawing filtered round rects |
494 | 494 |
495 SkRRect devRRect; | 495 SkRRect devRRect; |
496 if (rect.transform(fContext->getMatrix(), &devRRect)) { | 496 if (rect.transform(fContext->getMatrix(), &devRRect)) { |
497 if (devRRect.allCornersCircular()) { | 497 if (devRRect.allCornersCircular()) { |
498 SkRect maskRect; | 498 SkRect maskRect; |
499 if (paint.getMaskFilter()->canFilterMaskGPU(devRRect.rect(), | 499 if (paint.getMaskFilter()->canFilterMaskGPU(devRRect.rect(), |
500 draw.fClip->getBounds(), | 500 draw.fClip->getBounds(), |
(...skipping 28 matching lines...) Expand all Loading... |
529 } | 529 } |
530 } | 530 } |
531 | 531 |
532 | 532 |
533 if (usePath) { | 533 if (usePath) { |
534 SkPath path; | 534 SkPath path; |
535 path.addRRect(rect); | 535 path.addRRect(rect); |
536 this->drawPath(draw, path, paint, NULL, true); | 536 this->drawPath(draw, path, paint, NULL, true); |
537 return; | 537 return; |
538 } | 538 } |
539 | 539 |
540 fContext->drawRRect(grPaint, rect, strokeInfo); | 540 fContext->drawRRect(grPaint, rect, strokeInfo); |
541 } | 541 } |
542 | 542 |
543 void SkGpuDevice::drawDRRect(const SkDraw& draw, const SkRRect& outer, | 543 void SkGpuDevice::drawDRRect(const SkDraw& draw, const SkRRect& outer, |
544 const SkRRect& inner, const SkPaint& paint) { | 544 const SkRRect& inner, const SkPaint& paint) { |
545 SkStrokeRec stroke(paint); | 545 SkStrokeRec stroke(paint); |
546 if (stroke.isFillStyle()) { | 546 if (stroke.isFillStyle()) { |
547 | 547 |
548 CHECK_FOR_ANNOTATION(paint); | 548 CHECK_FOR_ANNOTATION(paint); |
549 CHECK_SHOULD_DRAW(draw, false); | 549 CHECK_SHOULD_DRAW(draw, false); |
(...skipping 1388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1938 } | 1938 } |
1939 | 1939 |
1940 SkPicturePlayback::PlaybackReplacements replacements; | 1940 SkPicturePlayback::PlaybackReplacements replacements; |
1941 | 1941 |
1942 for (int i = 0; i < gpuData->numSaveLayers(); ++i) { | 1942 for (int i = 0; i < gpuData->numSaveLayers(); ++i) { |
1943 if (pullForward[i]) { | 1943 if (pullForward[i]) { |
1944 GrCachedLayer* layer = fContext->getLayerCache()->findLayerOrCreate(
picture, i); | 1944 GrCachedLayer* layer = fContext->getLayerCache()->findLayerOrCreate(
picture, i); |
1945 | 1945 |
1946 const GPUAccelData::SaveLayerInfo& info = gpuData->saveLayerInfo(i); | 1946 const GPUAccelData::SaveLayerInfo& info = gpuData->saveLayerInfo(i); |
1947 | 1947 |
1948 if (NULL != picture->fPlayback) { | 1948 if (NULL != picture->fPlayback.get()) { |
1949 SkPicturePlayback::PlaybackReplacements::ReplacementInfo* layerI
nfo = | 1949 SkPicturePlayback::PlaybackReplacements::ReplacementInfo* layerI
nfo = |
1950 replacem
ents.push(); | 1950 replacem
ents.push(); |
1951 layerInfo->fStart = info.fSaveLayerOpID; | 1951 layerInfo->fStart = info.fSaveLayerOpID; |
1952 layerInfo->fStop = info.fRestoreOpID; | 1952 layerInfo->fStop = info.fRestoreOpID; |
1953 layerInfo->fPos = info.fOffset; | 1953 layerInfo->fPos = info.fOffset; |
1954 | 1954 |
1955 GrTextureDesc desc; | 1955 GrTextureDesc desc; |
1956 desc.fFlags = kRenderTarget_GrTextureFlagBit; | 1956 desc.fFlags = kRenderTarget_GrTextureFlagBit; |
1957 desc.fWidth = info.fSize.fWidth; | 1957 desc.fWidth = info.fSize.fWidth; |
1958 desc.fHeight = info.fSize.fHeight; | 1958 desc.fHeight = info.fSize.fHeight; |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2006 GrCachedLayer* layer = fContext->getLayerCache()->findLayerOrCreate(pict
ure, i); | 2006 GrCachedLayer* layer = fContext->getLayerCache()->findLayerOrCreate(pict
ure, i); |
2007 | 2007 |
2008 if (NULL != layer->getTexture()) { | 2008 if (NULL != layer->getTexture()) { |
2009 fContext->unlockScratchTexture(layer->getTexture()); | 2009 fContext->unlockScratchTexture(layer->getTexture()); |
2010 layer->setTexture(NULL); | 2010 layer->setTexture(NULL); |
2011 } | 2011 } |
2012 } | 2012 } |
2013 | 2013 |
2014 return true; | 2014 return true; |
2015 } | 2015 } |
OLD | NEW |