ppb_input_event.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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)
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* From ppb_input_event.idl modified Mon Nov 26 19:51:21 2012. */
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PPAPI_C_PPB_INPUT_EVENT_H_
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_C_PPB_INPUT_EVENT_H_
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_bool.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_instance.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_macros.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_point.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_resource.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_stdint.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_time.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_touch_point.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_var.h"
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_INPUT_EVENT_INTERFACE_1_0 "PPB_InputEvent;1.0"
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_INPUT_EVENT_INTERFACE PPB_INPUT_EVENT_INTERFACE_1_0
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_MOUSE_INPUT_EVENT_INTERFACE_1_0 "PPB_MouseInputEvent;1.0"
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_MOUSE_INPUT_EVENT_INTERFACE_1_1 "PPB_MouseInputEvent;1.1"
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_MOUSE_INPUT_EVENT_INTERFACE PPB_MOUSE_INPUT_EVENT_INTERFACE_1_1
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_WHEEL_INPUT_EVENT_INTERFACE_1_0 "PPB_WheelInputEvent;1.0"
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_WHEEL_INPUT_EVENT_INTERFACE PPB_WHEEL_INPUT_EVENT_INTERFACE_1_0
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_KEYBOARD_INPUT_EVENT_INTERFACE_1_0 "PPB_KeyboardInputEvent;1.0"
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_KEYBOARD_INPUT_EVENT_INTERFACE \
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PPB_KEYBOARD_INPUT_EVENT_INTERFACE_1_0
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_TOUCH_INPUT_EVENT_INTERFACE_1_0 "PPB_TouchInputEvent;1.0"
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPB_TOUCH_INPUT_EVENT_INTERFACE PPB_TOUCH_INPUT_EVENT_INTERFACE_1_0
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @file
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This file defines the Input Event interfaces.
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Enums
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This enumeration contains the types of input events.
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum {
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_TYPE_UNDEFINED = -1,
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Notification that a mouse button was pressed.
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Register for this event using the PP_INPUTEVENT_CLASS_MOUSE class.
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_TYPE_MOUSEDOWN = 0,
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Notification that a mouse button was released.
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Register for this event using the PP_INPUTEVENT_CLASS_MOUSE class.
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_TYPE_MOUSEUP = 1,
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Notification that a mouse button was moved when it is over the instance
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * or dragged out of it.
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Register for this event using the PP_INPUTEVENT_CLASS_MOUSE class.
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_TYPE_MOUSEMOVE = 2,
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Notification that the mouse entered the instance's bounds.
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Register for this event using the PP_INPUTEVENT_CLASS_MOUSE class.
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_TYPE_MOUSEENTER = 3,
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Notification that a mouse left the instance's bounds.
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Register for this event using the PP_INPUTEVENT_CLASS_MOUSE class.
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_TYPE_MOUSELEAVE = 4,
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Notification that the scroll wheel was used.
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Register for this event using the PP_INPUTEVENT_CLASS_WHEEL class.
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_TYPE_WHEEL = 5,
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Notification that a key transitioned from "up" to "down".
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Register for this event using the PP_INPUTEVENT_CLASS_KEYBOARD class.
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /*
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * TODO(brettw) differentiate from KEYDOWN.
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_TYPE_RAWKEYDOWN = 6,
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Notification that a key was pressed. This does not necessarily correspond
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * to a character depending on the key and language. Use the
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * PP_INPUTEVENT_TYPE_CHAR for character input.
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Register for this event using the PP_INPUTEVENT_CLASS_KEYBOARD class.
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_TYPE_KEYDOWN = 7,
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Notification that a key was released.
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Register for this event using the PP_INPUTEVENT_CLASS_KEYBOARD class.
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_TYPE_KEYUP = 8,
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Notification that a character was typed. Use this for text input. Key
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * down events may generate 0, 1, or more than one character event depending
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * on the key, locale, and operating system.
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Register for this event using the PP_INPUTEVENT_CLASS_KEYBOARD class.
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_TYPE_CHAR = 9,
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Notification that a context menu should be shown.
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This message will be sent when the user right-clicks or performs another
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * OS-specific mouse command that should open a context menu. When this event
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * is delivered depends on the system, on some systems (Mac) it will
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * delivered after the mouse down event, and on others (Windows) it will be
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * delivered after the mouse up event.
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * You will always get the normal mouse events. For example, you may see
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * MOUSEDOWN,CONTEXTMENU,MOUSEUP or MOUSEDOWN,MOUSEUP,CONTEXTMENU.
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * The return value from the event handler determines if the context menu
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * event will be passed to the page when you are using filtered input events
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * (via RequestFilteringInputEvents()). In non-filtering mode the event will
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * never be propagated and no context menu will be displayed. If you are
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * handling mouse events in filtering mode, you may want to return true from
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * this event even if you do not support a context menu to suppress the
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * default one.
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Register for this event using the PP_INPUTEVENT_CLASS_MOUSE class.
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_TYPE_CONTEXTMENU = 10,
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Notification that an input method composition process has just started.
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Register for this event using the PP_INPUTEVENT_CLASS_IME class.
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_TYPE_IME_COMPOSITION_START = 11,
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Notification that the input method composition string is updated.
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Register for this event using the PP_INPUTEVENT_CLASS_IME class.
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_TYPE_IME_COMPOSITION_UPDATE = 12,
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Notification that an input method composition process has completed.
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Register for this event using the PP_INPUTEVENT_CLASS_IME class.
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_TYPE_IME_COMPOSITION_END = 13,
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Notification that an input method committed a string.
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Register for this event using the PP_INPUTEVENT_CLASS_IME class.
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_TYPE_IME_TEXT = 14,
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Notification that a finger was placed on a touch-enabled device.
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Register for this event using the PP_INPUTEVENT_CLASS_TOUCH class.
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_TYPE_TOUCHSTART = 15,
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Notification that a finger was moved on a touch-enabled device.
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Register for this event using the PP_INPUTEVENT_CLASS_TOUCH class.
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_TYPE_TOUCHMOVE = 16,
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Notification that a finger was released on a touch-enabled device.
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Register for this event using the PP_INPUTEVENT_CLASS_TOUCH class.
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_TYPE_TOUCHEND = 17,
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Notification that a touch event was canceled.
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Register for this event using the PP_INPUTEVENT_CLASS_TOUCH class.
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_TYPE_TOUCHCANCEL = 18
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} PP_InputEvent_Type;
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_InputEvent_Type, 4);
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This enumeration contains event modifier constants. Each modifier is one
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * bit. Retrieve the modifiers from an input event using the GetEventModifiers
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * function on PPB_InputEvent.
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum {
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_MODIFIER_SHIFTKEY = 1 << 0,
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_MODIFIER_CONTROLKEY = 1 << 1,
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_MODIFIER_ALTKEY = 1 << 2,
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_MODIFIER_METAKEY = 1 << 3,
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_MODIFIER_ISKEYPAD = 1 << 4,
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_MODIFIER_ISAUTOREPEAT = 1 << 5,
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_MODIFIER_LEFTBUTTONDOWN = 1 << 6,
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_MODIFIER_MIDDLEBUTTONDOWN = 1 << 7,
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_MODIFIER_RIGHTBUTTONDOWN = 1 << 8,
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_MODIFIER_CAPSLOCKKEY = 1 << 9,
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_MODIFIER_NUMLOCKKEY = 1 << 10,
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_MODIFIER_ISLEFT = 1 << 11,
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_MODIFIER_ISRIGHT = 1 << 12
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} PP_InputEvent_Modifier;
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_InputEvent_Modifier, 4);
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This enumeration contains constants representing each mouse button. To get
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the mouse button for a mouse down or up event, use GetMouseButton on
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * PPB_InputEvent.
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum {
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_MOUSEBUTTON_NONE = -1,
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_MOUSEBUTTON_LEFT = 0,
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_MOUSEBUTTON_MIDDLE = 1,
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_MOUSEBUTTON_RIGHT = 2
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} PP_InputEvent_MouseButton;
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_InputEvent_MouseButton, 4);
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum {
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Request mouse input events.
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Normally you will request mouse events by calling RequestInputEvents().
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * The only use case for filtered events (via RequestFilteringInputEvents())
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * is for instances that have irregular outlines and you want to perform hit
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * testing, which is very uncommon. Requesting non-filtered mouse events will
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * lead to higher performance.
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_CLASS_MOUSE = 1 << 0,
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Requests keyboard events. Often you will want to request filtered mode
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * (via RequestFilteringInputEvents) for keyboard events so you can pass on
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * events (by returning false) that you don't handle. For example, if you
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * don't request filtered mode and the user pressed "Page Down" when your
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * instance has focus, the page won't scroll which will be a poor experience.
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * A small number of tab and window management commands like Alt-F4 are never
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * sent to the page. You can not request these keyboard commands since it
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * would allow pages to trap users on a page.
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_CLASS_KEYBOARD = 1 << 1,
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Identifies scroll wheel input event. Wheel events must be requested in
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * filtering mode via RequestFilteringInputEvents(). This is because many
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * wheel commands should be forwarded to the page.
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Most instances will not need this event. Consuming wheel events by
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * returning true from your filtered event handler will prevent the user from
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * scrolling the page when the mouse is over the instance which can be very
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * annoying.
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * If you handle wheel events (for example, you have a document viewer which
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * the user can scroll), the recommended behavior is to return false only if
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * the wheel event actually causes your document to scroll. When the user
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * reaches the end of the document, return false to indicating that the event
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * was not handled. This will then forward the event to the containing page
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * for scrolling, producing the nested scrolling behavior users expect from
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * frames in a page.
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_CLASS_WHEEL = 1 << 2,
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Identifies touch input events.
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Request touch events only if you intend to handle them. If the browser
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * knows you do not need to handle touch events, it can handle them at a
2772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   * higher level and achieve higher performance. If the plugin does not
2782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   * register for touch-events, then it will receive synthetic mouse events that
2792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   * are generated from the touch events (e.g. mouse-down for touch-start,
2802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   * mouse-move for touch-move (with left-button down), and mouse-up for
2812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   * touch-end. If the plugin does register for touch events, then the synthetic
2822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   * mouse events are not created.
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_CLASS_TOUCH = 1 << 3,
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Identifies IME composition input events.
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Request this input event class if you allow on-the-spot IME input.
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_INPUTEVENT_CLASS_IME = 1 << 4
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} PP_InputEvent_Class;
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_InputEvent_Class, 4);
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @}
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Interfaces
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The <code>PPB_InputEvent</code> interface contains pointers to several
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * functions related to generic input events on the browser.
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PPB_InputEvent_1_0 {
3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * RequestInputEvent() requests that input events corresponding to the given
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * input events are delivered to the instance.
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * It's recommended that you use RequestFilteringInputEvents() for keyboard
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * events instead of this function so that you don't interfere with normal
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * browser accelerators.
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * By default, no input events are delivered. Call this function with the
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * classes of events you are interested in to have them be delivered to
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * the instance. Calling this function will override any previous setting for
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * each specified class of input events (for example, if you previously
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * called RequestFilteringInputEvents(), this function will set those events
3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * to non-filtering mode).
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Input events may have high overhead, so you should only request input
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * events that your plugin will actually handle. For example, the browser may
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * do optimizations for scroll or touch events that can be processed
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * substantially faster if it knows there are no non-default receivers for
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * that message. Requesting that such messages be delivered, even if they are
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * processed very quickly, may have a noticeable effect on the performance of
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * the page.
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
3292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   * Note that synthetic mouse events will be generated from touch events if
3302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   * (and only if) the you do not request touch events.
3312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   *
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * When requesting input events through this function, the events will be
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * delivered and <i>not</i> bubbled to the page. This means that even if you
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * aren't interested in the message, no other parts of the page will get
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * a crack at the message.
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <strong>Example:</strong>
3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *   RequestInputEvents(instance, PP_INPUTEVENT_CLASS_MOUSE);
3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *   RequestFilteringInputEvents(instance,
3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *       PP_INPUTEVENT_CLASS_WHEEL | PP_INPUTEVENT_CLASS_KEYBOARD);
3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * </code>
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param instance The <code>PP_Instance</code> of the instance requesting
3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * the given events.
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param event_classes A combination of flags from
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>PP_InputEvent_Class</code> that identifies the classes of events the
3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * instance is requesting. The flags are combined by logically ORing their
3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * values.
3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return <code>PP_OK</code> if the operation succeeded,
3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>PP_ERROR_BADARGUMENT</code> if instance is invalid, or
3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>PP_ERROR_NOTSUPPORTED</code> if one of the event class bits were
3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * illegal. In the case of an invalid bit, all valid bits will be applied
3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * and only the illegal bits will be ignored. The most common cause of a
3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>PP_ERROR_NOTSUPPORTED</code> return value is requesting keyboard
3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * events, these must use RequestFilteringInputEvents().
3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32_t (*RequestInputEvents)(PP_Instance instance, uint32_t event_classes);
3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * RequestFilteringInputEvents() requests that input events corresponding to
3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * the given input events are delivered to the instance for filtering.
3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * By default, no input events are delivered. In most cases you would
3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * register to receive events by calling RequestInputEvents(). In some cases,
3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * however, you may wish to filter events such that they can be bubbled up
3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * to the DOM. In this case, register for those classes of events using
3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * this function instead of RequestInputEvents().
3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Filtering input events requires significantly more overhead than just
3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * delivering them to the instance. As such, you should only request
3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * filtering in those cases where it's absolutely necessary. The reason is
3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * that it requires the browser to stop and block for the instance to handle
3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * the input event, rather than sending the input event asynchronously. This
3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * can have significant overhead.
3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <strong>Example:</strong>
3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>
3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *   RequestInputEvents(instance, PP_INPUTEVENT_CLASS_MOUSE);
3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *   RequestFilteringInputEvents(instance,
3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *       PP_INPUTEVENT_CLASS_WHEEL | PP_INPUTEVENT_CLASS_KEYBOARD);
3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * </code>
3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return <code>PP_OK</code> if the operation succeeded,
3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>PP_ERROR_BADARGUMENT</code> if instance is invalid, or
3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>PP_ERROR_NOTSUPPORTED</code> if one of the event class bits were
3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * illegal. In the case of an invalid bit, all valid bits will be applied
3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * and only the illegal bits will be ignored.
3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32_t (*RequestFilteringInputEvents)(PP_Instance instance,
3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         uint32_t event_classes);
3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * ClearInputEventRequest() requests that input events corresponding to the
3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * given input classes no longer be delivered to the instance.
3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * By default, no input events are delivered. If you have previously
3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * requested input events via RequestInputEvents() or
3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * RequestFilteringInputEvents(), this function will unregister handling
4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * for the given instance. This will allow greater browser performance for
4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * those events.
4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Note that you may still get some input events after clearing the flag if
4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * they were dispatched before the request was cleared. For example, if
4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * there are 3 mouse move events waiting to be delivered, and you clear the
4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * mouse event class during the processing of the first one, you'll still
4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * receive the next two. You just won't get more events generated.
4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param instance The <code>PP_Instance</code> of the instance requesting
4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * to no longer receive the given events.
4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param event_classes A combination of flags from
4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>PP_InputEvent_Class</code> that identify the classes of events the
4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * instance is no longer interested in.
4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void (*ClearInputEventRequest)(PP_Instance instance, uint32_t event_classes);
4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * IsInputEvent() returns true if the given resource is a valid input event
4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * resource.
4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] resource A <code>PP_Resource</code> corresponding to a generic
4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * resource.
4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return <code>PP_TRUE</code> if the given resource is a valid input event
4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * resource.
4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Bool (*IsInputEvent)(PP_Resource resource);
4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * GetType() returns the type of input event for the given input event
4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * resource.
4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] resource A <code>PP_Resource</code> corresponding to an input
4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * event.
4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return A <code>PP_InputEvent_Type</code> if its a valid input event or
4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>PP_INPUTEVENT_TYPE_UNDEFINED</code> if the resource is invalid.
4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_InputEvent_Type (*GetType)(PP_Resource event);
4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * GetTimeStamp() Returns the time that the event was generated. This will be
4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *  before the current time since processing and dispatching the event has
4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * some overhead. Use this value to compare the times the user generated two
4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * events without being sensitive to variable processing time.
4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] resource A <code>PP_Resource</code> corresponding to the event.
4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return The return value is in time ticks, which is a monotonically
4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * increasing clock not related to the wall clock time. It will not change
4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * if the user changes their clock or daylight savings time starts, so can
4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * be reliably used to compare events. This means, however, that you can't
4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * correlate event times to a particular time of day on the system clock.
4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_TimeTicks (*GetTimeStamp)(PP_Resource event);
4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * GetModifiers() returns a bitfield indicating which modifiers were down
4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * at the time of the event. This is a combination of the flags in the
4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>PP_InputEvent_Modifier</code> enum.
4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] resource A <code>PP_Resource</code> corresponding to an input
4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * event.
4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return The modifiers associated with the event, or 0 if the given
4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * resource is not a valid event resource.
4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  uint32_t (*GetModifiers)(PP_Resource event);
4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct PPB_InputEvent_1_0 PPB_InputEvent;
4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The <code>PPB_MouseInputEvent</code> interface contains pointers to several
4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * functions related to mouse input events.
4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PPB_MouseInputEvent_1_1 {
4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Create() creates a mouse input event with the given parameters. Normally
4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * you will get a mouse event passed through the
4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>HandleInputEvent</code> and will not need to create them, but some
4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * applications may want to create their own for internal use. The type must
4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * be one of the mouse event types.
4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] instance The instance for which this event occurred.
4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] type A <code>PP_InputEvent_Type</code> identifying the type of
4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * input event.
4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] time_stamp A <code>PP_TimeTicks</code> indicating the time
4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * when the event occurred.
4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] modifiers A bit field combination of the
4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>PP_InputEvent_Modifier</code> flags.
4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] mouse_button The button that changed for mouse down or up
4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * events. This value will be <code>PP_EVENT_MOUSEBUTTON_NONE</code> for
4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * mouse move, enter, and leave events.
4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] mouse_position A <code>Point</code> containing the x and y
4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * position of the mouse when the event occurred.
4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] mouse_movement The change in position of the mouse.
5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return A <code>PP_Resource</code> containing the new mouse input event.
5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Resource (*Create)(PP_Instance instance,
5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        PP_InputEvent_Type type,
5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        PP_TimeTicks time_stamp,
5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        uint32_t modifiers,
5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        PP_InputEvent_MouseButton mouse_button,
5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        const struct PP_Point* mouse_position,
5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        int32_t click_count,
5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        const struct PP_Point* mouse_movement);
5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * IsMouseInputEvent() determines if a resource is a mouse event.
5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] resource A <code>PP_Resource</code> corresponding to an event.
5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return <code>PP_TRUE</code> if the given resource is a valid mouse input
5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * event, otherwise <code>PP_FALSE</code>.
5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Bool (*IsMouseInputEvent)(PP_Resource resource);
5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * GetButton() returns the mouse button that generated a mouse down or up
5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * event.
5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] mouse_event A <code>PP_Resource</code> corresponding to a
5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * mouse event.
5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return The mouse button associated with mouse down and up events. This
5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * value will be <code>PP_EVENT_MOUSEBUTTON_NONE</code> for mouse move,
5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * enter, and leave events, and for all non-mouse events.
5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_InputEvent_MouseButton (*GetButton)(PP_Resource mouse_event);
5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * GetPosition() returns the pixel location of a mouse input event. When
5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * the mouse is locked, it returns the last known mouse position just as
5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * mouse lock was entered.
5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] mouse_event A <code>PP_Resource</code> corresponding to a
5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * mouse event.
5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return The point associated with the mouse event, relative to the upper-
5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * left of the instance receiving the event. These values can be negative for
5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * mouse drags. The return value will be (0, 0) for non-mouse events.
5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct PP_Point (*GetPosition)(PP_Resource mouse_event);
5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /*
5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * TODO(brettw) figure out exactly what this means.
5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32_t (*GetClickCount)(PP_Resource mouse_event);
5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Returns the change in position of the mouse. When the mouse is locked,
5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * although the mouse position doesn't actually change, this function
5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * still provides movement information, which indicates what the change in
5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * position would be had the mouse not been locked.
5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] mouse_event A <code>PP_Resource</code> corresponding to a
5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * mouse event.
5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return The change in position of the mouse, relative to the previous
5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * position.
5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct PP_Point (*GetMovement)(PP_Resource mouse_event);
5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct PPB_MouseInputEvent_1_1 PPB_MouseInputEvent;
5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PPB_MouseInputEvent_1_0 {
5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Resource (*Create)(PP_Instance instance,
5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        PP_InputEvent_Type type,
5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        PP_TimeTicks time_stamp,
5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        uint32_t modifiers,
5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        PP_InputEvent_MouseButton mouse_button,
5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        const struct PP_Point* mouse_position,
5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        int32_t click_count);
5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Bool (*IsMouseInputEvent)(PP_Resource resource);
5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_InputEvent_MouseButton (*GetButton)(PP_Resource mouse_event);
5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct PP_Point (*GetPosition)(PP_Resource mouse_event);
5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32_t (*GetClickCount)(PP_Resource mouse_event);
5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The <code>PPB_WheelIputEvent</code> interface contains pointers to several
5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * functions related to wheel input events.
5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PPB_WheelInputEvent_1_0 {
5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Create() creates a wheel input event with the given parameters. Normally
5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * you will get a wheel event passed through the
5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>HandleInputEvent</code> and will not need to create them, but some
5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * applications may want to create their own for internal use.
5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] instance The instance for which this event occurred.
5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] time_stamp A <code>PP_TimeTicks</code> indicating the time
5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * when the event occurred.
5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] modifiers A bit field combination of the
5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>PP_InputEvent_Modifier</code> flags.
5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] wheel_delta The scroll wheel's horizontal and vertical scroll
6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * amounts.
6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] wheel_ticks The number of "clicks" of the scroll wheel that
6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * have produced the event.
6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] scroll_by_page When true, the user is requesting to scroll
6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * by pages. When false, the user is requesting to scroll by lines.
6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return A <code>PP_Resource</code> containing the new wheel input event.
6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Resource (*Create)(PP_Instance instance,
6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        PP_TimeTicks time_stamp,
6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        uint32_t modifiers,
6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        const struct PP_FloatPoint* wheel_delta,
6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        const struct PP_FloatPoint* wheel_ticks,
6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        PP_Bool scroll_by_page);
6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * IsWheelInputEvent() determines if a resource is a wheel event.
6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] wheel_event A <code>PP_Resource</code> corresponding to an
6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * event.
6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return <code>PP_TRUE</code> if the given resource is a valid wheel input
6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * event.
6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Bool (*IsWheelInputEvent)(PP_Resource resource);
6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * GetDelta() returns the amount vertically and horizontally the user has
6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * requested to scroll by with their mouse wheel. A scroll down or to the
6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * right (where the content moves up or left) is represented as positive
6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * values, and a scroll up or to the left (where the content moves down or
6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * right) is represented as negative values.
6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This amount is system dependent and will take into account the user's
6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * preferred scroll sensitivity and potentially also nonlinear acceleration
6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * based on the speed of the scrolling.
6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Devices will be of varying resolution. Some mice with large detents will
6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * only generate integer scroll amounts. But fractional values are also
6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * possible, for example, on some trackpads and newer mice that don't have
6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * "clicks".
6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] wheel_event A <code>PP_Resource</code> corresponding to a wheel
6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * event.
6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return The vertical and horizontal scroll values. The units are either in
6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * pixels (when scroll_by_page is false) or pages (when scroll_by_page is
6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * true). For example, y = -3 means scroll up 3 pixels when scroll_by_page
6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * is false, and scroll up 3 pages when scroll_by_page is true.
6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct PP_FloatPoint (*GetDelta)(PP_Resource wheel_event);
6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * GetTicks() returns the number of "clicks" of the scroll wheel
6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * that have produced the event. The value may have system-specific
6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * acceleration applied to it, depending on the device. The positive and
6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * negative meanings are the same as for GetDelta().
6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * If you are scrolling, you probably want to use the delta values.  These
6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * tick events can be useful if you aren't doing actual scrolling and don't
6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * want or pixel values. An example may be cycling between different items in
6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * a game.
6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] wheel_event A <code>PP_Resource</code> corresponding to a wheel
6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * event.
6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return The number of "clicks" of the scroll wheel. You may receive
6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * fractional values for the wheel ticks if the mouse wheel is high
6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * resolution or doesn't have "clicks". If your program wants discrete
6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * events (as in the "picking items" example) you should accumulate
6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * fractional click values from multiple messages until the total value
6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * reaches positive or negative one. This should represent a similar amount
6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * of scrolling as for a mouse that has a discrete mouse wheel.
6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct PP_FloatPoint (*GetTicks)(PP_Resource wheel_event);
6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * GetScrollByPage() indicates if the scroll delta x/y indicates pages or
6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * lines to scroll by.
6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] wheel_event A <code>PP_Resource</code> corresponding to a wheel
6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * event.
6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return <code>PP_TRUE</code> if the event is a wheel event and the user is
6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * scrolling by pages. <code>PP_FALSE</code> if not or if the resource is not
6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * a wheel event.
6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Bool (*GetScrollByPage)(PP_Resource wheel_event);
6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct PPB_WheelInputEvent_1_0 PPB_WheelInputEvent;
6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The <code>PPB_KeyboardInputEvent</code> interface contains pointers to
6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * several functions related to keyboard input events.
6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PPB_KeyboardInputEvent_1_0 {
6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Creates a keyboard input event with the given parameters. Normally you
6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * will get a keyboard event passed through the HandleInputEvent and will not
6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * need to create them, but some applications may want to create their own
7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * for internal use. The type must be one of the keyboard event types.
7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] instance The instance for which this event occurred.
7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] type A <code>PP_InputEvent_Type</code> identifying the type of
7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * input event.
7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] time_stamp A <code>PP_TimeTicks</code> indicating the time
7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * when the event occurred.
7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in]  modifiers A bit field combination of the
7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>PP_InputEvent_Modifier</code> flags.
7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] key_code This value reflects the DOM KeyboardEvent
7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>keyCode</code> field. Chrome populates this with the Windows-style
7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Virtual Key code of the key.
7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] character_text This value represents the typed character as a
7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * UTF-8 string.
7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return A <code>PP_Resource</code> containing the new keyboard input
7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * event.
7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Resource (*Create)(PP_Instance instance,
7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        PP_InputEvent_Type type,
7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        PP_TimeTicks time_stamp,
7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        uint32_t modifiers,
7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        uint32_t key_code,
7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        struct PP_Var character_text);
7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * IsKeyboardInputEvent() determines if a resource is a keyboard event.
7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] resource A <code>PP_Resource</code> corresponding to an event.
7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return <code>PP_TRUE</code> if the given resource is a valid input event.
7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Bool (*IsKeyboardInputEvent)(PP_Resource resource);
7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * GetKeyCode() returns the DOM keyCode field for the keyboard event.
7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Chrome populates this with the Windows-style Virtual Key code of the key.
7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] key_event A <code>PP_Resource</code> corresponding to a
7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * keyboard event.
7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return The DOM keyCode field for the keyboard event.
7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  uint32_t (*GetKeyCode)(PP_Resource key_event);
7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * GetCharacterText() returns the typed character as a UTF-8 string for the
7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * given character event.
7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] character_event A <code>PP_Resource</code> corresponding to a
7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * keyboard event.
7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return A string var representing a single typed character for character
7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * input events. For non-character input events the return value will be an
7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * undefined var.
7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct PP_Var (*GetCharacterText)(PP_Resource character_event);
7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct PPB_KeyboardInputEvent_1_0 PPB_KeyboardInputEvent;
7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @}
7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Enums
7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{
7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum {
7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * The list of all TouchPoints which are currently down.
7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_TOUCHLIST_TYPE_TOUCHES = 0,
7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * The list of all TouchPoints whose state has changed since the last
7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * TouchInputEvent.
7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_TOUCHLIST_TYPE_CHANGEDTOUCHES = 1,
7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * The list of all TouchPoints which are targeting this plugin.  This is a
7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * subset of Touches.
7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_TOUCHLIST_TYPE_TARGETTOUCHES = 2
7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} PP_TouchListType;
7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_TouchListType, 4);
7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @}
7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Interfaces
7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{
7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The <code>PPB_TouchInputEvent</code> interface contains pointers to several
7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * functions related to touch events.
7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PPB_TouchInputEvent_1_0 {
8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Creates a touch input event with the given parameters. Normally you
8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * will get a touch event passed through the HandleInputEvent and will not
8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * need to create them, but some applications may want to create their own
8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * for internal use. The type must be one of the touch event types.
8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This newly created touch input event does not have any touch point in any
8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * of the touch-point lists. <code>AddTouchPoint</code> should be called to
8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * add the touch-points.
8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] instance The instance for which this event occurred.
8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] type A <code>PP_InputEvent_Type</code> identifying the type of
8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * input event.
8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] time_stamp A <code>PP_TimeTicks</code> indicating the time
8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * when the event occurred.
8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in]  modifiers A bit field combination of the
8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * <code>PP_InputEvent_Modifier</code> flags.
8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return A <code>PP_Resource</code> containing the new touch input event.
8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Resource (*Create)(PP_Instance instance,
8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        PP_InputEvent_Type type,
8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        PP_TimeTicks time_stamp,
8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        uint32_t modifiers);
8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Adds a touch point to the touch event in the specified touch-list.
8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] touch_event A <code>PP_Resource</code> corresponding to a touch
8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * event.
8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] list The list to add the touch point to.
8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] point The point to add to the list.
8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void (*AddTouchPoint)(PP_Resource touch_event,
8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        PP_TouchListType list,
8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        const struct PP_TouchPoint* point);
8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * IsTouchInputEvent() determines if a resource is a touch event.
8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] resource A <code>PP_Resource</code> corresponding to an event.
8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return <code>PP_TRUE</code> if the given resource is a valid touch input
8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * event, otherwise <code>PP_FALSE</code>.
8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Bool (*IsTouchInputEvent)(PP_Resource resource);
8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Returns the number of touch-points in the specified list.
8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] resource A <code>PP_Resource</code> corresponding to a touch
8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * event.
8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] list The list.
8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return The number of touch-points in the specified list.
8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  uint32_t (*GetTouchCount)(PP_Resource resource, PP_TouchListType list);
8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Returns the touch-point at the specified index from the specified list.
8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] resource A <code>PP_Resource</code> corresponding to a touch
8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * event.
8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] list The list.
8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] index The index.
8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return A <code>PP_TouchPoint</code> representing the touch-point.
8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct PP_TouchPoint (*GetTouchByIndex)(PP_Resource resource,
8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          PP_TouchListType list,
8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          uint32_t index);
8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Returns the touch-point with the spcified touch-id in the specified list.
8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] resource A <code>PP_Resource</code> corresponding to a touch
8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * event.
8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] list The list.
8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param[in] touch_id The id of the touch-point.
8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @return A <code>PP_TouchPoint</code> representing the touch-point.
8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct PP_TouchPoint (*GetTouchById)(PP_Resource resource,
8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       PP_TouchListType list,
8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       uint32_t touch_id);
8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct PPB_TouchInputEvent_1_0 PPB_TouchInputEvent;
8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @}
8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  /* PPAPI_C_PPB_INPUT_EVENT_H_ */
8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
898