RED-4824: Cleaned up code to make method more readable
This commit is contained in:
parent
cadbc3c7a4
commit
ef04b7168a
@ -28,6 +28,9 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
@JsonIgnoreProperties({"empty"})
|
@JsonIgnoreProperties({"empty"})
|
||||||
public class TextPositionSequence implements CharSequence {
|
public class TextPositionSequence implements CharSequence {
|
||||||
|
|
||||||
|
public static final int SMALL_OFFSET = 1;
|
||||||
|
public static final int LARGE_OFFSET = 2;
|
||||||
|
public static final int WIDE_OFFSET = 3;
|
||||||
private int page;
|
private int page;
|
||||||
private List<RedTextPosition> textPositions = new ArrayList<>();
|
private List<RedTextPosition> textPositions = new ArrayList<>();
|
||||||
|
|
||||||
@ -162,8 +165,7 @@ public class TextPositionSequence implements CharSequence {
|
|||||||
if (rotation == 90) {
|
if (rotation == 90) {
|
||||||
return textPositions.get(0).getYDirAdj();
|
return textPositions.get(0).getYDirAdj();
|
||||||
} else {
|
} else {
|
||||||
return textPositions.get(textPositions.size() - 1)
|
return textPositions.get(textPositions.size() - 1).getXDirAdj() + textPositions.get(textPositions.size() - 1).getWidthDirAdj() + SMALL_OFFSET;
|
||||||
.getXDirAdj() + textPositions.get(textPositions.size() - 1).getWidthDirAdj() + 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -193,7 +195,7 @@ public class TextPositionSequence implements CharSequence {
|
|||||||
public float getY2() {
|
public float getY2() {
|
||||||
|
|
||||||
if (rotation == 90) {
|
if (rotation == 90) {
|
||||||
return textPositions.get(textPositions.size() - 1).getXDirAdj() + getTextHeight() - 2;
|
return textPositions.get(textPositions.size() - 1).getXDirAdj() + getTextHeight() - LARGE_OFFSET;
|
||||||
} else {
|
} else {
|
||||||
return pageHeight - textPositions.get(0).getYDirAdj() + getTextHeight();
|
return pageHeight - textPositions.get(0).getYDirAdj() + getTextHeight();
|
||||||
}
|
}
|
||||||
@ -204,7 +206,7 @@ public class TextPositionSequence implements CharSequence {
|
|||||||
@JsonAttribute(ignore = true)
|
@JsonAttribute(ignore = true)
|
||||||
public float getTextHeight() {
|
public float getTextHeight() {
|
||||||
|
|
||||||
return textPositions.get(0).getHeightDir() + 2;
|
return textPositions.get(0).getHeightDir() + LARGE_OFFSET;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -273,144 +275,143 @@ public class TextPositionSequence implements CharSequence {
|
|||||||
|
|
||||||
log.debug("Page: '{}', Word: '{}', Rotation: '{}', textRotation {}", page, toString(), rotation, dir);
|
log.debug("Page: '{}', Word: '{}', Rotation: '{}', textRotation {}", page, toString(), rotation, dir);
|
||||||
|
|
||||||
float height = getTextHeight();
|
float textHeight = getTextHeight();
|
||||||
|
|
||||||
float posXInit = getX1();
|
float posXInit = getX1();
|
||||||
float posXEnd;
|
float posXEnd;
|
||||||
float posYInit;
|
float posYInit;
|
||||||
float posYEnd;
|
float posYEnd;
|
||||||
|
|
||||||
if (rotation == 0 && dir == 90f) {
|
RedTextPosition firstTextPos = textPositions.get(0);
|
||||||
|
RedTextPosition lastTextPos = textPositions.get(textPositions.size() - 1);
|
||||||
|
|
||||||
posYInit = getX1();
|
float xAndWidthDirAdjSum = lastTextPos.getXDirAdj() + lastTextPos.getWidthDirAdj();
|
||||||
posYEnd = getX2() + textPositions.get(0).getWidthDirAdj() - textPositions.get(textPositions.size() - 1)
|
float widthDirAdjDelta = firstTextPos.getWidthDirAdj() - lastTextPos.getWidthDirAdj();
|
||||||
.getWidthDirAdj() - 3;
|
|
||||||
posXInit = textPositions.get(0).getYDirAdj() + 2;
|
|
||||||
posXEnd = textPositions.get(textPositions.size() - 1).getYDirAdj() - height;
|
|
||||||
|
|
||||||
} else if (rotation == 0 && dir == 180f) {
|
if (rotation == 0) {
|
||||||
|
if (dir == 0f) {
|
||||||
|
// Rot0Dir0
|
||||||
|
posXEnd = xAndWidthDirAdjSum + SMALL_OFFSET;
|
||||||
|
posYInit = pageHeight - firstTextPos.getYDirAdj() - LARGE_OFFSET;
|
||||||
|
posYEnd = pageHeight - lastTextPos.getYDirAdj() + LARGE_OFFSET;
|
||||||
|
|
||||||
posXInit = pageWidth - getX1() + 1;
|
return new Rectangle(new Point(posXInit, posYInit), posXEnd - posXInit, posYEnd - posYInit + textHeight, page);
|
||||||
posXEnd = pageWidth - getX2() + textPositions.get(0)
|
} else if (dir == 90f) {
|
||||||
.getWidthDirAdj() - textPositions.get(textPositions.size() - 1).getWidthDirAdj() - 3;
|
posXInit = firstTextPos.getYDirAdj() + LARGE_OFFSET;
|
||||||
posYInit = textPositions.get(0).getYDirAdj() - height + 2;
|
posXEnd = lastTextPos.getYDirAdj() - textHeight;
|
||||||
posYEnd = textPositions.get(textPositions.size() - 1).getYDirAdj() - height + 2;
|
posYInit = getX1();
|
||||||
|
posYEnd = getX2() + widthDirAdjDelta - WIDE_OFFSET;
|
||||||
|
|
||||||
} else if (rotation == 0 && dir == 270f) {
|
return new Rectangle(new Point(posXInit, posYInit), posXEnd - posXInit, posYEnd - posYInit + textHeight, page);
|
||||||
|
} else if (dir == 180f) {
|
||||||
|
// Rot180 Dir180
|
||||||
|
posXInit = pageWidth - getX1() + SMALL_OFFSET;
|
||||||
|
posXEnd = pageWidth - getX2() + widthDirAdjDelta - WIDE_OFFSET;
|
||||||
|
posYInit = firstTextPos.getYDirAdj() - textHeight + LARGE_OFFSET;
|
||||||
|
posYEnd = lastTextPos.getYDirAdj() - textHeight + LARGE_OFFSET;
|
||||||
|
|
||||||
posYInit = pageHeight - getX1();
|
return new Rectangle(new Point(posXInit, posYInit), posXEnd - posXInit, posYEnd - posYInit + textHeight, page);
|
||||||
posYEnd = pageHeight - getX2() - textPositions.get(0)
|
} else if (dir == 270f) {
|
||||||
.getWidthDirAdj() - textPositions.get(textPositions.size() - 1).getWidthDirAdj() - 3;
|
posXInit = pageWidth - firstTextPos.getYDirAdj() - LARGE_OFFSET;
|
||||||
posXInit = pageWidth - textPositions.get(0).getYDirAdj() - 2;
|
posXEnd = pageWidth - lastTextPos.getYDirAdj() + textHeight;
|
||||||
posXEnd = pageWidth - textPositions.get(textPositions.size() - 1)
|
posYInit = pageHeight - getX1();
|
||||||
.getYDirAdj() + height;
|
posYEnd = pageHeight - getX2() - widthDirAdjDelta - WIDE_OFFSET;
|
||||||
|
|
||||||
} else if (rotation == 90 && dir == 0.0f) {
|
return new Rectangle(new Point(posXInit, posYInit), posXEnd - posXInit, posYEnd - posYInit + textHeight, page);
|
||||||
|
}
|
||||||
|
} else if (rotation == 90) {
|
||||||
|
if (dir == 0.0f) {
|
||||||
|
posXInit = lastTextPos.getXDirAdj() + lastTextPos.getHeightDir();
|
||||||
|
posXEnd = firstTextPos.getXDirAdj();
|
||||||
|
posYInit = pageHeight - firstTextPos.getYDirAdj() - LARGE_OFFSET;
|
||||||
|
posYEnd = pageHeight - lastTextPos.getYDirAdj() + LARGE_OFFSET;
|
||||||
|
|
||||||
posXInit = textPositions.get(textPositions.size() - 1)
|
return new Rectangle(new Point(posXInit, posYInit), posXEnd - posXInit, posYEnd - posYInit + textHeight, page);
|
||||||
.getXDirAdj() + textPositions.get(textPositions.size() - 1).getHeightDir();
|
} else if (dir == 90.0f) {
|
||||||
posXEnd = textPositions.get(0).getXDirAdj();
|
posXEnd = firstTextPos.getYDirAdj() + LARGE_OFFSET;
|
||||||
posYInit = pageHeight - textPositions.get(0).getYDirAdj() - 2;
|
posYInit = getY1();
|
||||||
posYEnd = pageHeight - textPositions.get(textPositions.size() - 1)
|
posYEnd = lastTextPos.getXDirAdj() - textHeight + LARGE_OFFSET * 2;
|
||||||
.getYDirAdj() + 2;
|
|
||||||
|
|
||||||
} else if (rotation == 90 && dir == 90.0f) {
|
return new Rectangle(new Point(posXInit, posYInit), posXEnd - posXInit, posYEnd - posYInit + textHeight, page);
|
||||||
posXEnd = textPositions.get(0).getYDirAdj() + 2;
|
} else if (dir == 180.0f) {
|
||||||
posYInit = getY1();
|
posXInit = pageWidth - lastTextPos.getXDirAdj() - LARGE_OFFSET * 2;
|
||||||
posYEnd = textPositions.get(textPositions.size() - 1).getXDirAdj() - height + 4;
|
posXEnd = pageWidth - firstTextPos.getXDirAdj();
|
||||||
|
posYInit = firstTextPos.getYDirAdj() - LARGE_OFFSET - lastTextPos.getHeightDir();
|
||||||
|
posYEnd = lastTextPos.getYDirAdj() - lastTextPos.getHeightDir();
|
||||||
|
|
||||||
} else if (rotation == 90 && dir == 180.0f) {
|
return new Rectangle(new Point(posXInit, posYInit), posXEnd - posXInit, posYEnd - posYInit + textHeight, page);
|
||||||
|
} else if (dir == 270.0f) {
|
||||||
|
posXInit = pageWidth - getX1();
|
||||||
|
posXEnd = pageWidth - firstTextPos.getYDirAdj() - LARGE_OFFSET;
|
||||||
|
posYInit = pageHeight - getY1();
|
||||||
|
posYEnd = pageHeight - lastTextPos.getXDirAdj() - textHeight - LARGE_OFFSET * 2;
|
||||||
|
|
||||||
posXInit = pageWidth - textPositions.get(textPositions.size() - 1)
|
return new Rectangle(new Point(posXInit, posYInit), posXEnd - posXInit, posYEnd - posYInit + textHeight, page);
|
||||||
.getXDirAdj() - 4;
|
}
|
||||||
posXEnd = pageWidth - textPositions.get(0).getXDirAdj();
|
} else if (rotation == 180) {
|
||||||
posYInit = textPositions.get(0).getYDirAdj() - 2 - textPositions.get(textPositions.size() - 1)
|
if (dir == 0f) {
|
||||||
.getHeightDir();
|
// Rot0Dir0
|
||||||
posYEnd = textPositions.get(textPositions.size() - 1)
|
posXEnd = xAndWidthDirAdjSum + SMALL_OFFSET;
|
||||||
.getYDirAdj() - textPositions.get(textPositions.size() - 1).getHeightDir();
|
posYInit = pageHeight - firstTextPos.getYDirAdj() - LARGE_OFFSET;
|
||||||
|
posYEnd = pageHeight - lastTextPos.getYDirAdj() + LARGE_OFFSET;
|
||||||
|
|
||||||
} else if (rotation == 90 && dir == 270.0f) {
|
return new Rectangle(new Point(posXInit, posYInit), posXEnd - posXInit, posYEnd - posYInit + textHeight, page);
|
||||||
|
} else if (dir == 90f) {
|
||||||
|
posXInit = firstTextPos.getYDirAdj() + LARGE_OFFSET;
|
||||||
|
posXEnd = lastTextPos.getYDirAdj() - textHeight;
|
||||||
|
posYInit = getX1();
|
||||||
|
posYEnd = getX2() - WIDE_OFFSET;
|
||||||
|
|
||||||
posXInit = pageWidth - getX1();
|
return new Rectangle(new Point(posXInit, posYInit), posXEnd - posXInit, posYEnd - posYInit + textHeight, page);
|
||||||
posXEnd = pageWidth - textPositions.get(0).getYDirAdj() - 2;
|
} else if (dir == 180f) {
|
||||||
posYInit = pageHeight - getY1();
|
// Rot180 Dir180
|
||||||
posYEnd = pageHeight - textPositions.get(textPositions.size() - 1)
|
posXInit = pageWidth - getX1() + SMALL_OFFSET;
|
||||||
.getXDirAdj() - height - 4;
|
posXEnd = pageWidth - getX2() + widthDirAdjDelta - WIDE_OFFSET;
|
||||||
|
posYInit = firstTextPos.getYDirAdj() - textHeight + LARGE_OFFSET;
|
||||||
|
posYEnd = lastTextPos.getYDirAdj() - textHeight + LARGE_OFFSET;
|
||||||
|
|
||||||
} else if (rotation == 180 && dir == 0f) {
|
return new Rectangle(new Point(posXInit, posYInit), posXEnd - posXInit, posYEnd - posYInit + textHeight, page);
|
||||||
|
} else if (dir == 270.0f) {
|
||||||
|
posXInit = pageWidth - firstTextPos.getYDirAdj() - LARGE_OFFSET;
|
||||||
|
posXEnd = pageWidth - lastTextPos.getYDirAdj() + textHeight;
|
||||||
|
posYInit = pageHeight - getX1();
|
||||||
|
posYEnd = pageHeight - getX2() - widthDirAdjDelta;
|
||||||
|
|
||||||
posXEnd = textPositions.get(textPositions.size() - 1)
|
return new Rectangle(new Point(posXInit, posYInit), posXEnd - posXInit, posYEnd - posYInit + textHeight, page);
|
||||||
.getXDirAdj() + textPositions.get(textPositions.size() - 1).getWidthDirAdj() + 1;
|
}
|
||||||
posYInit = pageHeight - textPositions.get(0).getYDirAdj() - 2;
|
} else if (rotation == 270) {
|
||||||
posYEnd = pageHeight - textPositions.get(textPositions.size() - 1)
|
if (dir == 0.0f) {
|
||||||
.getYDirAdj() + 2;
|
posXInit = firstTextPos.getXDirAdj();
|
||||||
|
posXEnd = xAndWidthDirAdjSum + 0.1f;
|
||||||
|
posYInit = pageHeight - firstTextPos.getYDirAdj() - LARGE_OFFSET;
|
||||||
|
posYEnd = posYInit + SMALL_OFFSET;
|
||||||
|
|
||||||
} else if (rotation == 180 && dir == 90f) {
|
return new Rectangle(new Point(posXInit, posYInit), posXEnd - posXInit, posYEnd - posYInit + textHeight, page);
|
||||||
|
} else if (dir == 90.0f) {
|
||||||
|
posXInit = firstTextPos.getYDirAdj() + LARGE_OFFSET;
|
||||||
|
posXEnd = lastTextPos.getYDirAdj() - textHeight;
|
||||||
|
posYInit = getX1();
|
||||||
|
posYEnd = getX2() - textHeight;
|
||||||
|
|
||||||
posYInit = getX1();
|
return new Rectangle(new Point(posXInit, posYInit), posXEnd - posXInit, posYEnd - posYInit + textHeight, page);
|
||||||
posYEnd = getX2() - 3;
|
} else if (dir == 180.0f) {
|
||||||
posXInit = textPositions.get(0).getYDirAdj() + 2;
|
posXInit = pageWidth - getX1() + SMALL_OFFSET;
|
||||||
posXEnd = textPositions.get(textPositions.size() - 1).getYDirAdj() - height;
|
posXEnd = pageWidth - getX2() - LARGE_OFFSET * 2;
|
||||||
|
posYInit = firstTextPos.getYDirAdj() - textHeight + LARGE_OFFSET;
|
||||||
|
posYEnd = lastTextPos.getYDirAdj() - textHeight + LARGE_OFFSET;
|
||||||
|
|
||||||
} else if (rotation == 180 && dir == 180f) {
|
return new Rectangle(new Point(posXInit, posYInit), posXEnd - posXInit, posYEnd - posYInit + textHeight, page);
|
||||||
|
} else if (dir == 270.0f) {
|
||||||
|
posXInit = pageWidth - firstTextPos.getYDirAdj() - LARGE_OFFSET;
|
||||||
|
posXEnd = pageWidth - lastTextPos.getYDirAdj() + textHeight;
|
||||||
|
posYInit = pageHeight - getX1();
|
||||||
|
posYEnd = pageHeight - getX2() - textHeight;
|
||||||
|
|
||||||
posXInit = pageWidth - getX1() + 1;
|
return new Rectangle(new Point(posXInit, posYInit), posXEnd - posXInit, posYEnd - posYInit + textHeight, page);
|
||||||
posXEnd = pageWidth - getX2() + textPositions.get(0)
|
}
|
||||||
.getWidthDirAdj() - textPositions.get(textPositions.size() - 1).getWidthDirAdj() - 3;
|
|
||||||
posYInit = textPositions.get(0).getYDirAdj() - height + 2;
|
|
||||||
posYEnd = textPositions.get(textPositions.size() - 1).getYDirAdj() - height + 2;
|
|
||||||
|
|
||||||
} else if (rotation == 180 && dir == 270.0f) {
|
|
||||||
|
|
||||||
posYInit = pageHeight - getX1();
|
|
||||||
posYEnd = pageHeight - getX2() - textPositions.get(0)
|
|
||||||
.getWidthDirAdj() - textPositions.get(textPositions.size() - 1).getWidthDirAdj();
|
|
||||||
posXInit = pageWidth - textPositions.get(0).getYDirAdj() - 2;
|
|
||||||
posXEnd = pageWidth - textPositions.get(textPositions.size() - 1)
|
|
||||||
.getYDirAdj() + height;
|
|
||||||
|
|
||||||
} else if (rotation == 270 && dir == 0.0f) {
|
|
||||||
|
|
||||||
posYInit = pageHeight - textPositions.get(0).getYDirAdj() - 2;
|
|
||||||
posYEnd = posYInit + 1;
|
|
||||||
posXInit = textPositions.get(0).getXDirAdj();
|
|
||||||
posXEnd = textPositions.get(textPositions.size() - 1)
|
|
||||||
.getXDirAdj() + textPositions.get(textPositions.size() - 1).getWidthDirAdj() + 0.1f;
|
|
||||||
|
|
||||||
} else if (rotation == 270 && dir == 90.0f) {
|
|
||||||
|
|
||||||
posYInit = getX1();
|
|
||||||
posYEnd = getX2() - height;
|
|
||||||
posXInit = textPositions.get(0).getYDirAdj() + 2;
|
|
||||||
posXEnd = textPositions.get(textPositions.size() - 1).getYDirAdj() - height;
|
|
||||||
|
|
||||||
} else if (rotation == 270 && dir == 180.0f) {
|
|
||||||
|
|
||||||
posXInit = pageWidth - getX1() + 1;
|
|
||||||
posXEnd = pageWidth - getX2() - 4;
|
|
||||||
posYInit = textPositions.get(0).getYDirAdj() - height + 2;
|
|
||||||
posYEnd = textPositions.get(textPositions.size() - 1).getYDirAdj() - height + 2;
|
|
||||||
|
|
||||||
} else if (rotation == 270 && dir == 270.0f) {
|
|
||||||
|
|
||||||
posYInit = pageHeight - getX1();
|
|
||||||
posYEnd = pageHeight - getX2() - height;
|
|
||||||
posXInit = pageWidth - textPositions.get(0).getYDirAdj() - 2;
|
|
||||||
posXEnd = pageWidth - textPositions.get(textPositions.size() - 1)
|
|
||||||
.getYDirAdj() + height;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
// page rotation = 0 and text direction = 0
|
|
||||||
posXEnd = textPositions.get(textPositions.size() - 1)
|
|
||||||
.getXDirAdj() + textPositions.get(textPositions.size() - 1).getWidthDirAdj() + 1;
|
|
||||||
posYInit = pageHeight - textPositions.get(0).getYDirAdj() - 2;
|
|
||||||
posYEnd = pageHeight - textPositions.get(textPositions.size() - 1)
|
|
||||||
.getYDirAdj() + 2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var rectangle = new Rectangle(new Point(posXInit, posYInit), posXEnd - posXInit, posYEnd - posYInit + height, page);
|
throw new RuntimeException("A case was missed while calculating the TextPositionSequence rectangle. This is a programming error");
|
||||||
log.debug("Rectangle: {}", rectangle);
|
|
||||||
return rectangle;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user