| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2003, 2004, 2005, 2006, 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2003, 2004, 2005, 2006, 2009 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2013 Google Inc. All rights reserved. | 3 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 #include "third_party/skia/include/pathops/SkPathOps.h" | 51 #include "third_party/skia/include/pathops/SkPathOps.h" |
| 52 #include "third_party/skia/include/utils/SkNullCanvas.h" | 52 #include "third_party/skia/include/utils/SkNullCanvas.h" |
| 53 #include "wtf/Assertions.h" | 53 #include "wtf/Assertions.h" |
| 54 #include "wtf/MathExtras.h" | 54 #include "wtf/MathExtras.h" |
| 55 #include <memory> | 55 #include <memory> |
| 56 | 56 |
| 57 namespace blink { | 57 namespace blink { |
| 58 | 58 |
| 59 GraphicsContext::GraphicsContext(PaintController& paintController, | 59 GraphicsContext::GraphicsContext(PaintController& paintController, |
| 60 DisabledMode disableContextOrPainting, | 60 DisabledMode disableContextOrPainting, |
| 61 SkMetaData* metaData, | 61 SkMetaData* metaData) |
| 62 ColorBehavior colorBehavior) | |
| 63 : m_canvas(nullptr), | 62 : m_canvas(nullptr), |
| 64 m_paintController(paintController), | 63 m_paintController(paintController), |
| 65 m_paintStateStack(), | 64 m_paintStateStack(), |
| 66 m_paintStateIndex(0), | 65 m_paintStateIndex(0), |
| 67 m_colorBehavior(colorBehavior), | |
| 68 #if DCHECK_IS_ON() | 66 #if DCHECK_IS_ON() |
| 69 m_layerCount(0), | 67 m_layerCount(0), |
| 70 m_disableDestructionChecks(false), | 68 m_disableDestructionChecks(false), |
| 71 m_inDrawingRecorder(false), | 69 m_inDrawingRecorder(false), |
| 72 #endif | 70 #endif |
| 73 m_disabledState(disableContextOrPainting), | 71 m_disabledState(disableContextOrPainting), |
| 74 m_deviceScaleFactor(1.0f), | 72 m_deviceScaleFactor(1.0f), |
| 75 m_printing(false), | 73 m_printing(false), |
| 76 m_hasMetaData(!!metaData) { | 74 m_hasMetaData(!!metaData) { |
| 77 if (metaData) | 75 if (metaData) |
| (...skipping 743 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 821 return; | 819 return; |
| 822 | 820 |
| 823 const FloatRect src = srcPtr ? *srcPtr : image->rect(); | 821 const FloatRect src = srcPtr ? *srcPtr : image->rect(); |
| 824 | 822 |
| 825 PaintFlags imageFlags = immutableState()->fillFlags(); | 823 PaintFlags imageFlags = immutableState()->fillFlags(); |
| 826 imageFlags.setBlendMode(op); | 824 imageFlags.setBlendMode(op); |
| 827 imageFlags.setColor(SK_ColorBLACK); | 825 imageFlags.setColor(SK_ColorBLACK); |
| 828 imageFlags.setFilterQuality(computeFilterQuality(image, dest, src)); | 826 imageFlags.setFilterQuality(computeFilterQuality(image, dest, src)); |
| 829 imageFlags.setAntiAlias(shouldAntialias()); | 827 imageFlags.setAntiAlias(shouldAntialias()); |
| 830 image->draw(m_canvas, imageFlags, dest, src, shouldRespectImageOrientation, | 828 image->draw(m_canvas, imageFlags, dest, src, shouldRespectImageOrientation, |
| 831 Image::ClampImageToSourceRect, m_colorBehavior); | 829 Image::ClampImageToSourceRect); |
| 832 m_paintController.setImagePainted(); | 830 m_paintController.setImagePainted(); |
| 833 } | 831 } |
| 834 | 832 |
| 835 void GraphicsContext::drawImageRRect( | 833 void GraphicsContext::drawImageRRect( |
| 836 Image* image, | 834 Image* image, |
| 837 const FloatRoundedRect& dest, | 835 const FloatRoundedRect& dest, |
| 838 const FloatRect& srcRect, | 836 const FloatRect& srcRect, |
| 839 SkBlendMode op, | 837 SkBlendMode op, |
| 840 RespectImageOrientationEnum respectOrientation) { | 838 RespectImageOrientationEnum respectOrientation) { |
| 841 if (contextDisabled() || !image) | 839 if (contextDisabled() || !image) |
| (...skipping 15 matching lines...) Expand all Loading... |
| 857 imageFlags.setColor(SK_ColorBLACK); | 855 imageFlags.setColor(SK_ColorBLACK); |
| 858 imageFlags.setFilterQuality( | 856 imageFlags.setFilterQuality( |
| 859 computeFilterQuality(image, dest.rect(), srcRect)); | 857 computeFilterQuality(image, dest.rect(), srcRect)); |
| 860 imageFlags.setAntiAlias(shouldAntialias()); | 858 imageFlags.setAntiAlias(shouldAntialias()); |
| 861 | 859 |
| 862 bool useShader = (visibleSrc == srcRect) && | 860 bool useShader = (visibleSrc == srcRect) && |
| 863 (respectOrientation == DoNotRespectImageOrientation); | 861 (respectOrientation == DoNotRespectImageOrientation); |
| 864 if (useShader) { | 862 if (useShader) { |
| 865 const SkMatrix localMatrix = SkMatrix::MakeRectToRect( | 863 const SkMatrix localMatrix = SkMatrix::MakeRectToRect( |
| 866 visibleSrc, dest.rect(), SkMatrix::kFill_ScaleToFit); | 864 visibleSrc, dest.rect(), SkMatrix::kFill_ScaleToFit); |
| 867 useShader = image->applyShader(imageFlags, localMatrix, m_colorBehavior); | 865 useShader = image->applyShader(imageFlags, localMatrix); |
| 868 } | 866 } |
| 869 | 867 |
| 870 if (useShader) { | 868 if (useShader) { |
| 871 // Shader-based fast path. | 869 // Shader-based fast path. |
| 872 m_canvas->drawRRect(dest, imageFlags); | 870 m_canvas->drawRRect(dest, imageFlags); |
| 873 } else { | 871 } else { |
| 874 // Clip-based fallback. | 872 // Clip-based fallback. |
| 875 PaintCanvasAutoRestore autoRestore(m_canvas, true); | 873 PaintCanvasAutoRestore autoRestore(m_canvas, true); |
| 876 m_canvas->clipRRect(dest, imageFlags.isAntiAlias()); | 874 m_canvas->clipRRect(dest, imageFlags.isAntiAlias()); |
| 877 image->draw(m_canvas, imageFlags, dest.rect(), srcRect, respectOrientation, | 875 image->draw(m_canvas, imageFlags, dest.rect(), srcRect, respectOrientation, |
| 878 Image::ClampImageToSourceRect, m_colorBehavior); | 876 Image::ClampImageToSourceRect); |
| 879 } | 877 } |
| 880 | 878 |
| 881 m_paintController.setImagePainted(); | 879 m_paintController.setImagePainted(); |
| 882 } | 880 } |
| 883 | 881 |
| 884 SkFilterQuality GraphicsContext::computeFilterQuality( | 882 SkFilterQuality GraphicsContext::computeFilterQuality( |
| 885 Image* image, | 883 Image* image, |
| 886 const FloatRect& dest, | 884 const FloatRect& dest, |
| 887 const FloatRect& src) const { | 885 const FloatRect& src) const { |
| 888 InterpolationQuality resampling; | 886 InterpolationQuality resampling; |
| (...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1339 break; | 1337 break; |
| 1340 default: | 1338 default: |
| 1341 NOTREACHED(); | 1339 NOTREACHED(); |
| 1342 break; | 1340 break; |
| 1343 } | 1341 } |
| 1344 | 1342 |
| 1345 return nullptr; | 1343 return nullptr; |
| 1346 } | 1344 } |
| 1347 | 1345 |
| 1348 } // namespace blink | 1346 } // namespace blink |
| OLD | NEW |