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

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: fix bot errors Created 4 years, 9 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 23 matching lines...) Expand all
34 34
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/resolver/StyleResolver.h" 40 #include "core/css/resolver/StyleResolver.h"
41 #include "core/dom/AXObjectCache.h" 41 #include "core/dom/AXObjectCache.h"
42 #include "core/dom/StyleEngine.h" 42 #include "core/dom/StyleEngine.h"
43 #include "core/events/Event.h" 43 #include "core/events/Event.h"
44 #include "core/events/MouseEvent.h"
44 #include "core/frame/Settings.h" 45 #include "core/frame/Settings.h"
45 #include "core/html/TextMetrics.h" 46 #include "core/html/TextMetrics.h"
46 #include "core/html/canvas/CanvasFontCache.h" 47 #include "core/html/canvas/CanvasFontCache.h"
47 #include "core/layout/LayoutBox.h" 48 #include "core/layout/LayoutBox.h"
48 #include "core/layout/LayoutTheme.h" 49 #include "core/layout/LayoutTheme.h"
49 #include "modules/canvas2d/CanvasStyle.h" 50 #include "modules/canvas2d/CanvasStyle.h"
50 #include "modules/canvas2d/HitRegion.h" 51 #include "modules/canvas2d/HitRegion.h"
51 #include "modules/canvas2d/Path2D.h" 52 #include "modules/canvas2d/Path2D.h"
52 #include "platform/fonts/FontCache.h" 53 #include "platform/fonts/FontCache.h"
53 #include "platform/graphics/DrawLooperBuilder.h" 54 #include "platform/graphics/DrawLooperBuilder.h"
(...skipping 517 matching lines...) Expand 10 before | Expand all | Expand 10 after
571 ImageBuffer* CanvasRenderingContext2D::imageBuffer() const 572 ImageBuffer* CanvasRenderingContext2D::imageBuffer() const
572 { 573 {
573 return canvas()->buffer(); 574 return canvas()->buffer();
574 } 575 }
575 576
576 bool CanvasRenderingContext2D::parseColorOrCurrentColor(Color& color, const Stri ng& colorString) const 577 bool CanvasRenderingContext2D::parseColorOrCurrentColor(Color& color, const Stri ng& colorString) const
577 { 578 {
578 return ::blink::parseColorOrCurrentColor(color, colorString, canvas()); 579 return ::blink::parseColorOrCurrentColor(color, colorString, canvas());
579 } 580 }
580 581
582 std::pair<Element*, String> CanvasRenderingContext2D::getControlAndIdIfHitRegion Exists(const LayoutPoint& location)
583 {
584 if (hitRegionsCount() <= 0)
585 return std::make_pair(nullptr, String());
586
587 LayoutBox* box = canvas()->layoutBox();
588 FloatPoint localPos = box->absoluteToLocal(FloatPoint(location), UseTransfor ms);
589 if (box->hasBorderOrPadding())
590 localPos.move(-box->contentBoxOffset());
591 localPos.scale(canvas()->width() / box->contentWidth(), canvas()->height() / box->contentHeight());
592
593 HitRegion* hitRegion = hitRegionAtPoint(localPos);
594 if (hitRegion) {
595 Element* control = hitRegion->control();
596 if (control && canvas()->isSupportedInteractiveCanvasFallback(*control))
597 return std::make_pair(hitRegion->control(), hitRegion->id());
598 return std::make_pair(nullptr, hitRegion->id());
599 }
600 return std::make_pair(nullptr, String());
601 }
602
581 String CanvasRenderingContext2D::textAlign() const 603 String CanvasRenderingContext2D::textAlign() const
582 { 604 {
583 return textAlignName(state().getTextAlign()); 605 return textAlignName(state().getTextAlign());
584 } 606 }
585 607
586 void CanvasRenderingContext2D::setTextAlign(const String& s) 608 void CanvasRenderingContext2D::setTextAlign(const String& s)
587 { 609 {
588 TextAlign align; 610 TextAlign align;
589 if (!parseTextAlign(s, align)) 611 if (!parseTextAlign(s, align))
590 return; 612 return;
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after
1015 1037
1016 unsigned CanvasRenderingContext2D::hitRegionsCount() const 1038 unsigned CanvasRenderingContext2D::hitRegionsCount() const
1017 { 1039 {
1018 if (m_hitRegionManager) 1040 if (m_hitRegionManager)
1019 return m_hitRegionManager->getHitRegionsCount(); 1041 return m_hitRegionManager->getHitRegionsCount();
1020 1042
1021 return 0; 1043 return 0;
1022 } 1044 }
1023 1045
1024 } // namespace blink 1046 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698