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

Side by Side Diff: third_party/WebKit/Source/modules/canvas2d/BaseRenderingContext2D.h

Issue 2472543002: remove legacy Skia flags (Closed)
Patch Set: change getters to return a ref Created 4 years, 1 month 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 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef BaseRenderingContext2D_h 5 #ifndef BaseRenderingContext2D_h
6 #define BaseRenderingContext2D_h 6 #define BaseRenderingContext2D_h
7 7
8 #include "bindings/modules/v8/CSSImageValueOrHTMLImageElementOrHTMLVideoElementO rHTMLCanvasElementOrImageBitmapOrOffscreenCanvas.h" 8 #include "bindings/modules/v8/CSSImageValueOrHTMLImageElementOrHTMLVideoElementO rHTMLCanvasElementOrImageBitmapOrOffscreenCanvas.h"
9 #include "bindings/modules/v8/StringOrCanvasGradientOrCanvasPattern.h" 9 #include "bindings/modules/v8/StringOrCanvasGradientOrCanvasPattern.h"
10 #include "core/html/ImageData.h" 10 #include "core/html/ImageData.h"
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 221
222 virtual SkCanvas* drawingCanvas() const = 0; 222 virtual SkCanvas* drawingCanvas() const = 0;
223 virtual SkCanvas* existingDrawingCanvas() const = 0; 223 virtual SkCanvas* existingDrawingCanvas() const = 0;
224 virtual void disableDeferral(DisableDeferralReason) = 0; 224 virtual void disableDeferral(DisableDeferralReason) = 0;
225 225
226 virtual AffineTransform baseTransform() const = 0; 226 virtual AffineTransform baseTransform() const = 0;
227 227
228 virtual void didDraw(const SkIRect& dirtyRect) = 0; 228 virtual void didDraw(const SkIRect& dirtyRect) = 0;
229 229
230 virtual bool stateHasFilter() = 0; 230 virtual bool stateHasFilter() = 0;
231 virtual SkImageFilter* stateGetFilter() = 0; 231 virtual sk_sp<SkImageFilter> stateGetFilter() = 0;
232 virtual void snapshotStateForFilter() = 0; 232 virtual void snapshotStateForFilter() = 0;
233 233
234 virtual void validateStateStack() const = 0; 234 virtual void validateStateStack() const = 0;
235 235
236 virtual bool hasAlpha() const = 0; 236 virtual bool hasAlpha() const = 0;
237 237
238 virtual bool isContextLost() const = 0; 238 virtual bool isContextLost() const = 0;
239 239
240 void restoreMatrixClipStack(SkCanvas*) const; 240 void restoreMatrixClipStack(SkCanvas*) const;
241 241
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 } 415 }
416 return true; 416 return true;
417 } 417 }
418 418
419 template <typename DrawFunc> 419 template <typename DrawFunc>
420 void BaseRenderingContext2D::compositedDraw( 420 void BaseRenderingContext2D::compositedDraw(
421 const DrawFunc& drawFunc, 421 const DrawFunc& drawFunc,
422 SkCanvas* c, 422 SkCanvas* c,
423 CanvasRenderingContext2DState::PaintType paintType, 423 CanvasRenderingContext2DState::PaintType paintType,
424 CanvasRenderingContext2DState::ImageType imageType) { 424 CanvasRenderingContext2DState::ImageType imageType) {
425 SkImageFilter* filter = stateGetFilter(); 425 sk_sp<SkImageFilter> filter = stateGetFilter();
426 ASSERT(isFullCanvasCompositeMode(state().globalComposite()) || filter); 426 ASSERT(isFullCanvasCompositeMode(state().globalComposite()) || filter);
427 SkMatrix ctm = c->getTotalMatrix(); 427 SkMatrix ctm = c->getTotalMatrix();
428 c->resetMatrix(); 428 c->resetMatrix();
429 SkPaint compositePaint; 429 SkPaint compositePaint;
430 compositePaint.setBlendMode((SkBlendMode)state().globalComposite()); 430 compositePaint.setBlendMode((SkBlendMode)state().globalComposite());
431 if (state().shouldDrawShadows()) { 431 if (state().shouldDrawShadows()) {
432 // unroll into two independently composited passes if drawing shadows 432 // unroll into two independently composited passes if drawing shadows
433 SkPaint shadowPaint = 433 SkPaint shadowPaint =
434 *state().getPaint(paintType, DrawShadowOnly, imageType); 434 *state().getPaint(paintType, DrawShadowOnly, imageType);
435 int saveCount = c->getSaveCount(); 435 int saveCount = c->getSaveCount();
436 if (filter) { 436 if (filter) {
437 SkPaint foregroundPaint = 437 SkPaint foregroundPaint =
438 *state().getPaint(paintType, DrawForegroundOnly, imageType); 438 *state().getPaint(paintType, DrawForegroundOnly, imageType);
439 sk_sp<SkImageFilter> composedFilter = 439 sk_sp<SkImageFilter> composedFilter =
440 sk_ref_sp(foregroundPaint.getImageFilter()); 440 sk_ref_sp(foregroundPaint.getImageFilter());
441 composedFilter = SkComposeImageFilter::Make( 441 composedFilter = SkComposeImageFilter::Make(
442 std::move(composedFilter), sk_ref_sp(shadowPaint.getImageFilter())); 442 std::move(composedFilter), sk_ref_sp(shadowPaint.getImageFilter()));
443 composedFilter = SkComposeImageFilter::Make(std::move(composedFilter), 443 composedFilter =
444 sk_ref_sp(filter)); 444 SkComposeImageFilter::Make(std::move(composedFilter), filter);
445 foregroundPaint.setImageFilter(std::move(composedFilter)); 445 foregroundPaint.setImageFilter(std::move(composedFilter));
446 c->setMatrix(ctm); 446 c->setMatrix(ctm);
447 drawFunc(c, &foregroundPaint); 447 drawFunc(c, &foregroundPaint);
448 } else { 448 } else {
449 ASSERT(isFullCanvasCompositeMode(state().globalComposite())); 449 ASSERT(isFullCanvasCompositeMode(state().globalComposite()));
450 c->saveLayer(nullptr, &compositePaint); 450 c->saveLayer(nullptr, &compositePaint);
451 shadowPaint.setBlendMode(SkBlendMode::kSrcOver); 451 shadowPaint.setBlendMode(SkBlendMode::kSrcOver);
452 c->setMatrix(ctm); 452 c->setMatrix(ctm);
453 drawFunc(c, &shadowPaint); 453 drawFunc(c, &shadowPaint);
454 } 454 }
455 c->restoreToCount(saveCount); 455 c->restoreToCount(saveCount);
456 } 456 }
457 457
458 compositePaint.setImageFilter(filter); 458 compositePaint.setImageFilter(filter);
f(malita) 2016/11/02 14:24:50 nit: should be safe to std::move(filter) here.
reed1 2016/11/02 15:30:37 Done.
459 c->saveLayer(nullptr, &compositePaint); 459 c->saveLayer(nullptr, &compositePaint);
460 SkPaint foregroundPaint = 460 SkPaint foregroundPaint =
461 *state().getPaint(paintType, DrawForegroundOnly, imageType); 461 *state().getPaint(paintType, DrawForegroundOnly, imageType);
462 foregroundPaint.setBlendMode(SkBlendMode::kSrcOver); 462 foregroundPaint.setBlendMode(SkBlendMode::kSrcOver);
463 c->setMatrix(ctm); 463 c->setMatrix(ctm);
464 drawFunc(c, &foregroundPaint); 464 drawFunc(c, &foregroundPaint);
465 c->restore(); 465 c->restore();
466 c->setMatrix(ctm); 466 c->setMatrix(ctm);
467 } 467 }
468 468
469 } // namespace blink 469 } // namespace blink
470 470
471 #endif // BaseRenderingContext2D_h 471 #endif // BaseRenderingContext2D_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698