diff --git a/atom.gyp b/atom.gyp index 7aa21a9d5845..21563b6359c3 100644 --- a/atom.gyp +++ b/atom.gyp @@ -234,6 +234,7 @@ 'atom/common/native_mate_converters/accelerator_converter.cc', 'atom/common/native_mate_converters/accelerator_converter.h', 'atom/common/native_mate_converters/file_path_converter.h', + 'atom/common/native_mate_converters/gfx_converter.cc', 'atom/common/native_mate_converters/gfx_converter.h', 'atom/common/native_mate_converters/gurl_converter.h', 'atom/common/native_mate_converters/image_converter.cc', diff --git a/atom/common/api/atom_api_screen.cc b/atom/common/api/atom_api_screen.cc index 77d6110e796d..2e3fd3b50074 100644 --- a/atom/common/api/atom_api_screen.cc +++ b/atom/common/api/atom_api_screen.cc @@ -3,6 +3,10 @@ // found in the LICENSE file. #include "atom/common/native_mate_converters/gfx_converter.h" +#include "base/bind.h" +#include "native_mate/dictionary.h" +#include "ui/gfx/screen.h" + #include "atom/common/node_includes.h" namespace { diff --git a/atom/common/native_mate_converters/gfx_converter.cc b/atom/common/native_mate_converters/gfx_converter.cc new file mode 100644 index 000000000000..3d74bdb47840 --- /dev/null +++ b/atom/common/native_mate_converters/gfx_converter.cc @@ -0,0 +1,93 @@ +// Copyright (c) 2015 GitHub, Inc. +// Use of this source code is governed by the MIT license that can be +// found in the LICENSE file. + +#include "atom/common/native_mate_converters/gfx_converter.h" + +#include "native_mate/dictionary.h" +#include "ui/gfx/point.h" +#include "ui/gfx/rect.h" +#include "ui/gfx/screen.h" +#include "ui/gfx/size.h" + +namespace mate { + +v8::Handle Converter::ToV8(v8::Isolate* isolate, + const gfx::Point& val) { + mate::Dictionary dict(isolate, v8::Object::New(isolate)); + dict.Set("x", val.x()); + dict.Set("y", val.y()); + return dict.GetHandle(); +} + +bool Converter::FromV8(v8::Isolate* isolate, + v8::Handle val, + gfx::Point* out) { + mate::Dictionary dict; + if (!ConvertFromV8(isolate, val, &dict)) + return false; + int x, y; + if (!dict.Get("x", &x) || !dict.Get("y", &y)) + return false; + *out = gfx::Point(x, y); + return true; +} + +v8::Handle Converter::ToV8(v8::Isolate* isolate, + const gfx::Size& val) { + mate::Dictionary dict(isolate, v8::Object::New(isolate)); + dict.Set("width", val.width()); + dict.Set("height", val.height()); + return dict.GetHandle(); +} + +bool Converter::FromV8(v8::Isolate* isolate, + v8::Handle val, + gfx::Size* out) { + mate::Dictionary dict; + if (!ConvertFromV8(isolate, val, &dict)) + return false; + int width, height; + if (!dict.Get("width", &width) || !dict.Get("height", &height)) + return false; + *out = gfx::Size(width, height); + return true; +} + +v8::Handle Converter::ToV8(v8::Isolate* isolate, + const gfx::Rect& val) { + mate::Dictionary dict(isolate, v8::Object::New(isolate)); + dict.Set("x", val.x()); + dict.Set("y", val.y()); + dict.Set("width", val.width()); + dict.Set("height", val.height()); + return dict.GetHandle(); +} + +bool Converter::FromV8(v8::Isolate* isolate, + v8::Handle val, + gfx::Rect* out) { + mate::Dictionary dict; + if (!ConvertFromV8(isolate, val, &dict)) + return false; + int x, y, width, height; + if (!dict.Get("x", &x) || !dict.Get("y", &y) || + !dict.Get("width", &width) || !dict.Get("height", &height)) + return false; + *out = gfx::Rect(x, y, width, height); + return true; +} + +v8::Handle Converter::ToV8(v8::Isolate* isolate, + const gfx::Display& val) { + mate::Dictionary dict(isolate, v8::Object::New(isolate)); + dict.Set("id", val.id()); + dict.Set("bounds", val.bounds()); + dict.Set("workArea", val.work_area()); + dict.Set("size", val.size()); + dict.Set("workAreaSize", val.work_area_size()); + dict.Set("scaleFactor", val.device_scale_factor()); + return dict.GetHandle(); +} + +} // namespace mate diff --git a/atom/common/native_mate_converters/gfx_converter.h b/atom/common/native_mate_converters/gfx_converter.h index 2cd9bf6bb0e1..35fd5039a72f 100644 --- a/atom/common/native_mate_converters/gfx_converter.h +++ b/atom/common/native_mate_converters/gfx_converter.h @@ -5,95 +5,51 @@ #ifndef ATOM_COMMON_NATIVE_MATE_CONVERTERS_GFX_CONVERTER_H_ #define ATOM_COMMON_NATIVE_MATE_CONVERTERS_GFX_CONVERTER_H_ -#include "native_mate/dictionary.h" -#include "ui/gfx/point.h" -#include "ui/gfx/rect.h" -#include "ui/gfx/screen.h" -#include "ui/gfx/size.h" +#include "native_mate/converter.h" + +namespace gfx { +class Point; +class Size; +class Rect; +class Display; +} namespace mate { template<> struct Converter { static v8::Handle ToV8(v8::Isolate* isolate, - const gfx::Point& val) { - mate::Dictionary dict(isolate, v8::Object::New(isolate)); - dict.Set("x", val.x()); - dict.Set("y", val.y()); - return dict.GetHandle(); - } - static bool FromV8(v8::Isolate* isolate, v8::Handle val, - gfx::Point* out) { - mate::Dictionary dict; - if (!ConvertFromV8(isolate, val, &dict)) - return false; - int x, y; - if (!dict.Get("x", &x) || !dict.Get("y", &y)) - return false; - *out = gfx::Point(x, y); - return true; - } + const gfx::Point& val); + static bool FromV8(v8::Isolate* isolate, + v8::Handle val, + gfx::Point* out); }; template<> struct Converter { static v8::Handle ToV8(v8::Isolate* isolate, - const gfx::Size& val) { - mate::Dictionary dict(isolate, v8::Object::New(isolate)); - dict.Set("width", val.width()); - dict.Set("height", val.height()); - return dict.GetHandle(); - } - static bool FromV8(v8::Isolate* isolate, v8::Handle val, - gfx::Size* out) { - mate::Dictionary dict; - if (!ConvertFromV8(isolate, val, &dict)) - return false; - int width, height; - if (!dict.Get("width", &width) || !dict.Get("height", &height)) - return false; - *out = gfx::Size(width, height); - return true; - } + const gfx::Size& val); + static bool FromV8(v8::Isolate* isolate, + v8::Handle val, + gfx::Size* out); }; template<> struct Converter { static v8::Handle ToV8(v8::Isolate* isolate, - const gfx::Rect& val) { - mate::Dictionary dict(isolate, v8::Object::New(isolate)); - dict.Set("x", val.x()); - dict.Set("y", val.y()); - dict.Set("width", val.width()); - dict.Set("height", val.height()); - return dict.GetHandle(); - } - static bool FromV8(v8::Isolate* isolate, v8::Handle val, - gfx::Rect* out) { - mate::Dictionary dict; - if (!ConvertFromV8(isolate, val, &dict)) - return false; - int x, y, width, height; - if (!dict.Get("x", &x) || !dict.Get("y", &y) || - !dict.Get("width", &width) || !dict.Get("height", &height)) - return false; - *out = gfx::Rect(x, y, width, height); - return true; - } + const gfx::Rect& val); + static bool FromV8(v8::Isolate* isolate, + v8::Handle val, + gfx::Rect* out); }; template<> struct Converter { static v8::Handle ToV8(v8::Isolate* isolate, - const gfx::Display& display) { - mate::Dictionary dict(isolate, v8::Object::New(isolate)); - dict.Set("bounds", display.bounds()); - dict.Set("workArea", display.work_area()); - dict.Set("size", display.size()); - dict.Set("workAreaSize", display.work_area_size()); - dict.Set("scaleFactor", display.device_scale_factor()); - return dict.GetHandle(); - } + const gfx::Display& val); + static bool FromV8(v8::Isolate* isolate, + v8::Handle val, + gfx::Display* out); }; } // namespace mate