1 /* 2 * Copyright (c) 2002-2025 Gargoyle Software Inc. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * https://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 package org.htmlunit.javascript.host; 16 17 import org.htmlunit.javascript.configuration.JsxClass; 18 import org.htmlunit.javascript.configuration.JsxConstructor; 19 import org.htmlunit.javascript.configuration.JsxGetter; 20 import org.htmlunit.javascript.configuration.JsxSetter; 21 import org.htmlunit.javascript.host.dom.DOMRectReadOnly; 22 23 /** 24 * Specifies a rectangle that contains a line of text in either an element or a TextRange object. 25 * 26 * @author Ahmed Ashour 27 * @author Ronald Brill 28 * @see <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMRect">DOMRect</a> 29 */ 30 @JsxClass 31 public class DOMRect extends DOMRectReadOnly { 32 33 private int bottom_; 34 private int left_; 35 private int right_; 36 private int top_; 37 38 /** 39 * Creates an instance. 40 */ 41 public DOMRect() { 42 super(); 43 } 44 45 /** 46 * JavaScript constructor. 47 */ 48 @JsxConstructor 49 @Override 50 public void jsConstructor() { 51 super.jsConstructor(); 52 } 53 54 /** 55 * Creates an instance, with the given coordinates. 56 * 57 * @param bottom the bottom coordinate of the rectangle surrounding the object content 58 * @param left the left coordinate of the rectangle surrounding the object content 59 * @param right the right coordinate of the rectangle surrounding the object content 60 * @param top the top coordinate of the rectangle surrounding the object content 61 */ 62 public DOMRect(final int bottom, final int left, final int right, final int top) { 63 this(); 64 bottom_ = bottom; 65 left_ = left; 66 right_ = right; 67 top_ = top; 68 } 69 70 /** 71 * Sets the bottom coordinate of the rectangle surrounding the object content. 72 * @param bottom the bottom coordinate of the rectangle surrounding the object content 73 */ 74 @JsxSetter 75 public void setBottom(final int bottom) { 76 bottom_ = bottom; 77 } 78 79 /** 80 * Returns the bottom coordinate of the rectangle surrounding the object content. 81 * @return the bottom coordinate of the rectangle surrounding the object content 82 */ 83 @JsxGetter 84 public int getBottom() { 85 return bottom_; 86 } 87 88 /** 89 * Sets the left coordinate of the rectangle surrounding the object content. 90 * @param left the left coordinate of the rectangle surrounding the object content 91 */ 92 @JsxSetter 93 public void setLeft(final int left) { 94 left_ = left; 95 } 96 97 /** 98 * Returns the left coordinate of the rectangle surrounding the object content. 99 * @return the left coordinate of the rectangle surrounding the object content 100 */ 101 @JsxGetter 102 public int getLeft() { 103 return left_; 104 } 105 106 /** 107 * Sets the right coordinate of the rectangle surrounding the object content. 108 * @param right the right coordinate of the rectangle surrounding the object content 109 */ 110 @JsxSetter 111 public void setRight(final int right) { 112 right_ = right; 113 } 114 115 /** 116 * Returns the right coordinate of the rectangle surrounding the object content. 117 * @return the right coordinate of the rectangle surrounding the object content 118 */ 119 @JsxGetter 120 public int getRight() { 121 return right_; 122 } 123 124 /** 125 * Sets the top coordinate of the rectangle surrounding the object content. 126 * @param top the top coordinate of the rectangle surrounding the object content 127 */ 128 @JsxSetter 129 public void setTop(final int top) { 130 top_ = top; 131 } 132 133 /** 134 * Returns the top coordinate of the rectangle surrounding the object content. 135 * @return the top coordinate of the rectangle surrounding the object content 136 */ 137 @JsxGetter 138 public int getTop() { 139 return top_; 140 } 141 142 /** 143 * Returns the {@code width} property. 144 * @return the {@code width} property 145 */ 146 @JsxGetter 147 public int getWidth() { 148 return getRight() - getLeft(); 149 } 150 151 /** 152 * Returns the {@code height} property. 153 * @return the {@code height} property 154 */ 155 @JsxGetter 156 public int getHeight() { 157 return getBottom() - getTop(); 158 } 159 }