atom_api_desktop_capturer.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // Copyright (c) 2015 GitHub, Inc.
  2. // Use of this source code is governed by the MIT license that can be
  3. // found in the LICENSE file.
  4. #ifndef ATOM_BROWSER_API_ATOM_API_DESKTOP_CAPTURER_H_
  5. #define ATOM_BROWSER_API_ATOM_API_DESKTOP_CAPTURER_H_
  6. #include <string>
  7. #include "atom/browser/api/event_emitter.h"
  8. #include "chrome/browser/media/desktop_media_list_observer.h"
  9. #include "chrome/browser/media/native_desktop_media_list.h"
  10. #include "native_mate/handle.h"
  11. namespace atom {
  12. namespace api {
  13. class DesktopCapturer : public mate::EventEmitter<DesktopCapturer>,
  14. public DesktopMediaListObserver {
  15. public:
  16. struct Source {
  17. DesktopMediaList::Source media_list_source;
  18. // Will be an empty string if not available.
  19. std::string display_id;
  20. };
  21. static mate::Handle<DesktopCapturer> Create(v8::Isolate* isolate);
  22. static void BuildPrototype(v8::Isolate* isolate,
  23. v8::Local<v8::FunctionTemplate> prototype);
  24. void StartHandling(bool capture_window,
  25. bool capture_screen,
  26. const gfx::Size& thumbnail_size);
  27. protected:
  28. explicit DesktopCapturer(v8::Isolate* isolate);
  29. ~DesktopCapturer() override;
  30. // DesktopMediaListObserver overrides.
  31. void OnSourceAdded(int index) override;
  32. void OnSourceRemoved(int index) override;
  33. void OnSourceMoved(int old_index, int new_index) override;
  34. void OnSourceNameChanged(int index) override;
  35. void OnSourceThumbnailChanged(int index) override;
  36. bool OnRefreshFinished() override;
  37. private:
  38. std::unique_ptr<DesktopMediaList> media_list_;
  39. #if defined(OS_WIN)
  40. bool using_directx_capturer_;
  41. #endif // defined(OS_WIN)
  42. DISALLOW_COPY_AND_ASSIGN(DesktopCapturer);
  43. };
  44. } // namespace api
  45. } // namespace atom
  46. #endif // ATOM_BROWSER_API_ATOM_API_DESKTOP_CAPTURER_H_