void draw (CodeEditorComponent& owner, Graphics& g, const Font& font, float x, const int y, const int baselineOffset, const int lineHeight, const Colour& highlightColour) const throw() { if (highlightColumnStart < highlightColumnEnd) { g.setColour (highlightColour); g.fillRect (roundToInt (x + highlightColumnStart * owner.getCharWidth()), y, roundToInt ((highlightColumnEnd - highlightColumnStart) * owner.getCharWidth()), lineHeight); } int lastType = INT_MIN; for (int i = 0; i < tokens.size(); ++i) { SyntaxToken* const token = tokens.getUnchecked(i); if (lastType != token->tokenType) { lastType = token->tokenType; g.setColour (owner.getColourForTokenType (lastType)); } g.drawSingleLineText (token->text, roundToInt (x), y + baselineOffset); if (i < tokens.size() - 1) { if (token->width < 0) token->width = font.getStringWidthFloat (token->text); x += token->width; } } }
void draw (CodeEditorComponent& owner, Graphics& g, const Font& font, float x, const int y, const int baselineOffset, const int lineHeight, const Colour& highlightColour) const { if (highlightColumnStart < highlightColumnEnd) { g.setColour (highlightColour); g.fillRect (roundToInt (x + highlightColumnStart * owner.getCharWidth()), y, roundToInt ((highlightColumnEnd - highlightColumnStart) * owner.getCharWidth()), lineHeight); } int lastType = std::numeric_limits<int>::min(); for (int i = 0; i < tokens.size(); ++i) { SyntaxToken& token = tokens.getReference(i); if (lastType != token.tokenType) { lastType = token.tokenType; g.setColour (owner.getColourForTokenType (lastType)); } g.drawSingleLineText (token.text, roundToInt (x), y + baselineOffset); if (i < tokens.size() - 1) { if (token.width < 0) token.width = font.getStringWidthFloat (token.text); x += token.width; } } }