/*
GNU GENERAL LICENSE
Copyright (C) 2006 The Lobo Project. Copyright (C) 2014 - 2017 Lobo Evolution
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either
verion 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General License for more details.
You should have received a copy of the GNU General Public
along with this program. If not, see <http://www.gnu.org/licenses/>.
Contact info: lobochief@users.sourceforge.net; ivan.difrancesco@yahoo.it
*/
package org.lobobrowser.html.renderer;
/**
* The Class LineMargin.
*/
public class LineMargin {
/** The clear x. */
private final int clearX;
/** The clear y. */
private final int clearY;
/** The next. */
private final LineMargin next;
/**
* Instantiates a new line margin.
*
* @param next
* the next
* @param cleary
* the cleary
* @param totalXOffset
* the total x offset
*/
public LineMargin(LineMargin next, int cleary, int totalXOffset) {
super();
this.next = next;
this.clearY = cleary;
this.clearX = totalXOffset;
}
/** Gets the clear y.
*
* @return the clear y
*/
public int getClearY() {
return clearY;
}
/** Gets the next.
*
* @return the next
*/
public LineMargin getNext() {
return next;
}
/** Gets the offset.
*
* @return the offset
*/
public int getOffset() {
return clearX;
}
/*
* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object other) {
if (!(other instanceof LineMargin)) {
return false;
}
LineMargin olm = (LineMargin) other;
return (olm.clearX == this.clearX) && (olm.clearY == this.clearY)
&& org.lobobrowser.util.Objects.equals(olm.next, this.next);
}
/**
* Translated.
*
* @param yoffset
* the yoffset
* @param xoffset
* the xoffset
* @return the line margin
*/
public LineMargin translated(int yoffset, int xoffset) {
int newClearY = this.clearY - yoffset;
int newOffsetX = this.clearX - xoffset;
if (newOffsetX < 0) {
newOffsetX = 0;
}
LineMargin oldNext = this.next;
LineMargin newNext = oldNext == null ? null : oldNext.translated(
yoffset, xoffset);
return new LineMargin(newNext, newClearY, newOffsetX);
}
}