2
* Copyright © 2014 Canonical Ltd.
4
* This program is free software: you can redistribute it and/or modify it
5
* under the terms of the GNU General Public License version 3,
6
* as published by the Free Software Foundation.
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
13
* You should have received a copy of the GNU General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
16
* Authored by: Robert Carr <robert.carr@canonical.com>
19
#ifndef MIR_INPUT_TOUCHSPOT_CONTROLLER_H_
20
#define MIR_INPUT_TOUCHSPOT_CONTROLLER_H_
22
#include "mir/input/touch_visualizer.h"
31
class GraphicBufferAllocator;
39
class TouchspotRenderable;
41
/// Receives touchspot events out of the input stack and manages appearance
42
/// of touchspot renderables for visualization. Touchspot visualization is
43
/// disabled by default and must be enabled through a call to ::enable.
44
class TouchspotController : public TouchVisualizer
47
TouchspotController(std::shared_ptr<graphics::GraphicBufferAllocator> const& allocator,
48
std::shared_ptr<graphics::BufferWriter> const& writer,
49
std::shared_ptr<input::Scene> const& scene);
51
virtual ~TouchspotController() = default;
53
void enable() override;
54
void disable() override;
56
void visualize_touches(std::vector<Spot> const& touches) override;
59
TouchspotController(TouchspotController const&) = delete;
60
TouchspotController& operator=(TouchspotController const&) = delete;
63
std::shared_ptr<graphics::Buffer> touchspot_buffer;
64
std::shared_ptr<Scene> scene;
70
unsigned int renderables_in_use;
71
std::vector<std::shared_ptr<TouchspotRenderable>> touchspot_renderables;
77
#endif // MIR_INPUT_TOUCHSPOT_CONTROLLER_H_