// Copyright (c) 2013 GitHub, Inc. All rights reserved. // Use of this source code is governed by the MIT license that can be // found in the LICENSE file. #include "native_mate/dictionary.h" #include "ui/gfx/screen.h" #include "atom/common/node_includes.h" namespace mate { template<> struct Converter { static v8::Handle ToV8(v8::Isolate* isolate, const gfx::Point& val) { return mate::ObjectTemplateBuilder(isolate).SetValue("x", val.x()) .SetValue("y", val.y()) .Build()->NewInstance(); } }; template<> struct Converter { static v8::Handle ToV8(v8::Isolate* isolate, const gfx::Size& val) { return mate::ObjectTemplateBuilder(isolate).SetValue("width", val.width()) .SetValue("height", val.height()) .Build()->NewInstance(); } }; template<> struct Converter { static v8::Handle ToV8(v8::Isolate* isolate, const gfx::Rect& val) { return mate::ObjectTemplateBuilder(isolate).SetValue("x", val.x()) .SetValue("y", val.y()) .SetValue("width", val.width()) .SetValue("height", val.height()) .Build()->NewInstance(); } }; template<> struct Converter { static v8::Handle ToV8(v8::Isolate* isolate, const gfx::Display& display) { return mate::ObjectTemplateBuilder(isolate) .SetValue("bounds", display.bounds()) .SetValue("workArea", display.work_area()) .SetValue("size", display.size()) .SetValue("workAreaSize", display.work_area_size()) .SetValue("scaleFactor", display.device_scale_factor()) .Build()->NewInstance(); } }; } // namespace mate namespace { void Initialize(v8::Handle exports, v8::Handle unused, v8::Handle context, void* priv) { gfx::Screen* screen = gfx::Screen::GetNativeScreen(); mate::Dictionary dict(context->GetIsolate(), exports); dict.SetMethod("getCursorScreenPoint", base::Bind(&gfx::Screen::GetCursorScreenPoint, base::Unretained(screen))); dict.SetMethod("getPrimaryDisplay", base::Bind(&gfx::Screen::GetPrimaryDisplay, base::Unretained(screen))); } } // namespace NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_common_screen, Initialize)