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

Side by Side Diff: Source/core/paint/BoxPainter.cpp

Issue 669123002: Fixed Shadow blur for transparent objects (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Added missing virtual layout test to TestExpectations Created 6 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #include "config.h" 5 #include "config.h"
6 #include "core/paint/BoxPainter.h" 6 #include "core/paint/BoxPainter.h"
7 7
8 #include "core/HTMLNames.h" 8 #include "core/HTMLNames.h"
9 #include "core/frame/Settings.h" 9 #include "core/frame/Settings.h"
10 #include "core/html/HTMLFrameOwnerElement.h" 10 #include "core/html/HTMLFrameOwnerElement.h"
(...skipping 1905 matching lines...) Expand 10 before | Expand all | Expand 10 after
1916 rectToClipOut.inflate(-1); 1916 rectToClipOut.inflate(-1);
1917 } 1917 }
1918 1918
1919 if (!rectToClipOut.isEmpty()) { 1919 if (!rectToClipOut.isEmpty()) {
1920 context->clipOut(rectToClipOut); 1920 context->clipOut(rectToClipOut);
1921 } 1921 }
1922 } 1922 }
1923 } 1923 }
1924 1924
1925 // Draw only the shadow. 1925 // Draw only the shadow.
1926 OwnPtr<DrawLooperBuilder> drawLooperBuilder = DrawLooperBuilder::cre ate(); 1926 context->setShadow(shadowOffset, shadowBlur, shadowColor, DrawLooper Builder::ShadowRespectsTransforms, DrawLooperBuilder::ShadowIgnoresAlpha, DrawSh adowOnly);
1927 drawLooperBuilder->addShadow(shadowOffset, shadowBlur, shadowColor,
1928 DrawLooperBuilder::ShadowRespectsTransforms, DrawLooperBuilder:: ShadowIgnoresAlpha);
1929 context->setDrawLooper(drawLooperBuilder.release());
1930 1927
1931 if (hasBorderRadius) { 1928 if (hasBorderRadius) {
1932 RoundedRect influenceRect(pixelSnappedIntRect(LayoutRect(shadowR ect)), border.radii()); 1929 RoundedRect influenceRect(pixelSnappedIntRect(LayoutRect(shadowR ect)), border.radii());
1933 influenceRect.expandRadii(2 * shadowBlur + shadowSpread); 1930 influenceRect.expandRadii(2 * shadowBlur + shadowSpread);
1934 if (allCornersClippedOut(influenceRect, info.rect)) { 1931 if (allCornersClippedOut(influenceRect, info.rect)) {
1935 context->fillRect(fillRect, Color::black); 1932 context->fillRect(fillRect, Color::black);
1936 } else { 1933 } else {
1937 // TODO: support non-integer shadows - crbug.com/334829 1934 // TODO: support non-integer shadows - crbug.com/334829
1938 RoundedRect roundedFillRect = border; 1935 RoundedRect roundedFillRect = border;
1939 roundedFillRect.inflate(shadowSpread); 1936 roundedFillRect.inflate(shadowSpread);
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
2147 2144
2148 FloatPoint secondQuad[4]; 2145 FloatPoint secondQuad[4];
2149 secondQuad[0] = quad[0]; 2146 secondQuad[0] = quad[0];
2150 secondQuad[1] = FloatPoint(quad[0].x() - r1 * cx, quad[0].y() - r1 * cy); 2147 secondQuad[1] = FloatPoint(quad[0].x() - r1 * cx, quad[0].y() - r1 * cy);
2151 secondQuad[2] = quad[2]; 2148 secondQuad[2] = quad[2];
2152 secondQuad[3] = quad[3]; 2149 secondQuad[3] = quad[3];
2153 graphicsContext->clipPolygon(4, secondQuad, !secondEdgeMatches); 2150 graphicsContext->clipPolygon(4, secondQuad, !secondEdgeMatches);
2154 } 2151 }
2155 2152
2156 } // namespace blink 2153 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698