Class TextGrid
- java.lang.Object
-
- org.stathissideris.ascii2image.text.TextGrid
-
- Direct Known Subclasses:
GridPattern
public class TextGrid extends java.lang.Object
- Author:
- Efstathios Sideris
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
TextGrid.Cell
class
TextGrid.CellColorPair
class
TextGrid.CellStringPair
class
TextGrid.CellTagPair
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
add(TextGrid grid)
Adds grid to this.void
addToMarkupTags(java.util.Collection<java.lang.String> tags)
boolean
cellContainsDashedLineChar(TextGrid.Cell cell)
void
clear()
boolean
containsAtLeastOneDashedLine(CellSet set)
void
copyCellsTo(CellSet cells, TextGrid grid)
boolean
equals(TextGrid grid)
boolean
exactlyOneNeighbourIsBoundary(TextGrid.Cell cell)
void
fillCellsWith(java.lang.Iterable cells, char c)
Fills all the cells incells
withc
CellSet
fillContinuousArea(int x, int y, char c)
Fills the continuous area with if c1 characters with c2, flooding from cell x, yCellSet
fillContinuousArea(TextGrid.Cell cell, char c)
java.util.ArrayList
findArrowheads()
CellSet
findBoundariesExpandingFrom(TextGrid.Cell seed)
Locates and returns the '*' boundaries that we would encounter if we did a flood-fill atseed
.java.util.ArrayList<TextGrid.CellColorPair>
findColorCodes()
java.util.ArrayList<TextGrid.CellTagPair>
findMarkupTags()
java.util.ArrayList<TextGrid.CellStringPair>
findStrings()
Returns an ArrayList of CellStringPairs that represents all the continuous (non-blank) Strings in the grid.CellSet
followCell(TextGrid.Cell cell)
CellSet
followCell(TextGrid.Cell cell, TextGrid.Cell blocked)
CellSet
followCorner(TextGrid.Cell cell)
CellSet
followCorner(TextGrid.Cell cell, TextGrid.Cell blocked)
CellSet
followCorner1(TextGrid.Cell cell)
CellSet
followCorner1(TextGrid.Cell cell, TextGrid.Cell blocked)
CellSet
followCorner2(TextGrid.Cell cell)
CellSet
followCorner2(TextGrid.Cell cell, TextGrid.Cell blocked)
CellSet
followCorner3(TextGrid.Cell cell)
CellSet
followCorner3(TextGrid.Cell cell, TextGrid.Cell blocked)
CellSet
followCorner4(TextGrid.Cell cell)
CellSet
followCorner4(TextGrid.Cell cell, TextGrid.Cell blocked)
CellSet
followCrossOnLine(TextGrid.Cell cell, TextGrid.Cell blocked)
CellSet
followIntersection(TextGrid.Cell cell)
CellSet
followIntersection(TextGrid.Cell cell, TextGrid.Cell blocked)
CellSet
followLine(int x, int y)
CellSet
followLine(TextGrid.Cell cell)
Returns the neighbours of a line-cell that are boundaries (0 to 2 cells are returned)CellSet
followLine(TextGrid.Cell cell, TextGrid.Cell blocked)
CellSet
followStub(TextGrid.Cell cell)
CellSet
followStub(TextGrid.Cell cell, TextGrid.Cell blocked)
char
get(int x, int y)
char
get(TextGrid.Cell cell)
CellSet
getAllBlanksBetweenCharacters()
CellSet
getAllBoundaries()
CellSet
getAllNonBlank()
java.lang.String
getCellTypeAsString(TextGrid.Cell cell)
java.lang.String
getDebugString()
char
getEastOf(int x, int y)
char
getEastOf(TextGrid.Cell cell)
int
getHeight()
char
getNorthOf(int x, int y)
char
getNorthOf(TextGrid.Cell cell)
CellSet
getPointMarkersOnLine()
java.lang.StringBuffer
getRow(int y)
protected java.util.ArrayList<java.lang.StringBuffer>
getRows()
char
getSouthOf(int x, int y)
char
getSouthOf(TextGrid.Cell cell)
java.lang.String
getStringAt(int x, int y, int length)
java.lang.String
getStringAt(TextGrid.Cell cell, int length)
TextGrid
getSubGrid(int x, int y, int width, int height)
TextGrid
getTestingSubGrid(TextGrid.Cell cell)
char
getWestOf(int x, int y)
char
getWestOf(TextGrid.Cell cell)
int
getWidth()
boolean
hasBlankCells()
boolean
hasEntryPoint(TextGrid.Cell cell, int entryPointId)
This is done in a bit of a messy way, should be impossible to go out of sync with corresponding GridPatternGroup.boolean
initialiseWithLines(java.util.ArrayList<java.lang.StringBuffer> lines, ProcessingOptions options)
boolean
initialiseWithText(java.lang.String text, ProcessingOptions options)
boolean
isArrowhead(TextGrid.Cell cell)
boolean
isBlank(int x, int y)
boolean
isBlank(TextGrid.Cell cell)
boolean
isBlankBetweenCharacters(TextGrid.Cell cell)
true if cell is blank and the east and west cells are not (used to find gaps between words)static boolean
isBoundary(char c)
boolean
isBoundary(int x, int y)
boolean
isBoundary(TextGrid.Cell cell)
boolean
isBullet(int x, int y)
boolean
isBullet(TextGrid.Cell cell)
boolean
isColumnBlank(int x)
boolean
isCorner(int x, int y)
boolean
isCorner(TextGrid.Cell cell)
boolean
isCorner1(TextGrid.Cell cell)
boolean
isCorner2(TextGrid.Cell cell)
boolean
isCorner3(TextGrid.Cell cell)
boolean
isCorner4(TextGrid.Cell cell)
boolean
isCross(TextGrid.Cell cell)
boolean
isCrossOnLine(TextGrid.Cell cell)
boolean
isEastArrowhead(TextGrid.Cell cell)
boolean
isHorizontalCrossOnLine(TextGrid.Cell cell)
static boolean
isHorizontalLine(char c)
boolean
isHorizontalLine(int x, int y)
boolean
isHorizontalLine(TextGrid.Cell cell)
boolean
isHorizontalLinesEnd(TextGrid.Cell cell)
boolean
isHorizontalStarOnLine(TextGrid.Cell cell)
boolean
isIntersection(int x, int y)
boolean
isIntersection(TextGrid.Cell cell)
boolean
isInverseK(TextGrid.Cell cell)
boolean
isInverseT(TextGrid.Cell cell)
boolean
isK(TextGrid.Cell cell)
boolean
isLine(TextGrid.Cell cell)
boolean
isLinesEnd(int x, int y)
boolean
isLinesEnd(TextGrid.Cell cell)
Stubs are also considered end of linesboolean
isLoneDiagonal(TextGrid.Cell cell)
boolean
isNormalCorner(int x, int y)
boolean
isNormalCorner(TextGrid.Cell cell)
boolean
isNorthArrowhead(TextGrid.Cell cell)
boolean
isOnHorizontalLine(TextGrid.Cell cell)
boolean
isOnVerticalLine(TextGrid.Cell cell)
boolean
isOutOfBounds(int x, int y)
boolean
isOutOfBounds(TextGrid.Cell cell)
boolean
isPointCell(TextGrid.Cell cell)
boolean
isRoundCorner(int x, int y)
boolean
isRoundCorner(TextGrid.Cell cell)
boolean
isSouthArrowhead(TextGrid.Cell cell)
boolean
isStarOnLine(TextGrid.Cell cell)
boolean
isStringsEnd(TextGrid.Cell cell)
true if the cell is not blank but the next (east) isboolean
isStringsStart(TextGrid.Cell cell)
true if the cell is not blank but the previous (west) isboolean
isStub(TextGrid.Cell cell)
A stub looks like that:boolean
isT(TextGrid.Cell cell)
boolean
isVerticalCrossOnLine(TextGrid.Cell cell)
static boolean
isVerticalLine(char c)
boolean
isVerticalLine(int x, int y)
boolean
isVerticalLine(TextGrid.Cell cell)
boolean
isVerticalLinesEnd(TextGrid.Cell cell)
boolean
isVerticalStarOnLine(TextGrid.Cell cell)
boolean
isWestArrowhead(TextGrid.Cell cell)
static TextGrid
makeSameSizeAs(TextGrid grid)
boolean
matches(GridPattern criteria)
boolean
matchesAll(GridPatternGroup criteria)
boolean
matchesAny(GridPatternGroup criteria)
boolean
matchesAny(TextGrid.Cell cell, GridPatternGroup criteria)
int
otherStringsEndInTheSameColumn(TextGrid.Cell cell)
int
otherStringsStartInTheSameColumn(TextGrid.Cell cell)
void
printDebug()
void
removeArrowheads()
void
removeBoundaries()
void
removeColorCodes()
void
removeMarkupTags()
void
removeNonText()
Makes blank all the cells that contain non-text elements.void
replaceAll(char c1, char c2)
Replace all occurences of c1 with c2void
replaceBullets()
void
replaceHumanColorCodes()
void
replacePointMarkersOnLine()
void
replaceTypeOnLine()
Replaces letters or numbers that are on horizontal or vertical lines, with the appropriate character that will make the line continuous (| for vertical and - for horizontal lines)void
set(int x, int y, char c)
void
set(TextGrid.Cell cell, char c)
void
setRow(int y, java.lang.String row)
void
setRow(int y, java.lang.StringBuffer row)
java.lang.String
toString()
void
writeStringTo(int x, int y, java.lang.String str)
void
writeStringTo(TextGrid.Cell cell, java.lang.String str)
-
-
-
Constructor Detail
-
TextGrid
public TextGrid()
-
TextGrid
public TextGrid(int width, int height)
-
TextGrid
public TextGrid(TextGrid otherGrid)
-
-
Method Detail
-
addToMarkupTags
public void addToMarkupTags(java.util.Collection<java.lang.String> tags)
-
clear
public void clear()
-
get
public char get(int x, int y)
-
get
public char get(TextGrid.Cell cell)
-
getRow
public java.lang.StringBuffer getRow(int y)
-
getSubGrid
public TextGrid getSubGrid(int x, int y, int width, int height)
-
getTestingSubGrid
public TextGrid getTestingSubGrid(TextGrid.Cell cell)
-
getStringAt
public java.lang.String getStringAt(int x, int y, int length)
-
getStringAt
public java.lang.String getStringAt(TextGrid.Cell cell, int length)
-
getNorthOf
public char getNorthOf(int x, int y)
-
getSouthOf
public char getSouthOf(int x, int y)
-
getEastOf
public char getEastOf(int x, int y)
-
getWestOf
public char getWestOf(int x, int y)
-
getNorthOf
public char getNorthOf(TextGrid.Cell cell)
-
getSouthOf
public char getSouthOf(TextGrid.Cell cell)
-
getEastOf
public char getEastOf(TextGrid.Cell cell)
-
getWestOf
public char getWestOf(TextGrid.Cell cell)
-
writeStringTo
public void writeStringTo(int x, int y, java.lang.String str)
-
writeStringTo
public void writeStringTo(TextGrid.Cell cell, java.lang.String str)
-
set
public void set(TextGrid.Cell cell, char c)
-
set
public void set(int x, int y, char c)
-
setRow
public void setRow(int y, java.lang.String row)
-
setRow
public void setRow(int y, java.lang.StringBuffer row)
-
getWidth
public int getWidth()
-
getHeight
public int getHeight()
-
printDebug
public void printDebug()
-
getDebugString
public java.lang.String getDebugString()
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
add
public boolean add(TextGrid grid)
Adds grid to this. Space characters in this grid are replaced with the corresponding contents of grid, otherwise the contents are unchanged.- Parameters:
grid
-- Returns:
- false if the grids are of different size
-
replaceTypeOnLine
public void replaceTypeOnLine()
Replaces letters or numbers that are on horizontal or vertical lines, with the appropriate character that will make the line continuous (| for vertical and - for horizontal lines)
-
replacePointMarkersOnLine
public void replacePointMarkersOnLine()
-
getPointMarkersOnLine
public CellSet getPointMarkersOnLine()
-
replaceHumanColorCodes
public void replaceHumanColorCodes()
-
replaceAll
public void replaceAll(char c1, char c2)
Replace all occurences of c1 with c2- Parameters:
c1
-c2
-
-
hasBlankCells
public boolean hasBlankCells()
-
getAllNonBlank
public CellSet getAllNonBlank()
-
getAllBoundaries
public CellSet getAllBoundaries()
-
getAllBlanksBetweenCharacters
public CellSet getAllBlanksBetweenCharacters()
-
findStrings
public java.util.ArrayList<TextGrid.CellStringPair> findStrings()
Returns an ArrayList of CellStringPairs that represents all the continuous (non-blank) Strings in the grid. Used on buffers that contain only type, in order to find the positions and the contents of the strings.- Returns:
-
hasEntryPoint
public boolean hasEntryPoint(TextGrid.Cell cell, int entryPointId)
This is done in a bit of a messy way, should be impossible to go out of sync with corresponding GridPatternGroup.- Parameters:
cell
-entryPointId
-- Returns:
-
isBlankBetweenCharacters
public boolean isBlankBetweenCharacters(TextGrid.Cell cell)
true if cell is blank and the east and west cells are not (used to find gaps between words)- Parameters:
cell
-- Returns:
-
removeNonText
public void removeNonText()
Makes blank all the cells that contain non-text elements.
-
removeArrowheads
public void removeArrowheads()
-
removeColorCodes
public void removeColorCodes()
-
removeBoundaries
public void removeBoundaries()
-
findArrowheads
public java.util.ArrayList findArrowheads()
-
findColorCodes
public java.util.ArrayList<TextGrid.CellColorPair> findColorCodes()
-
findMarkupTags
public java.util.ArrayList<TextGrid.CellTagPair> findMarkupTags()
-
removeMarkupTags
public void removeMarkupTags()
-
matchesAny
public boolean matchesAny(GridPatternGroup criteria)
-
matchesAll
public boolean matchesAll(GridPatternGroup criteria)
-
matches
public boolean matches(GridPattern criteria)
-
isOnHorizontalLine
public boolean isOnHorizontalLine(TextGrid.Cell cell)
-
isOnVerticalLine
public boolean isOnVerticalLine(TextGrid.Cell cell)
-
isBoundary
public static boolean isBoundary(char c)
-
isBoundary
public boolean isBoundary(int x, int y)
-
isBoundary
public boolean isBoundary(TextGrid.Cell cell)
-
isLine
public boolean isLine(TextGrid.Cell cell)
-
isHorizontalLine
public static boolean isHorizontalLine(char c)
-
isHorizontalLine
public boolean isHorizontalLine(TextGrid.Cell cell)
-
isHorizontalLine
public boolean isHorizontalLine(int x, int y)
-
isVerticalLine
public static boolean isVerticalLine(char c)
-
isVerticalLine
public boolean isVerticalLine(TextGrid.Cell cell)
-
isVerticalLine
public boolean isVerticalLine(int x, int y)
-
isLinesEnd
public boolean isLinesEnd(int x, int y)
-
isLinesEnd
public boolean isLinesEnd(TextGrid.Cell cell)
Stubs are also considered end of lines- Parameters:
cell
-- Returns:
-
isVerticalLinesEnd
public boolean isVerticalLinesEnd(TextGrid.Cell cell)
-
isHorizontalLinesEnd
public boolean isHorizontalLinesEnd(TextGrid.Cell cell)
-
isPointCell
public boolean isPointCell(TextGrid.Cell cell)
-
containsAtLeastOneDashedLine
public boolean containsAtLeastOneDashedLine(CellSet set)
-
exactlyOneNeighbourIsBoundary
public boolean exactlyOneNeighbourIsBoundary(TextGrid.Cell cell)
-
isStub
public boolean isStub(TextGrid.Cell cell)
A stub looks like that:+- or -+ or + or + or /- or -/ or / (you get the point) | | |
- Parameters:
cell
-- Returns:
-
isCrossOnLine
public boolean isCrossOnLine(TextGrid.Cell cell)
-
isHorizontalCrossOnLine
public boolean isHorizontalCrossOnLine(TextGrid.Cell cell)
-
isVerticalCrossOnLine
public boolean isVerticalCrossOnLine(TextGrid.Cell cell)
-
isStarOnLine
public boolean isStarOnLine(TextGrid.Cell cell)
-
isLoneDiagonal
public boolean isLoneDiagonal(TextGrid.Cell cell)
-
isHorizontalStarOnLine
public boolean isHorizontalStarOnLine(TextGrid.Cell cell)
-
isVerticalStarOnLine
public boolean isVerticalStarOnLine(TextGrid.Cell cell)
-
isArrowhead
public boolean isArrowhead(TextGrid.Cell cell)
-
isNorthArrowhead
public boolean isNorthArrowhead(TextGrid.Cell cell)
-
isEastArrowhead
public boolean isEastArrowhead(TextGrid.Cell cell)
-
isWestArrowhead
public boolean isWestArrowhead(TextGrid.Cell cell)
-
isSouthArrowhead
public boolean isSouthArrowhead(TextGrid.Cell cell)
-
isBullet
public boolean isBullet(int x, int y)
-
isBullet
public boolean isBullet(TextGrid.Cell cell)
-
replaceBullets
public void replaceBullets()
-
isStringsStart
public boolean isStringsStart(TextGrid.Cell cell)
true if the cell is not blank but the previous (west) is- Parameters:
cell
-- Returns:
-
isStringsEnd
public boolean isStringsEnd(TextGrid.Cell cell)
true if the cell is not blank but the next (east) is- Parameters:
cell
-- Returns:
-
otherStringsStartInTheSameColumn
public int otherStringsStartInTheSameColumn(TextGrid.Cell cell)
-
otherStringsEndInTheSameColumn
public int otherStringsEndInTheSameColumn(TextGrid.Cell cell)
-
isColumnBlank
public boolean isColumnBlank(int x)
-
followLine
public CellSet followLine(int x, int y)
-
followIntersection
public CellSet followIntersection(TextGrid.Cell cell)
-
followIntersection
public CellSet followIntersection(TextGrid.Cell cell, TextGrid.Cell blocked)
-
followLine
public CellSet followLine(TextGrid.Cell cell)
Returns the neighbours of a line-cell that are boundaries (0 to 2 cells are returned)- Parameters:
cell
-- Returns:
- null if the cell is not a line
-
followLine
public CellSet followLine(TextGrid.Cell cell, TextGrid.Cell blocked)
-
followCorner
public CellSet followCorner(TextGrid.Cell cell)
-
followCorner
public CellSet followCorner(TextGrid.Cell cell, TextGrid.Cell blocked)
-
followCorner1
public CellSet followCorner1(TextGrid.Cell cell)
-
followCorner1
public CellSet followCorner1(TextGrid.Cell cell, TextGrid.Cell blocked)
-
followCorner2
public CellSet followCorner2(TextGrid.Cell cell)
-
followCorner2
public CellSet followCorner2(TextGrid.Cell cell, TextGrid.Cell blocked)
-
followCorner3
public CellSet followCorner3(TextGrid.Cell cell)
-
followCorner3
public CellSet followCorner3(TextGrid.Cell cell, TextGrid.Cell blocked)
-
followCorner4
public CellSet followCorner4(TextGrid.Cell cell)
-
followCorner4
public CellSet followCorner4(TextGrid.Cell cell, TextGrid.Cell blocked)
-
followStub
public CellSet followStub(TextGrid.Cell cell)
-
followStub
public CellSet followStub(TextGrid.Cell cell, TextGrid.Cell blocked)
-
followCell
public CellSet followCell(TextGrid.Cell cell)
-
followCell
public CellSet followCell(TextGrid.Cell cell, TextGrid.Cell blocked)
-
getCellTypeAsString
public java.lang.String getCellTypeAsString(TextGrid.Cell cell)
-
followCrossOnLine
public CellSet followCrossOnLine(TextGrid.Cell cell, TextGrid.Cell blocked)
-
isOutOfBounds
public boolean isOutOfBounds(TextGrid.Cell cell)
-
isOutOfBounds
public boolean isOutOfBounds(int x, int y)
-
isBlank
public boolean isBlank(TextGrid.Cell cell)
-
isBlank
public boolean isBlank(int x, int y)
-
isCorner
public boolean isCorner(TextGrid.Cell cell)
-
isCorner
public boolean isCorner(int x, int y)
-
matchesAny
public boolean matchesAny(TextGrid.Cell cell, GridPatternGroup criteria)
-
isCorner1
public boolean isCorner1(TextGrid.Cell cell)
-
isCorner2
public boolean isCorner2(TextGrid.Cell cell)
-
isCorner3
public boolean isCorner3(TextGrid.Cell cell)
-
isCorner4
public boolean isCorner4(TextGrid.Cell cell)
-
isCross
public boolean isCross(TextGrid.Cell cell)
-
isK
public boolean isK(TextGrid.Cell cell)
-
isInverseK
public boolean isInverseK(TextGrid.Cell cell)
-
isT
public boolean isT(TextGrid.Cell cell)
-
isInverseT
public boolean isInverseT(TextGrid.Cell cell)
-
isNormalCorner
public boolean isNormalCorner(TextGrid.Cell cell)
-
isNormalCorner
public boolean isNormalCorner(int x, int y)
-
isRoundCorner
public boolean isRoundCorner(TextGrid.Cell cell)
-
isRoundCorner
public boolean isRoundCorner(int x, int y)
-
isIntersection
public boolean isIntersection(TextGrid.Cell cell)
-
isIntersection
public boolean isIntersection(int x, int y)
-
equals
public boolean equals(TextGrid grid)
-
fillCellsWith
public void fillCellsWith(java.lang.Iterable cells, char c)
Fills all the cells incells
withc
- Parameters:
cells
-c
-
-
fillContinuousArea
public CellSet fillContinuousArea(int x, int y, char c)
Fills the continuous area with if c1 characters with c2, flooding from cell x, y- Parameters:
x
-y
-c1
- the character to replacec2
- the character to replace c1 with- Returns:
- the list of cells filled
-
fillContinuousArea
public CellSet fillContinuousArea(TextGrid.Cell cell, char c)
-
findBoundariesExpandingFrom
public CellSet findBoundariesExpandingFrom(TextGrid.Cell seed)
Locates and returns the '*' boundaries that we would encounter if we did a flood-fill atseed
.- Parameters:
seed
-- Returns:
-
cellContainsDashedLineChar
public boolean cellContainsDashedLineChar(TextGrid.Cell cell)
-
initialiseWithText
public boolean initialiseWithText(java.lang.String text, ProcessingOptions options) throws java.io.UnsupportedEncodingException
- Throws:
java.io.UnsupportedEncodingException
-
initialiseWithLines
public boolean initialiseWithLines(java.util.ArrayList<java.lang.StringBuffer> lines, ProcessingOptions options) throws java.io.UnsupportedEncodingException
- Throws:
java.io.UnsupportedEncodingException
-
getRows
protected java.util.ArrayList<java.lang.StringBuffer> getRows()
- Returns:
-
-