electron/atom/common/api/atom_api_screen.cc

45 lines
1.4 KiB
C++
Raw Normal View History

// Copyright (c) 2013 GitHub, Inc.
2014-04-25 09:49:37 +00:00
// Use of this source code is governed by the MIT license that can be
2014-01-07 12:00:25 +00:00
// found in the LICENSE file.
#include "atom/browser/browser.h"
2014-10-24 04:48:52 +00:00
#include "atom/common/native_mate_converters/gfx_converter.h"
#include "atom/common/node_includes.h"
2014-01-07 12:00:25 +00:00
namespace {
2014-01-07 12:15:55 +00:00
const char* kRequireAppReadyMessage =
"APIs of \"screen\" module can only be used after the \"ready\" event of "
"\"app\" module gets emitted.";
gfx::Point GetCursorScreenPoint(mate::Arguments* args) {
if (!atom::Browser::Get()->is_ready()) {
args->ThrowError(kRequireAppReadyMessage);
return gfx::Point();
}
gfx::Screen* screen = gfx::Screen::GetNativeScreen();
return screen->GetCursorScreenPoint();
}
gfx::Display GetPrimaryDisplay(mate::Arguments* args) {
if (!atom::Browser::Get()->is_ready()) {
args->ThrowError(kRequireAppReadyMessage);
return gfx::Display();
}
gfx::Screen* screen = gfx::Screen::GetNativeScreen();
return screen->GetPrimaryDisplay();
}
void Initialize(v8::Handle<v8::Object> exports, v8::Handle<v8::Value> unused,
v8::Handle<v8::Context> context, void* priv) {
mate::Dictionary dict(context->GetIsolate(), exports);
dict.SetMethod("getCursorScreenPoint", &GetCursorScreenPoint);
dict.SetMethod("getPrimaryDisplay", &GetPrimaryDisplay);
2014-01-07 12:00:25 +00:00
}
} // namespace
2014-01-07 12:00:25 +00:00
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_common_screen, Initialize)