OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
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 22 matching lines...) Expand all Loading... |
33 #include "core/frame/FrameView.h" | 33 #include "core/frame/FrameView.h" |
34 #include "core/frame/LocalFrame.h" | 34 #include "core/frame/LocalFrame.h" |
35 #include "core/rendering/RenderLayer.h" | 35 #include "core/rendering/RenderLayer.h" |
36 #include "core/rendering/RenderLayerModelObject.h" | 36 #include "core/rendering/RenderLayerModelObject.h" |
37 #include "core/rendering/RenderObject.h" | 37 #include "core/rendering/RenderObject.h" |
38 #include "core/rendering/RenderPart.h" | 38 #include "core/rendering/RenderPart.h" |
39 #include "core/rendering/RenderView.h" | 39 #include "core/rendering/RenderView.h" |
40 #include "core/rendering/compositing/CompositedLayerMapping.h" | 40 #include "core/rendering/compositing/CompositedLayerMapping.h" |
41 #include "core/rendering/style/ShadowData.h" | 41 #include "core/rendering/style/ShadowData.h" |
42 #include "platform/graphics/Color.h" | 42 #include "platform/graphics/Color.h" |
43 #include "platform/graphics/DisplayList.h" | |
44 #include "public/platform/Platform.h" | 43 #include "public/platform/Platform.h" |
45 #include "public/platform/WebCompositorAnimationCurve.h" | 44 #include "public/platform/WebCompositorAnimationCurve.h" |
46 #include "public/platform/WebCompositorSupport.h" | 45 #include "public/platform/WebCompositorSupport.h" |
47 #include "public/platform/WebFloatAnimationCurve.h" | 46 #include "public/platform/WebFloatAnimationCurve.h" |
48 #include "public/platform/WebFloatPoint.h" | 47 #include "public/platform/WebFloatPoint.h" |
49 #include "public/platform/WebRect.h" | 48 #include "public/platform/WebRect.h" |
50 #include "public/platform/WebSize.h" | 49 #include "public/platform/WebSize.h" |
51 #include "public/web/WebKit.h" | 50 #include "public/web/WebKit.h" |
52 #include "web/WebLocalFrameImpl.h" | 51 #include "web/WebLocalFrameImpl.h" |
53 #include "web/WebSettingsImpl.h" | 52 #include "web/WebSettingsImpl.h" |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 } else | 220 } else |
222 addQuadToPath(transformedQuad, newPath); | 221 addQuadToPath(transformedQuad, newPath); |
223 } | 222 } |
224 | 223 |
225 FloatRect boundingRect = newPath.boundingRect(); | 224 FloatRect boundingRect = newPath.boundingRect(); |
226 newPath.translate(-toFloatSize(boundingRect.location())); | 225 newPath.translate(-toFloatSize(boundingRect.location())); |
227 | 226 |
228 bool pathHasChanged = !(newPath == m_path); | 227 bool pathHasChanged = !(newPath == m_path); |
229 if (pathHasChanged) { | 228 if (pathHasChanged) { |
230 m_path = newPath; | 229 m_path = newPath; |
231 | |
232 GraphicsContext gc(0); | |
233 gc.beginRecording(boundingRect); | |
234 gc.setFillColor(m_node->renderer()->style()->tapHighlightColor()); | |
235 gc.fillPath(m_path); | |
236 m_displayList = gc.endRecording(); | |
237 | |
238 m_contentLayer->layer()->setBounds(enclosingIntRect(boundingRect).size()
); | 230 m_contentLayer->layer()->setBounds(enclosingIntRect(boundingRect).size()
); |
239 } | 231 } |
240 | 232 |
241 m_contentLayer->layer()->setPosition(boundingRect.location()); | 233 m_contentLayer->layer()->setPosition(boundingRect.location()); |
242 | 234 |
243 return pathHasChanged; | 235 return pathHasChanged; |
244 } | 236 } |
245 | 237 |
246 void LinkHighlight::paintContents(WebCanvas* canvas, const WebRect& webClipRect,
bool, WebContentLayerClient::GraphicsContextStatus contextStatus) | 238 void LinkHighlight::paintContents(WebCanvas* canvas, const WebRect& webClipRect,
bool, WebContentLayerClient::GraphicsContextStatus contextStatus) |
247 { | 239 { |
248 if (!m_node || !m_node->renderer()) | 240 if (!m_node || !m_node->renderer()) |
249 return; | 241 return; |
250 | 242 |
251 GraphicsContext gc(canvas, | 243 GraphicsContext gc(canvas, |
252 contextStatus == WebContentLayerClient::GraphicsContextEnabled ? Graphic
sContext::NothingDisabled : GraphicsContext::FullyDisabled); | 244 contextStatus == WebContentLayerClient::GraphicsContextEnabled ? Graphic
sContext::NothingDisabled : GraphicsContext::FullyDisabled); |
253 IntRect clipRect(IntPoint(webClipRect.x, webClipRect.y), IntSize(webClipRect
.width, webClipRect.height)); | 245 IntRect clipRect(IntPoint(webClipRect.x, webClipRect.y), IntSize(webClipRect
.width, webClipRect.height)); |
254 m_displayList->setClip(clipRect); | 246 gc.clip(clipRect); |
255 gc.drawDisplayList(m_displayList.get()); | 247 gc.setFillColor(m_node->renderer()->style()->tapHighlightColor()); |
| 248 gc.fillPath(m_path); |
256 } | 249 } |
257 | 250 |
258 void LinkHighlight::startHighlightAnimationIfNeeded() | 251 void LinkHighlight::startHighlightAnimationIfNeeded() |
259 { | 252 { |
260 if (m_isAnimating) | 253 if (m_isAnimating) |
261 return; | 254 return; |
262 | 255 |
263 m_isAnimating = true; | 256 m_isAnimating = true; |
264 const float startOpacity = 1; | 257 const float startOpacity = 1; |
265 // FIXME: Should duration be configurable? | 258 // FIXME: Should duration be configurable? |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
346 // Make sure we update geometry on the next callback from WebViewImpl::layou
t(). | 339 // Make sure we update geometry on the next callback from WebViewImpl::layou
t(). |
347 m_geometryNeedsUpdate = true; | 340 m_geometryNeedsUpdate = true; |
348 } | 341 } |
349 | 342 |
350 WebLayer* LinkHighlight::layer() | 343 WebLayer* LinkHighlight::layer() |
351 { | 344 { |
352 return clipLayer(); | 345 return clipLayer(); |
353 } | 346 } |
354 | 347 |
355 } // namespace blink | 348 } // namespace blink |
OLD | NEW |