blob: d18d868d63c481f534c3aced72d4b30bbea680a8 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
[DartPackage="mojo_services"]
module mojo.gfx.composition;
import "mojo/services/geometry/interfaces/geometry.mojom";
import "mojo/services/gfx/composition/interfaces/scene_token.mojom";
// Indicates that hit testing is not needed for a given node.
const uint32 kHitIdNone = 0;
// Provides information about the point of intersection of a hit test with
// a node in a scene graph.
struct Hit {
// The scene token of the scene which was hit.
SceneToken scene_token;
// The version of the scene which was consulted as part of evaluating the
// hit test.
uint32 scene_version;
// The node id of the node which was hit.
uint32 node_id;
// The hit test id of the node which was hit.
uint32 hit_id;
// The coordinates of the hit within the node's content space.
mojo.Point intersection;
};
// The result of a hit test operation.
struct HitTestResult {
// A sorted list of hits in dispatch order from the top-most hit node
// to the nodes underneath it and containing it, or an empty array if none.
// Omits nodes for which the hit_id was |kHitIdNone|.
array<Hit> hits;
};
// A hit testing service for scene graphs.
interface HitTester {
// Performs a hit test on the specified point.
//
// TODO(jeffbrown): Specify a timestamp to allow for hit-tests of geometry
// as it appeared in the recent past.
HitTest(mojo.Point point) => (HitTestResult result);
};