org.stathissideris.ascii2image.text
Class TextGrid
java.lang.Object
org.stathissideris.ascii2image.text.TextGrid
- Direct Known Subclasses:
- GridPattern
public class TextGrid
- extends Object
- Author:
- Efstathios Sideris
Method Summary |
boolean |
add(TextGrid grid)
Adds grid to this. |
void |
addToMarkupTags(Collection<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(Iterable cells,
char c)
Fills all the cells in cells with c |
CellSet |
fillContinuousArea(int x,
int y,
char c)
Fills the continuous area with if c1 characters with c2,
flooding from cell x, y |
CellSet |
fillContinuousArea(TextGrid.Cell cell,
char c)
|
ArrayList |
findArrowheads()
|
CellSet |
findBoundariesExpandingFrom(TextGrid.Cell seed)
Locates and returns the '*' boundaries that we would
encounter if we did a flood-fill at seed . |
ArrayList<TextGrid.CellColorPair> |
findColorCodes()
|
ArrayList<TextGrid.CellTagPair> |
findMarkupTags()
|
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()
|
String |
getCellTypeAsString(TextGrid.Cell cell)
|
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()
|
StringBuffer |
getRow(int y)
|
protected ArrayList<StringBuffer> |
getRows()
|
char |
getSouthOf(int x,
int y)
|
char |
getSouthOf(TextGrid.Cell cell)
|
String |
getStringAt(int x,
int y,
int length)
|
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(ArrayList<StringBuffer> lines,
ProcessingOptions options)
|
boolean |
initialiseWithText(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 lines |
boolean |
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) is |
boolean |
isStringsStart(TextGrid.Cell cell)
true if the cell is not blank
but the previous (west) is |
boolean |
isStub(TextGrid.Cell cell)
A stub looks like that:
+- or -+ or + or + or /- or -/ or / (you get the point)
| | |
|
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)
|
boolean |
loadFrom(String filename)
|
boolean |
loadFrom(String filename,
ProcessingOptions options)
|
static void |
main(String[] args)
|
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 c2 |
void |
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,
String row)
|
void |
setRow(int y,
StringBuffer row)
|
String |
toString()
|
void |
writeStringTo(int x,
int y,
String str)
|
void |
writeStringTo(TextGrid.Cell cell,
String str)
|
TextGrid
public TextGrid()
TextGrid
public TextGrid(int width,
int height)
TextGrid
public TextGrid(TextGrid otherGrid)
addToMarkupTags
public void addToMarkupTags(Collection<String> tags)
main
public static void main(String[] args)
throws Exception
- Throws:
Exception
makeSameSizeAs
public static TextGrid makeSameSizeAs(TextGrid grid)
clear
public void clear()
get
public char get(int x,
int y)
get
public char get(TextGrid.Cell cell)
getRow
public 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 String getStringAt(int x,
int y,
int length)
getStringAt
public 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,
String str)
writeStringTo
public void writeStringTo(TextGrid.Cell cell,
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,
String row)
setRow
public void setRow(int y,
StringBuffer row)
getWidth
public int getWidth()
getHeight
public int getHeight()
printDebug
public void printDebug()
getDebugString
public String getDebugString()
toString
public String toString()
- Overrides:
toString
in class 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 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 ArrayList findArrowheads()
findColorCodes
public ArrayList<TextGrid.CellColorPair> findColorCodes()
findMarkupTags
public 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 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)
copyCellsTo
public void copyCellsTo(CellSet cells,
TextGrid grid)
equals
public boolean equals(TextGrid grid)
fillCellsWith
public void fillCellsWith(Iterable cells,
char c)
- Fills all the cells in
cells
with c
- 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 at
seed
.
- Parameters:
seed
-
- Returns:
cellContainsDashedLineChar
public boolean cellContainsDashedLineChar(TextGrid.Cell cell)
loadFrom
public boolean loadFrom(String filename)
throws FileNotFoundException,
IOException
- Throws:
FileNotFoundException
IOException
loadFrom
public boolean loadFrom(String filename,
ProcessingOptions options)
throws IOException
- Throws:
IOException
initialiseWithText
public boolean initialiseWithText(String text,
ProcessingOptions options)
throws UnsupportedEncodingException
- Throws:
UnsupportedEncodingException
initialiseWithLines
public boolean initialiseWithLines(ArrayList<StringBuffer> lines,
ProcessingOptions options)
throws UnsupportedEncodingException
- Throws:
UnsupportedEncodingException
getRows
protected ArrayList<StringBuffer> getRows()
- Returns:
Copyright © 2013. All Rights Reserved.