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;
}
示例#3
0
 /**
  * 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);
        }
    }
示例#5
0
    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();
}