summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/webrtc/base/window.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/webrtc/base/window.h')
-rw-r--r--chromium/third_party/webrtc/base/window.h124
1 files changed, 124 insertions, 0 deletions
diff --git a/chromium/third_party/webrtc/base/window.h b/chromium/third_party/webrtc/base/window.h
new file mode 100644
index 00000000000..d9610265248
--- /dev/null
+++ b/chromium/third_party/webrtc/base/window.h
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2004 The WebRTC Project Authors. All rights reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef WEBRTC_BASE_WINDOW_H_
+#define WEBRTC_BASE_WINDOW_H_
+
+#include "webrtc/base/stringencode.h"
+
+// Define platform specific window types.
+#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
+typedef unsigned long Window; // Avoid include <X11/Xlib.h>.
+#elif defined(WEBRTC_WIN)
+// We commonly include win32.h in webrtc/base so just include it here.
+#include "webrtc/base/win32.h" // Include HWND, HMONITOR.
+#elif defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
+typedef unsigned int CGWindowID;
+typedef unsigned int CGDirectDisplayID;
+#endif
+
+namespace rtc {
+
+class WindowId {
+ public:
+ // Define WindowT for each platform.
+#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
+ typedef Window WindowT;
+#elif defined(WEBRTC_WIN)
+ typedef HWND WindowT;
+#elif defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
+ typedef CGWindowID WindowT;
+#else
+ typedef unsigned int WindowT;
+#endif
+
+ static WindowId Cast(uint64 id) {
+#if defined(WEBRTC_WIN)
+ return WindowId(reinterpret_cast<WindowId::WindowT>(id));
+#else
+ return WindowId(static_cast<WindowId::WindowT>(id));
+#endif
+ }
+
+ static uint64 Format(const WindowT& id) {
+#if defined(WEBRTC_WIN)
+ return static_cast<uint64>(reinterpret_cast<uintptr_t>(id));
+#else
+ return static_cast<uint64>(id);
+#endif
+ }
+
+ WindowId() : id_(0) {}
+ WindowId(const WindowT& id) : id_(id) {} // NOLINT
+ const WindowT& id() const { return id_; }
+ bool IsValid() const { return id_ != 0; }
+ bool Equals(const WindowId& other) const {
+ return id_ == other.id();
+ }
+
+ private:
+ WindowT id_;
+};
+
+class DesktopId {
+ public:
+ // Define DesktopT for each platform.
+#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
+ typedef Window DesktopT;
+#elif defined(WEBRTC_WIN)
+ typedef HMONITOR DesktopT;
+#elif defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
+ typedef CGDirectDisplayID DesktopT;
+#else
+ typedef unsigned int DesktopT;
+#endif
+
+ static DesktopId Cast(int id, int index) {
+#if defined(WEBRTC_WIN)
+ return DesktopId(reinterpret_cast<DesktopId::DesktopT>(id), index);
+#else
+ return DesktopId(static_cast<DesktopId::DesktopT>(id), index);
+#endif
+ }
+
+ DesktopId() : id_(0), index_(-1) {}
+ DesktopId(const DesktopT& id, int index) // NOLINT
+ : id_(id), index_(index) {
+ }
+ const DesktopT& id() const { return id_; }
+ int index() const { return index_; }
+ bool IsValid() const { return index_ != -1; }
+ bool Equals(const DesktopId& other) const {
+ return id_ == other.id() && index_ == other.index();
+ }
+
+ private:
+ // Id is the platform specific desktop identifier.
+ DesktopT id_;
+ // Index is the desktop index as enumerated by each platform.
+ // Desktop capturer typically takes the index instead of id.
+ int index_;
+};
+
+// Window event types.
+enum WindowEvent {
+ WE_RESIZE = 0,
+ WE_CLOSE = 1,
+ WE_MINIMIZE = 2,
+ WE_RESTORE = 3,
+};
+
+inline std::string ToString(const WindowId& window) {
+ return ToString(window.id());
+}
+
+} // namespace rtc
+
+#endif // WEBRTC_BASE_WINDOW_H_