blob: 45e1fa535a4e98766c74d1ac0d7813676ec290d3 [file] [log] [blame]
sergeyu@chromium.org2767b532013-10-16 02:42:38 +00001/*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#ifndef WEBRTC_MODULES_DESKTOP_CAPTURE_MOUSE_CURSOR_H_
12#define WEBRTC_MODULES_DESKTOP_CAPTURE_MOUSE_CURSOR_H_
13
kwiberg2bb3afa2016-03-16 15:58:08 -070014#include <memory>
15
sergeyu@chromium.org2767b532013-10-16 02:42:38 +000016#include "webrtc/modules/desktop_capture/desktop_geometry.h"
Edward Lemurc20978e2017-07-06 19:44:34 +020017#include "webrtc/rtc_base/constructormagic.h"
sergeyu@chromium.org2767b532013-10-16 02:42:38 +000018
19namespace webrtc {
20
21class DesktopFrame;
22
23class MouseCursor {
24 public:
sergeyu@chromium.org8ae72562013-12-18 02:18:01 +000025 MouseCursor();
26
sergeyu@chromium.org2767b532013-10-16 02:42:38 +000027 // Takes ownership of |image|. |hotspot| must be within |image| boundaries.
28 MouseCursor(DesktopFrame* image, const DesktopVector& hotspot);
sergeyu@chromium.org8ae72562013-12-18 02:18:01 +000029
sergeyu@chromium.org2767b532013-10-16 02:42:38 +000030 ~MouseCursor();
31
sergeyu@chromium.org2df89c02013-10-17 19:47:18 +000032 static MouseCursor* CopyOf(const MouseCursor& cursor);
33
sergeyu@chromium.org8ae72562013-12-18 02:18:01 +000034 void set_image(DesktopFrame* image) { image_.reset(image); }
35 const DesktopFrame* image() const { return image_.get(); }
36
37 void set_hotspot(const DesktopVector& hotspot ) { hotspot_ = hotspot; }
sergeyu@chromium.org2df89c02013-10-17 19:47:18 +000038 const DesktopVector& hotspot() const { return hotspot_; }
sergeyu@chromium.org2767b532013-10-16 02:42:38 +000039
40 private:
kwiberg2bb3afa2016-03-16 15:58:08 -070041 std::unique_ptr<DesktopFrame> image_;
sergeyu@chromium.org2767b532013-10-16 02:42:38 +000042 DesktopVector hotspot_;
43
henrikg3c089d72015-09-16 05:37:44 -070044 RTC_DISALLOW_COPY_AND_ASSIGN(MouseCursor);
sergeyu@chromium.org2767b532013-10-16 02:42:38 +000045};
46
47} // namespace webrtc
48
49#endif // WEBRTC_MODULES_DESKTOP_CAPTURE_MOUSE_CURSOR_H_