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)
6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)/* From pp_touch_point.idl modified Thu Mar 28 10:13:07 2013. */
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PPAPI_C_PP_TOUCH_POINT_H_
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_C_PP_TOUCH_POINT_H_
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_macros.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_point.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_stdint.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @file
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This file defines the API to create a touch point or position where fingers
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * makes contact with touch screen device.
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Structs
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The <code>PP_TouchPoint</code> struct represents all information about a
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * single touch point, such as position, id, rotation angle, and pressure.
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PP_TouchPoint {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This value represents the identifier for this TouchPoint. The id
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * corresponds to the order in which the points were pressed. For example,
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * the first point to be pressed has an id of 0, the second has an id of 1,
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * and so on. An id can be reused when a touch point is released.  For
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * example, if two fingers are down, with id 0 and 1, and finger 0 releases,
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * the next finger to be pressed can be assigned to id 0.
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  uint32_t id;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This value represents the x and y pixel position of this TouchPoint
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * relative to the upper-left of the module instance receiving the event.
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct PP_FloatPoint position;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This value represents the elliptical radii, in screen pixels, in the x
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * and y direction of this TouchPoint.
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct PP_FloatPoint radius;
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This value represents the angle of rotation in degrees of the elliptical
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * model of this TouchPoint clockwise from "up."
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  float rotation_angle;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * This value represents the pressure applied to this TouchPoint.  This value
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * is typically between 0 and 1, with 0 indicating no pressure and 1
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * indicating some maximum pressure. Scaling differs depending on the
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * hardware and the value is not guaranteed to stay within that range.
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  float pressure;
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_TouchPoint, 28);
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @}
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Functions
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * PP_MakeTouchPoint() creates a <code>PP_TouchPoint</code>.
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A <code>PP_TouchPoint</code> structure.
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PP_INLINE struct PP_TouchPoint PP_MakeTouchPoint(void) {
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct PP_TouchPoint result = { 0, {0, 0}, {0, 0}, 0, 0 };
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return result;
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @}
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  /* PPAPI_C_PP_TOUCH_POINT_H_ */
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
88