Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. | 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies) | 3 * Copyright (C) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies) |
| 4 * Copyright (C) 2007 Alp Toker <alp@atoker.com> | 4 * Copyright (C) 2007 Alp Toker <alp@atoker.com> |
| 5 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> | 5 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> |
| 6 * Copyright (C) 2008 Dirk Schulze <krit@webkit.org> | 6 * Copyright (C) 2008 Dirk Schulze <krit@webkit.org> |
| 7 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. | 7 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. |
| 8 * Copyright (C) 2012, 2013 Intel Corporation. All rights reserved. | 8 * Copyright (C) 2012, 2013 Intel Corporation. All rights reserved. |
| 9 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. | 9 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. |
| 10 * | 10 * |
| (...skipping 858 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 869 c->restore(); | 869 c->restore(); |
| 870 c->setMatrix(ctm); | 870 c->setMatrix(ctm); |
| 871 } | 871 } |
| 872 | 872 |
| 873 template<typename DrawFunc, typename ContainsFunc> | 873 template<typename DrawFunc, typename ContainsFunc> |
| 874 bool CanvasRenderingContext2D::draw(const DrawFunc& drawFunc, const ContainsFunc & drawCoversClipBounds, const SkRect& bounds, CanvasRenderingContext2DState::Pai ntType paintType, CanvasRenderingContext2DState::ImageType imageType) | 874 bool CanvasRenderingContext2D::draw(const DrawFunc& drawFunc, const ContainsFunc & drawCoversClipBounds, const SkRect& bounds, CanvasRenderingContext2DState::Pai ntType paintType, CanvasRenderingContext2DState::ImageType imageType) |
| 875 { | 875 { |
| 876 if (!state().isTransformInvertible()) | 876 if (!state().isTransformInvertible()) |
| 877 return false; | 877 return false; |
| 878 | 878 |
| 879 // Filter construction can depend on the bounding box of the canvas' layout object, | |
| 880 // so we need layout to be up-to-date if filter construction is needed. Howe ver, | |
| 881 // layout can trigger scripts that cause the canvas to be freed, so we need to | |
| 882 // trigger layout before checking for the drawing canvas. | |
| 883 if (state().needsToBuildFilter()) | |
| 884 canvas()->document().updateLayoutIgnorePendingStylesheets(); | |
|
Justin Novosad
2016/01/15 21:16:28
This is a big hammer that may affect performance i
ajuma
2016/01/18 14:34:15
Turns out that updateLayoutTreeForNodeIfNeeded isn
| |
| 885 | |
| 879 SkIRect clipBounds; | 886 SkIRect clipBounds; |
| 880 if (!drawingCanvas() || !drawingCanvas()->getClipDeviceBounds(&clipBounds)) | 887 if (!drawingCanvas() || !drawingCanvas()->getClipDeviceBounds(&clipBounds)) |
| 881 return false; | 888 return false; |
| 882 | 889 |
| 883 // If gradient size is zero, then paint nothing. | 890 // If gradient size is zero, then paint nothing. |
| 884 CanvasStyle* style = state().style(paintType); | 891 CanvasStyle* style = state().style(paintType); |
| 885 if (style) { | 892 if (style) { |
| 886 CanvasGradient* gradient = style->canvasGradient(); | 893 CanvasGradient* gradient = style->canvasGradient(); |
| 887 if (gradient && gradient->gradient()->isZeroSize()) | 894 if (gradient && gradient->gradient()->isZeroSize()) |
| 888 return false; | 895 return false; |
| (...skipping 1439 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2328 if (imageType == CanvasRenderingContext2DState::NonOpaqueImage) | 2335 if (imageType == CanvasRenderingContext2DState::NonOpaqueImage) |
| 2329 return; | 2336 return; |
| 2330 if (alpha < 0xFF) | 2337 if (alpha < 0xFF) |
| 2331 return; | 2338 return; |
| 2332 } | 2339 } |
| 2333 | 2340 |
| 2334 canvas()->buffer()->willOverwriteCanvas(); | 2341 canvas()->buffer()->willOverwriteCanvas(); |
| 2335 } | 2342 } |
| 2336 | 2343 |
| 2337 } // namespace blink | 2344 } // namespace blink |
| OLD | NEW |