org.stathissideris.ascii2image.text
Class TextGrid

java.lang.Object
  extended by org.stathissideris.ascii2image.text.TextGrid
Direct Known Subclasses:
GridPattern

public class TextGrid
extends Object

Author:
Efstathios Sideris

Nested Class Summary
 class TextGrid.Cell
           
 class TextGrid.CellColorPair
           
 class TextGrid.CellStringPair
           
 class TextGrid.CellTagPair
           
 
Constructor Summary
TextGrid()
           
TextGrid(int width, int height)
           
TextGrid(TextGrid otherGrid)
           
 
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)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

TextGrid

public TextGrid()

TextGrid

public TextGrid(int width,
                int height)

TextGrid

public TextGrid(TextGrid otherGrid)
Method Detail

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 replace
c2 - 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.