| Index: views/touchui/touch_factory.h
|
| diff --git a/views/touchui/touch_factory.h b/views/touchui/touch_factory.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..04114be97d1491fd7d4bb1ead2ba4023412448ff
|
| --- /dev/null
|
| +++ b/views/touchui/touch_factory.h
|
| @@ -0,0 +1,65 @@
|
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef VIEWS_TOUCHUI_TOUCH_FACTORY_H_
|
| +#define VIEWS_TOUCHUI_TOUCH_FACTORY_H_
|
| +#pragma once
|
| +
|
| +#include <bitset>
|
| +#include <vector>
|
| +
|
| +#include "base/singleton.h"
|
| +
|
| +typedef unsigned long Window;
|
| +typedef struct _XDisplay Display;
|
| +
|
| +namespace views {
|
| +
|
| +// Functions related to determining touch devices.
|
| +class TouchFactory {
|
| + public:
|
| + // Returns the TouchFactory singleton.
|
| + static TouchFactory* GetInstance();
|
| +
|
| + // Keep a list of touch devices so that it is possible to determine if a
|
| + // pointer event is a touch-event or a mouse-event. The list is reset each
|
| + // time this is called.
|
| + void SetTouchDeviceList(const std::vector<unsigned int>& devices);
|
| +
|
| + // Is the device a touch-device?
|
| + bool IsTouchDevice(unsigned int deviceid);
|
| +
|
| + // Grab the touch devices for the specified window on the specified display.
|
| + // Returns if grab was successful for all touch devices.
|
| + bool GrabTouchDevices(Display* display, ::Window window);
|
| +
|
| + // Ungrab the touch devices. Returns if ungrab was successful for all touch
|
| + // devices.
|
| + bool UngrabTouchDevices(Display* display);
|
| +
|
| + private:
|
| + TouchFactory();
|
| +
|
| + // Requirement for Signleton
|
| + friend struct DefaultSingletonTraits<TouchFactory>;
|
| +
|
| + // NOTE: To keep track of touch devices, we currently maintain a lookup table
|
| + // to quickly decide if a device is a touch device or not. We also maintain a
|
| + // list of the touch devices. Ideally, there will be only one touch device,
|
| + // and instead of having the lookup table and the list, there will be a single
|
| + // identifier for the touch device. This can be completed after enough testing
|
| + // on real touch devices.
|
| +
|
| + // A quick lookup table for determining if a device is a touch device.
|
| + std::bitset<128> touch_device_lookup_;
|
| +
|
| + // The list of touch devices.
|
| + std::vector<int> touch_device_list_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TouchFactory);
|
| +};
|
| +
|
| +} // namespace views
|
| +
|
| +#endif // VIEWS_TOUCHUI_TOUCH_FACTORY_H_
|
|
|