1d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi// Copyright 2014 The Chromium Authors. All rights reserved. 2d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi// Use of this source code is governed by a BSD-style license that can be 3d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi// found in the LICENSE file. 4d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 5d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi#ifndef DOMRectReadOnly_h 6d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi#define DOMRectReadOnly_h 7d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 8d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi#include "bindings/core/v8/ScriptWrappable.h" 9d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi#include "platform/heap/Handle.h" 10d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 11d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshinamespace blink { 12d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 13d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshiclass DOMRectReadOnly : public GarbageCollected<DOMRectReadOnly>, public ScriptWrappableBase { 14d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshipublic: 15d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi static DOMRectReadOnly* create(double x, double y, double width, double height); 16d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 17dc549d60f98d809f626c99de614960409a847054Takeshi Aimi double x() const { return m_x; } 18c7b3ccc564448cb4b918728421f9402bc18278c5Takeshi Aimi double y() const { return m_y; } 19d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi double width() const { return m_width; } 20d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi double height() const { return m_height; } 21d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 22d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi double top() const { return std::min(m_y, m_y + m_height); } 23d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi double right() const { return std::max(m_x, m_x + m_width); } 24d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi double bottom() const { return std::max(m_y, m_y + m_height); } 25d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi double left() const { return std::min(m_x, m_x + m_width); } 26d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 27d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi void trace(Visitor*) { } 28d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 29d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshiprotected: 30d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi DOMRectReadOnly(double x, double y, double width, double height); 31d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 32dc91865622e3cc9ff0bb33b83f1d3b38cd7a6d7aTakeshi Aimi double m_x; 33d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi double m_y; 34d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi double m_width; 35d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi double m_height; 36d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi}; 37d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 38d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi} // namespace blink 39d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 40d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi#endif 41d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi