15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This file defines the <code>PPB_MouseLock</code> interface for 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * locking the target of mouse events to a specific module instance. 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)[generate_thunk] 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)label Chrome { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) M16 = 1.0 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The <code>PPB_MouseLock</code> interface is implemented by the browser. 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This interface provides a way of locking the target of mouse events to a 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * single module instance and removing the cursor from view. This mode is 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * useful for certain classes of applications, especially first-person 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * perspective 3D applications and 3D modeling software. 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)interface PPB_MouseLock { 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * LockMouse() requests the mouse to be locked. 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * While the mouse is locked, the cursor is implicitly hidden from the user. 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Any movement of the mouse will generate a 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_INPUTEVENT_TYPE_MOUSEMOVE</code> event. The 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>GetPosition()</code> function in the <code>PPB_MouseInputEvent</code> 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * interface reports the last known mouse position just as mouse lock was 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * entered. The <code>GetMovement()</code> function provides relative movement 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * information indicating what the change in position of the mouse would be 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * had it not been locked. 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The browser may revoke the mouse lock for reasons including (but not 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * limited to) the user pressing the ESC key, the user activating another 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * program using a reserved keystroke (e.g. ALT+TAB), or some other system 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * event. 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] instance A <code>PP_Instance</code> identifying one instance 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * of a module. 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * completion. 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return An int32_t containing an error code from <code>pp_errors.h</code>. 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t LockMouse([in] PP_Instance instance, 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [in] PP_CompletionCallback callback); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * UnlockMouse() causes the mouse to be unlocked, allowing it to track user 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * movement again. This is an asynchronous operation. The module instance 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * will be notified using the <code>PPP_MouseLock</code> interface when it 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * has lost the mouse lock. 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] instance A <code>PP_Instance</code> identifying one instance 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * of a module. 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UnlockMouse([in] PP_Instance instance); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 63