public int originalOffset(int replacedIndex) { finalizeMods(); if (regions.isEmpty()) return parentOriginalOffset(replacedIndex); if (replacedIndex == replacedLength) return parentOriginalOffset(original.length()); int originalIndex = replacedIndex; for (ReplacedTextRegion region : regions) { if (region.containsReplacedIndex(replacedIndex)) { originalIndex = region.getOriginalRange().getStart() + replacedIndex - region.getReplacedRange().getStart(); if (originalIndex > region.getOriginalRange().getEnd()) { originalIndex = region.getOriginalRange().getEnd(); } //originalIndex -= original.getStartOffset(); break; } //if (region == regions.get(regions.size() - 1) && region.getReplaced().getEndOffset() == replacedIndex) { // originalIndex = region.getOriginal().getEndOffset() - original.getStartOffset(); // break; //} } return parentOriginalOffset(originalIndex); } }
public int originalOffset(int replacedIndex) { finalizeMods(); if (regions.isEmpty()) return parentOriginalOffset(replacedIndex); if (replacedIndex == replacedLength) return parentOriginalOffset(original.length()); int originalIndex = replacedIndex; for (ReplacedTextRegion region : regions) { if (region.containsReplacedIndex(replacedIndex)) { originalIndex = region.getOriginalRange().getStart() + replacedIndex - region.getReplacedRange().getStart(); if (originalIndex > region.getOriginalRange().getEnd()) { originalIndex = region.getOriginalRange().getEnd(); } //originalIndex -= original.getStartOffset(); break; } //if (region == regions.get(regions.size() - 1) && region.getReplaced().getEndOffset() == replacedIndex) { // originalIndex = region.getOriginal().getEndOffset() - original.getStartOffset(); // break; //} } return parentOriginalOffset(originalIndex); } }