introduce base class for simple inline boxes that just paint something
Signed-off-by: Florian Thienel <florian@thienel.org>
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/SimpleInlineBox.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/SimpleInlineBox.java
new file mode 100644
index 0000000..1e93a65
--- /dev/null
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/SimpleInlineBox.java
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Florian Thienel and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Florian Thienel - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.vex.core.internal.boxes;
+
+import org.eclipse.vex.core.internal.core.Graphics;
+import org.eclipse.vex.core.internal.core.Rectangle;
+
+/**
+ * @author Florian Thienel
+ */
+public abstract class SimpleInlineBox extends BaseBox implements IInlineBox {
+
+ private IBox parent;
+ private int top;
+ private int left;
+
+ private LineWrappingRule lineWrappingAtStart = LineWrappingRule.ALLOWED;
+ private LineWrappingRule lineWrappingAtEnd = LineWrappingRule.ALLOWED;
+
+ @Override
+ public void setParent(final IBox parent) {
+ this.parent = parent;
+ }
+
+ @Override
+ public IBox getParent() {
+ return parent;
+ }
+
+ @Override
+ public int getAbsoluteTop() {
+ if (parent == null) {
+ return top;
+ }
+ return parent.getAbsoluteTop() + top;
+ }
+
+ @Override
+ public int getAbsoluteLeft() {
+ if (parent == null) {
+ return left;
+ }
+ return parent.getAbsoluteLeft() + left;
+ }
+
+ @Override
+ public int getTop() {
+ return top;
+ }
+
+ @Override
+ public int getLeft() {
+ return left;
+ }
+
+ @Override
+ public void setPosition(final int top, final int left) {
+ this.top = top;
+ this.left = left;
+ }
+
+ @Override
+ public Rectangle getBounds() {
+ return new Rectangle(left, top, getWidth(), getHeight());
+ }
+
+ @Override
+ public int getInvisibleGapAtStart(final Graphics graphics) {
+ return 0;
+ }
+
+ @Override
+ public int getInvisibleGapAtEnd(final Graphics graphics) {
+ return 0;
+ }
+
+ @Override
+ public LineWrappingRule getLineWrappingAtStart() {
+ return lineWrappingAtStart;
+ }
+
+ public void setLineWrappingAtStart(final LineWrappingRule wrappingRule) {
+ lineWrappingAtStart = wrappingRule;
+ }
+
+ @Override
+ public LineWrappingRule getLineWrappingAtEnd() {
+ return lineWrappingAtEnd;
+ }
+
+ public void setLineWrappingAtEnd(final LineWrappingRule wrappingRule) {
+ lineWrappingAtEnd = wrappingRule;
+ }
+
+ @Override
+ public boolean requiresSplitForLineWrapping() {
+ return lineWrappingAtStart == LineWrappingRule.REQUIRED || lineWrappingAtEnd == LineWrappingRule.REQUIRED;
+ }
+
+ @Override
+ public boolean canJoin(final IInlineBox other) {
+ return false;
+ }
+
+ @Override
+ public boolean join(final IInlineBox other) {
+ return false;
+ }
+
+ @Override
+ public boolean canSplit() {
+ return false;
+ }
+
+ @Override
+ public IInlineBox splitTail(final Graphics graphics, final int headWidth, final boolean force) {
+ throw new UnsupportedOperationException("Splitting is not supported for " + getClass().getName() + ".");
+ }
+}
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/Square.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/Square.java
index 99d75a2..812e093 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/Square.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/boxes/Square.java
@@ -13,63 +13,14 @@
import org.eclipse.vex.core.internal.core.Color;
import org.eclipse.vex.core.internal.core.ColorResource;
import org.eclipse.vex.core.internal.core.Graphics;
-import org.eclipse.vex.core.internal.core.Rectangle;
/**
* @author Florian Thienel
*/
-public class Square extends BaseBox implements IInlineBox {
+public class Square extends SimpleInlineBox {
- private IBox parent;
- private int top;
- private int left;
private int size;
- private LineWrappingRule lineWrappingAtStart = LineWrappingRule.ALLOWED;
- private LineWrappingRule lineWrappingAtEnd = LineWrappingRule.ALLOWED;
-
- @Override
- public void setParent(final IBox parent) {
- this.parent = parent;
- }
-
- @Override
- public IBox getParent() {
- return parent;
- }
-
- @Override
- public int getAbsoluteTop() {
- if (parent == null) {
- return top;
- }
- return parent.getAbsoluteTop() + top;
- }
-
- @Override
- public int getAbsoluteLeft() {
- if (parent == null) {
- return left;
- }
- return parent.getAbsoluteLeft() + left;
- }
-
- @Override
- public int getTop() {
- return top;
- }
-
- @Override
- public int getLeft() {
- return left;
- }
-
- @Override
- public void setPosition(final int top, final int left) {
- this.top = top;
- this.left = left;
- }
-
@Override
public int getWidth() {
return size;
@@ -81,50 +32,12 @@
}
@Override
- public Rectangle getBounds() {
- return new Rectangle(left, top, size, size);
- }
-
- public void setSize(final int size) {
- this.size = size;
- }
-
- @Override
public int getBaseline() {
return size;
}
- @Override
- public int getInvisibleGapAtStart(final Graphics graphics) {
- return 0;
- }
-
- @Override
- public int getInvisibleGapAtEnd(final Graphics graphics) {
- return 0;
- }
-
- @Override
- public LineWrappingRule getLineWrappingAtStart() {
- return lineWrappingAtStart;
- }
-
- public void setLineWrappingAtStart(final LineWrappingRule wrappingRule) {
- lineWrappingAtStart = wrappingRule;
- }
-
- @Override
- public LineWrappingRule getLineWrappingAtEnd() {
- return lineWrappingAtEnd;
- }
-
- public void setLineWrappingAtEnd(final LineWrappingRule wrappingRule) {
- lineWrappingAtEnd = wrappingRule;
- }
-
- @Override
- public boolean requiresSplitForLineWrapping() {
- return lineWrappingAtStart == LineWrappingRule.REQUIRED || lineWrappingAtEnd == LineWrappingRule.REQUIRED;
+ public void setSize(final int size) {
+ this.size = size;
}
@Override
@@ -155,24 +68,4 @@
graphics.fillRect(0, 0, size, size);
}
-
- @Override
- public boolean canJoin(final IInlineBox other) {
- return false;
- }
-
- @Override
- public boolean join(final IInlineBox other) {
- return false;
- }
-
- @Override
- public boolean canSplit() {
- return false;
- }
-
- @Override
- public IInlineBox splitTail(final Graphics graphics, final int headWidth, final boolean force) {
- throw new UnsupportedOperationException("Splitting is not supported for Square.");
- }
}