void handlePlainText(Rangei const &range) { Rangei plainRange(plainPos, plainPos + range.size()); plainPos += range.size(); // Append a formatted range using the stack's current format. ranges << Instance::FormatRange(plainRange, stack.last()); // Properties that span a single range only. stack.last().markIndent = stack.last().resetIndent = false; }
int MonospaceLineWrapping::indexAtWidth(Rangei const &range, int width) const { if(width <= range.size()) { return range.start + width; } return range.end; }
/** * Releases all entries currently stored in the entry atlas. */ void releaseAllNonVisibleEntries() { for(int i = 0; i < cache.size(); ++i) { if(!visibleRange.contains(i)) { cache[i]->clear(); } } }
void updateLineLayout(Rangei const &lineRange) { if(lineRange.isEmpty()) return; Rangei current = lineRange; forever { int end = updateLineLayoutUntilUntabbed(current); if(end == lineRange.end) { break; // Whole range done. } current = Rangei(end, lineRange.end); } }
void releaseExcessComposedEntries() { if(visibleRange < 0) return; int len = de::max(10, visibleRange.size()); // Excess entries before the visible range. int excess = visibleRange.start - len; for(int i = 0; i <= excess && i < cache.size(); ++i) { cache[i]->clear(); } // Excess entries after the visible range. excess = visibleRange.end + len; for(int i = excess; i < cache.size(); ++i) { cache[i]->clear(); } }
int MonospaceLineWrapping::rangeWidth(Rangei const &range) const { return range.size(); }