1197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// found in the LICENSE file. 4197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 5197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#ifndef MouseEventHitRegion_h 6197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#define MouseEventHitRegion_h 7197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 8197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "core/events/MouseEvent.h" 9197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "core/html/HTMLCanvasElement.h" 10197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "core/html/canvas/CanvasRenderingContext.h" 11197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "core/html/canvas/CanvasRenderingContext2D.h" 12197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 13c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 14197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 15197021e6b966cfb06891637935ef33fff06433d1Ben Murdochclass MouseEventHitRegion { 16197021e6b966cfb06891637935ef33fff06433d1Ben Murdochpublic: 17197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch static String region(MouseEvent& event) 18197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 19197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch if (!event.target() || !isHTMLCanvasElement(event.target()->toNode())) 20197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return String(); 21197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 22197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch HTMLCanvasElement* canvas = toHTMLCanvasElement(event.target()->toNode()); 23197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch CanvasRenderingContext* context = canvas->renderingContext(); 24197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch if (!context || !context->is2d()) 25197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return String(); 26197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 27197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch HitRegion* hitRegion = toCanvasRenderingContext2D(context)-> 28197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch hitRegionAtPoint(LayoutPoint(event.offsetX(), event.offsetY())); 29197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 30197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch if (!hitRegion) 31197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return String(); 32197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 33197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch String id = hitRegion->id(); 34197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch if (id.isEmpty()) 35197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return String(); 36197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 37197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return id; 38197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch } 39197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch}; 40197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 41c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 42197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 43197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#endif 44