Home | History | Annotate | Download | only in accelerometer
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef UI_ACCEROMETER_ACCELEROMETER_TYPES_H_
      6 #define UI_ACCEROMETER_ACCELEROMETER_TYPES_H_
      7 
      8 #include "base/macros.h"
      9 #include "ui/accelerometer/ui_accelerometer_export.h"
     10 #include "ui/gfx/geometry/vector3d_f.h"
     11 
     12 namespace ui {
     13 
     14 enum AccelerometerSource {
     15   // Accelerometer is located in the device's screen. In the screen's natural
     16   // orientation, positive X points to the right, consistent with the pixel
     17   // position. Positive Y points up the screen. Positive Z is perpendicular to
     18   // the screen, pointing outwards towards the user. The orientation is
     19   // described at:
     20   // http://www.html5rocks.com/en/tutorials/device/orientation/.
     21   ACCELEROMETER_SOURCE_SCREEN = 0,
     22 
     23   // Accelerometer is located in a keyboard attached to the device's screen.
     24   // If the device is open 180 degrees the orientation is consistent with the
     25   // screen. I.e. Positive X points to the right, positive Y points up on the
     26   // keyboard and positive Z is perpendicular to the keyboard pointing out
     27   // towards the user.
     28   ACCELEROMETER_SOURCE_ATTACHED_KEYBOARD,
     29 
     30   ACCELEROMETER_SOURCE_COUNT
     31 };
     32 
     33 struct UI_ACCELEROMETER_EXPORT AccelerometerReading {
     34   AccelerometerReading();
     35   ~AccelerometerReading();
     36 
     37   // If true, this accelerometer is being updated.
     38   bool present;
     39 
     40   // The reading from this accelerometer measured in m/s^2.
     41   gfx::Vector3dF reading;
     42 };
     43 
     44 // An accelerometer update contains the last known value for each of the
     45 // accelerometers present on the device.
     46 class UI_ACCELEROMETER_EXPORT AccelerometerUpdate {
     47  public:
     48   AccelerometerUpdate();
     49   ~AccelerometerUpdate();
     50 
     51   // Returns true if |source| has a valid value in this update.
     52   bool has(AccelerometerSource source)  const {
     53     return data_[source].present;
     54   }
     55 
     56   // Returns the last known value for |source|.
     57   const gfx::Vector3dF& get(AccelerometerSource source) const {
     58     return data_[source].reading;
     59   }
     60 
     61   void Set(AccelerometerSource source, float x, float y, float z) {
     62     data_[source].present = true;
     63     data_[source].reading.set_x(x);
     64     data_[source].reading.set_y(y);
     65     data_[source].reading.set_z(z);
     66   }
     67 
     68  protected:
     69   AccelerometerReading data_[ACCELEROMETER_SOURCE_COUNT];
     70 
     71   DISALLOW_COPY_AND_ASSIGN(AccelerometerUpdate);
     72 };
     73 
     74 }  // namespace chromeos
     75 
     76 #endif  // UI_ACCEROMETER_ACCELEROMETER_TYPES_H_
     77