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

Side by Side Diff: third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2D.cpp

Issue 1654653002: Canvas2d: Implement rerouting event by hit region's control. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Pass existing tests. Created 4 years, 10 months 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 /* 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 24 matching lines...) Expand all
35 #include "bindings/core/v8/ExceptionMessages.h" 35 #include "bindings/core/v8/ExceptionMessages.h"
36 #include "bindings/core/v8/ExceptionState.h" 36 #include "bindings/core/v8/ExceptionState.h"
37 #include "bindings/core/v8/ExceptionStatePlaceholder.h" 37 #include "bindings/core/v8/ExceptionStatePlaceholder.h"
38 #include "core/CSSPropertyNames.h" 38 #include "core/CSSPropertyNames.h"
39 #include "core/css/StylePropertySet.h" 39 #include "core/css/StylePropertySet.h"
40 #include "core/css/parser/CSSParser.h" 40 #include "core/css/parser/CSSParser.h"
41 #include "core/css/resolver/StyleResolver.h" 41 #include "core/css/resolver/StyleResolver.h"
42 #include "core/dom/AXObjectCache.h" 42 #include "core/dom/AXObjectCache.h"
43 #include "core/dom/StyleEngine.h" 43 #include "core/dom/StyleEngine.h"
44 #include "core/events/Event.h" 44 #include "core/events/Event.h"
45 #include "core/events/MouseEvent.h"
45 #include "core/frame/ImageBitmap.h" 46 #include "core/frame/ImageBitmap.h"
46 #include "core/frame/Settings.h" 47 #include "core/frame/Settings.h"
47 #include "core/html/HTMLVideoElement.h" 48 #include "core/html/HTMLVideoElement.h"
48 #include "core/html/ImageData.h" 49 #include "core/html/ImageData.h"
49 #include "core/html/TextMetrics.h" 50 #include "core/html/TextMetrics.h"
50 #include "core/html/canvas/CanvasFontCache.h" 51 #include "core/html/canvas/CanvasFontCache.h"
51 #include "core/layout/LayoutBox.h" 52 #include "core/layout/LayoutBox.h"
52 #include "core/layout/LayoutTheme.h" 53 #include "core/layout/LayoutTheme.h"
53 #include "modules/canvas2d/CanvasGradient.h" 54 #include "modules/canvas2d/CanvasGradient.h"
54 #include "modules/canvas2d/CanvasPattern.h" 55 #include "modules/canvas2d/CanvasPattern.h"
(...skipping 1734 matching lines...) Expand 10 before | Expand all | Expand 10 after
1789 } 1790 }
1790 } 1791 }
1791 1792
1792 void CanvasRenderingContext2D::styleDidChange(const ComputedStyle* oldStyle, con st ComputedStyle& newStyle) 1793 void CanvasRenderingContext2D::styleDidChange(const ComputedStyle* oldStyle, con st ComputedStyle& newStyle)
1793 { 1794 {
1794 if (oldStyle && oldStyle->font() == newStyle.font()) 1795 if (oldStyle && oldStyle->font() == newStyle.font())
1795 return; 1796 return;
1796 pruneLocalFontCache(0); 1797 pruneLocalFontCache(0);
1797 } 1798 }
1798 1799
1800 std::pair<Element*, String> CanvasRenderingContext2D::getControlAndIDIfHitRegion Exists(const LayoutPoint& location)
1801 {
1802 Document& document = canvas()->document();
1803 document.updateLayoutTreeForNodeIfNeeded(canvas());
Justin Novosad 2016/02/05 15:22:53 Updating layout... Is this the right thing to do?
Rick Byers 2016/02/05 16:01:20 I agree we absolutely don't want to force any extr
zino 2016/02/12 15:26:19 Probably done.
Justin Novosad 2016/02/12 15:41:59 I think this is correct (layout "IfNeeded"). But I
1804
1805 LayoutBox* box = canvas()->layoutBox();
1806 FloatPoint localPos = box->absoluteToLocal(FloatPoint(location), UseTransfor ms);
1807 if (box->hasBorderOrPadding())
1808 localPos.move(-box->contentBoxOffset());
1809 localPos.scale(canvas()->width() / box->contentWidth(), canvas()->height() / box->contentHeight());
1810
1811 HitRegion* hitRegion = hitRegionAtPoint(localPos);
1812 if (hitRegion)
1813 return std::make_pair(hitRegion->control(), hitRegion->id());
1814 return std::make_pair(nullptr, String());
1815 }
1816
1799 String CanvasRenderingContext2D::textAlign() const 1817 String CanvasRenderingContext2D::textAlign() const
1800 { 1818 {
1801 return textAlignName(state().textAlign()); 1819 return textAlignName(state().textAlign());
1802 } 1820 }
1803 1821
1804 void CanvasRenderingContext2D::setTextAlign(const String& s) 1822 void CanvasRenderingContext2D::setTextAlign(const String& s)
1805 { 1823 {
1806 TextAlign align; 1824 TextAlign align;
1807 if (!parseTextAlign(s, align)) 1825 if (!parseTextAlign(s, align))
1808 return; 1826 return;
(...skipping 517 matching lines...) Expand 10 before | Expand all | Expand 10 after
2326 if (imageType == CanvasRenderingContext2DState::NonOpaqueImage) 2344 if (imageType == CanvasRenderingContext2DState::NonOpaqueImage)
2327 return; 2345 return;
2328 if (alpha < 0xFF) 2346 if (alpha < 0xFF)
2329 return; 2347 return;
2330 } 2348 }
2331 2349
2332 canvas()->buffer()->willOverwriteCanvas(); 2350 canvas()->buffer()->willOverwriteCanvas();
2333 } 2351 }
2334 2352
2335 } // namespace blink 2353 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698