gecko-dev/servo/components/script/dom/domrect.rs
Manish Goregaokar e0c8a4271d servo: Merge #4173 - plugins: Autogeneration of Reflectable; Inheritance lint (from Manishearth:a-more-dom-struct); r=kmcallister
Now `#[dom_struct]` also generates Reflectable impls, and there's another lint to ensure that a DOM struct only contains one bare DOM field (as the first field) or a Reflector.

A lot of this was generated by sed -- each autogenerated change has its own commit for easy review; these will be squashed later.

Source-Repo: https://github.com/servo/servo
Source-Revision: 56d1b16d1b3a18d5ffa1d9c32562d3b209851711
2014-12-27 22:12:45 -07:00

68 lines
1.7 KiB
Rust

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use dom::bindings::codegen::Bindings::DOMRectBinding;
use dom::bindings::codegen::Bindings::DOMRectBinding::DOMRectMethods;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JSRef, Temporary};
use dom::bindings::utils::{Reflector, reflect_dom_object};
use dom::window::Window;
use servo_util::geometry::Au;
use std::num::Float;
#[dom_struct]
pub struct DOMRect {
reflector_: Reflector,
top: f32,
bottom: f32,
left: f32,
right: f32,
}
impl DOMRect {
fn new_inherited(top: Au, bottom: Au,
left: Au, right: Au) -> DOMRect {
DOMRect {
top: top.to_nearest_px() as f32,
bottom: bottom.to_nearest_px() as f32,
left: left.to_nearest_px() as f32,
right: right.to_nearest_px() as f32,
reflector_: Reflector::new(),
}
}
pub fn new(window: JSRef<Window>,
top: Au, bottom: Au,
left: Au, right: Au) -> Temporary<DOMRect> {
reflect_dom_object(box DOMRect::new_inherited(top, bottom, left, right),
GlobalRef::Window(window), DOMRectBinding::Wrap)
}
}
impl<'a> DOMRectMethods for JSRef<'a, DOMRect> {
fn Top(self) -> f32 {
self.top
}
fn Bottom(self) -> f32 {
self.bottom
}
fn Left(self) -> f32 {
self.left
}
fn Right(self) -> f32 {
self.right
}
fn Width(self) -> f32 {
(self.right - self.left).abs()
}
fn Height(self) -> f32 {
(self.bottom - self.top).abs()
}
}