private void appendColumnRange(StringBuilder buf, int line, int visualStartColumn, int visualEndColumn) throws BadLocationException { IRegion info= fDocument.getLineInformation(line); int lineLength= info.getLength(); String content= fDocument.get(info.getOffset(), lineLength); int startColumn= -1; int endColumn= -1; int visual= 0; for (int offset= 0; offset < lineLength; offset++) { if (startColumn == -1 && visual >= visualStartColumn) startColumn= offset; if (visual >= visualEndColumn) { endColumn= offset; break; } visual+= visualSizeIncrement(content.charAt(offset), visual); } if (startColumn != -1) buf.append(content.substring(startColumn, endColumn == -1 ? lineLength : endColumn)); if (endColumn == -1) { int spaces= Math.max(0, visualEndColumn - Math.max(visual, visualStartColumn)); for (int i= 0; i < spaces; i++) buf.append(' '); } }
private void appendColumnRange(StringBuffer buf, int line, int visualStartColumn, int visualEndColumn) throws BadLocationException { IRegion info= fDocument.getLineInformation(line); int lineLength= info.getLength(); String content= fDocument.get(info.getOffset(), lineLength); int startColumn= -1; int endColumn= -1; int visual= 0; for (int offset= 0; offset < lineLength; offset++) { if (startColumn == -1 && visual >= visualStartColumn) startColumn= offset; if (visual >= visualEndColumn) { endColumn= offset; break; } visual+= visualSizeIncrement(content.charAt(offset), visual); } if (startColumn != -1) buf.append(content.substring(startColumn, endColumn == -1 ? lineLength : endColumn)); if (endColumn == -1) { int spaces= Math.max(0, visualEndColumn - Math.max(visual, visualStartColumn)); for (int i= 0; i < spaces; i++) buf.append(' '); } }
private int computeVisualColumn(final int line, final int column) throws BadLocationException { IRegion info= fDocument.getLineInformation(line); int lineLength= info.getLength(); int to= Math.min(lineLength, column); String content= fDocument.get(info.getOffset(), lineLength); int visual= 0; for (int offset= 0; offset < to; offset++) visual+= visualSizeIncrement(content.charAt(offset), visual); if (column > lineLength) visual+= column - lineLength; // virtual spaces return visual; }
visual+= visualSizeIncrement(content.charAt(offset), visual);
visual+= visualSizeIncrement(content.charAt(offset), visual);
private boolean isWider(char character, int visual) { return visualSizeIncrement(character, visual) > 1; }
private boolean isWider(char character, int visual) { return visualSizeIncrement(character, visual) > 1; }
private int computeCharacterColumn(int line, int visualColumn) throws BadLocationException { IRegion info= fDocument.getLineInformation(line); int lineLength= info.getLength(); String content= fDocument.get(info.getOffset(), lineLength); int visual= 0; for (int offset= 0; offset < lineLength; offset++) { if (visual >= visualColumn) return offset; visual+= visualSizeIncrement(content.charAt(offset), visual); } return lineLength + Math.max(0, visualColumn - visual); }
private int computeCharacterColumn(int line, int visualColumn) throws BadLocationException { IRegion info= fDocument.getLineInformation(line); int lineLength= info.getLength(); String content= fDocument.get(info.getOffset(), lineLength); int visual= 0; for (int offset= 0; offset < lineLength; offset++) { if (visual >= visualColumn) return offset; visual+= visualSizeIncrement(content.charAt(offset), visual); } return lineLength + Math.max(0, visualColumn - visual); }
private int computeVisualColumn(final int line, final int column) throws BadLocationException { IRegion info= fDocument.getLineInformation(line); int lineLength= info.getLength(); int to= Math.min(lineLength, column); String content= fDocument.get(info.getOffset(), lineLength); int visual= 0; for (int offset= 0; offset < to; offset++) visual+= visualSizeIncrement(content.charAt(offset), visual); if (column > lineLength) visual+= column - lineLength; // virtual spaces return visual; }