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

Side by Side Diff: src/core/SkCanvas.cpp

Issue 1832223002: switch xfermodes over to sk_sp (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: rebase Created 4 years, 8 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 2008 The Android Open Source Project 2 * Copyright 2008 The Android Open Source Project
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 "SkBitmapDevice.h" 8 #include "SkBitmapDevice.h"
9 #include "SkCanvas.h" 9 #include "SkCanvas.h"
10 #include "SkCanvasPriv.h" 10 #include "SkCanvasPriv.h"
(...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 * Remove the imagefilter and the xfermode from the paint that we (AutoDrawLooper) 474 * Remove the imagefilter and the xfermode from the paint that we (AutoDrawLooper)
475 * return (fPaint). We then draw the primitive (using srcover) into a cleared 475 * return (fPaint). We then draw the primitive (using srcover) into a cleared
476 * buffer/surface. 476 * buffer/surface.
477 * 3. Restore the layer created in #1 477 * 3. Restore the layer created in #1
478 * The imagefilter is passed the buffer/surface from the layer (now filled with the 478 * The imagefilter is passed the buffer/surface from the layer (now filled with the
479 * src pixels of the primitive). It returns a new "filtered" bu ffer, which we 479 * src pixels of the primitive). It returns a new "filtered" bu ffer, which we
480 * draw onto the previous layer using the xfermode from the ori ginal paint. 480 * draw onto the previous layer using the xfermode from the ori ginal paint.
481 */ 481 */
482 SkPaint tmp; 482 SkPaint tmp;
483 tmp.setImageFilter(fPaint->getImageFilter()); 483 tmp.setImageFilter(fPaint->getImageFilter());
484 tmp.setXfermode(fPaint->getXfermode()); 484 tmp.setXfermode(sk_ref_sp(fPaint->getXfermode()));
485 SkRect storage; 485 SkRect storage;
486 if (rawBounds) { 486 if (rawBounds) {
487 // Make rawBounds include all paint outsets except for those due to image filters. 487 // Make rawBounds include all paint outsets except for those due to image filters.
488 rawBounds = &apply_paint_to_bounds_sans_imagefilter(*fPaint, *ra wBounds, &storage); 488 rawBounds = &apply_paint_to_bounds_sans_imagefilter(*fPaint, *ra wBounds, &storage);
489 } 489 }
490 (void)canvas->internalSaveLayer(SkCanvas::SaveLayerRec(rawBounds, &t mp), 490 (void)canvas->internalSaveLayer(SkCanvas::SaveLayerRec(rawBounds, &t mp),
491 SkCanvas::kFullLayer_SaveLayerStrate gy); 491 SkCanvas::kFullLayer_SaveLayerStrate gy);
492 fTempLayerForImageFilter = true; 492 fTempLayerForImageFilter = true;
493 // we remove the imagefilter/xfermode inside doNext() 493 // we remove the imagefilter/xfermode inside doNext()
494 } 494 }
(...skipping 2546 matching lines...) Expand 10 before | Expand all | Expand 10 after
3041 3041
3042 SkAutoCanvasMatrixPaint::~SkAutoCanvasMatrixPaint() { 3042 SkAutoCanvasMatrixPaint::~SkAutoCanvasMatrixPaint() {
3043 fCanvas->restoreToCount(fSaveCount); 3043 fCanvas->restoreToCount(fSaveCount);
3044 } 3044 }
3045 3045
3046 #ifdef SK_SUPPORT_LEGACY_NEW_SURFACE_API 3046 #ifdef SK_SUPPORT_LEGACY_NEW_SURFACE_API
3047 SkSurface* SkCanvas::newSurface(const SkImageInfo& info, const SkSurfaceProps* p rops) { 3047 SkSurface* SkCanvas::newSurface(const SkImageInfo& info, const SkSurfaceProps* p rops) {
3048 return this->makeSurface(info, props).release(); 3048 return this->makeSurface(info, props).release();
3049 } 3049 }
3050 #endif 3050 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698