Search for usage in LXR

#include <katerenderer.h>

Public Types

enum  caretStyles { Line, Block, Underline, Half }
enum  PaintTextLineFlag { SkipDrawFirstInvisibleLineUnderlined = 0x1, SkipDrawLineSelection = 0x2 }
typedef QFlags< PaintTextLineFlagPaintTextLineFlags

Public Member Functions

 KateRenderer (const KateRenderer &)=delete
 KateRenderer (KTextEditor::DocumentPrivate *doc, Kate::TextFolding &folding, KTextEditor::ViewPrivate *view=nullptr)
KTextEditor::Attribute::Ptr attribute (uint pos) const
KateRenderer::caretStyles caretStyle () const
KateRendererConfig * config () const
const QFontcurrentFont () const
const QFontMetricsFcurrentFontMetrics () const
int cursorToX (const KateTextLayout &range, const KTextEditor::Cursor pos, bool returnPastLine=false) const
int cursorToX (const KateTextLayout &range, int col, bool returnPastLine=false) const
QVector< QTextLayout::FormatRangedecorationsForLine (const Kate::TextLine &textLine, int line, bool selectionsOnly=false) const
void decreaseFontSizes (qreal step=1.0) const
KTextEditor::DocumentPrivate * doc () const
uint documentHeight () const
bool drawCaret () const
Kate::TextFoldingfolding () const
uint fontHeight () const
bool getSelectionBounds (int line, int lineLength, int &start, int &end) const
void increaseFontSizes (qreal step=1.0) const
bool isPrinterFriendly () const
void layoutLine (KateLineLayoutPtr line, int maxwidth=-1, bool cacheLayout=false) const
int lineHeight () const
KateRendereroperator= (const KateRenderer &)=delete
void paintSelection (QPaintDevice *d, int startLine, int xStart, int endLine, int xEnd, qreal scale=1.0)
void paintTextLine (QPainter &paint, KateLineLayoutPtr range, int xStart, int xEnd, const KTextEditor::Cursor *cursor=nullptr, PaintTextLineFlags flags=PaintTextLineFlags())
void paintTextLineBackground (QPainter &paint, KateLineLayoutPtr layout, int currentViewLine, int xStart, int xEnd)
void paintTextLineSelection (QPainter &paint, KateLineLayoutPtr layout, const QVector< QTextLayout::FormatRange > &selRanges)
void resetFontSizes () const
void setCaretOverrideColor (const QColor &color)
void setCaretStyle (KateRenderer::caretStyles style)
void setDrawCaret (bool drawCaret)
void setIndentWidth (int indentWidth)
void setPrinterFriendly (bool printerFriendly)
void setShowIndentLines (bool showLines)
void setShowNonPrintableSpaces (const bool showNonPrintableSpaces)
void setShowSelections (bool showSelections)
void setShowSpaces (KateDocumentConfig::WhitespaceRendering showSpaces)
void setShowTabs (bool showTabs)
void setTabWidth (int tabWidth)
bool showIndentLines () const
bool showNonPrintableSpaces () const
bool showSelections () const
KateDocumentConfig::WhitespaceRendering showSpaces () const
bool showTabs () const
qreal spaceWidth () const
KTextEditor::Attribute::Ptr specificAttribute (int context) const
void updateAttributes ()
void updateConfig ()
void updateMarkerSize ()
KTextEditor::ViewPrivate * view () const
KTextEditor::Cursor xToCursor (const KateTextLayout &range, int x, bool returnPastLine=false) const

Static Public Member Functions

static bool isLineRightToLeft (KateLineLayoutPtr lineLayout)

Detailed Description

Handles all of the work of rendering the text (used for the views and printing)

Definition at line 48 of file katerenderer.h.

Member Enumeration Documentation

◆ caretStyles

Style of Caret.

The caret is displayed as a vertical bar (Line), a filled box (Block), a horizontal bar (Underline), or a half-height filled box (Half). The default is Line.

Line           Block          Underline           Half

_ ######### _ _

__| | #####| |# __| | __| |

/ _' | ##/ _' |# / _' | / _' |

| (_| | #| (#| |# | (_| | #| (#| |

__,_| ##__,_|# __,_| ##__,_|


Definition at line 67 of file katerenderer.h.

◆ PaintTextLineFlag

Flags to customize the paintTextLine function behavior.


Skip drawing the dashed underline at the start of a folded block of text?


Skip drawing the line selection This is useful when we are drawing the draggable pixmap for drag event.

Definition at line 327 of file katerenderer.h.

Constructor & Destructor Documentation

◆ KateRenderer()

KateRenderer::KateRenderer ( KTextEditor::DocumentPrivate *  doc,
Kate::TextFolding folding,
KTextEditor::ViewPrivate *  view = nullptr 


docdocument to render
foldingfolding information
viewview which is output (0 for example for rendering to print)

Definition at line 39 of file katerenderer.cpp.

Member Function Documentation

◆ attribute()

KTextEditor::Attribute::Ptr KateRenderer::attribute ( uint  pos) const

This takes an in index, and returns all the attributes for it.

For example, if you have a ktextline, and want the KTextEditor::Attribute for a given position, do:


Definition at line 70 of file katerenderer.cpp.

◆ caretStyle()

KateRenderer::caretStyles KateRenderer::caretStyle ( ) const

The style of the caret (text cursor) to be painted.


Definition at line 130 of file katerenderer.h.

◆ config()

KateRendererConfig* KateRenderer::config ( ) const


Definition at line 469 of file katerenderer.h.

◆ currentFont()

const QFont& KateRenderer::currentFont ( ) const

Access currently used font.

current font

Definition at line 244 of file katerenderer.h.

◆ currentFontMetrics()

const QFontMetricsF& KateRenderer::currentFontMetrics ( ) const

Access currently used font metrics.

current font metrics

Definition at line 253 of file katerenderer.h.

◆ cursorToX() [1/2]

int KateRenderer::cursorToX ( const KateTextLayout range,
const KTextEditor::Cursor  pos,
bool  returnPastLine = false 
) const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 1291 of file katerenderer.cpp.

◆ cursorToX() [2/2]

int KateRenderer::cursorToX ( const KateTextLayout range,
int  col,
bool  returnPastLine = false 
) const

Returns the x position of cursor col on the line range.

Definition at line 1286 of file katerenderer.cpp.

◆ decorationsForLine()

QVector< QTextLayout::FormatRange > KateRenderer::decorationsForLine ( const Kate::TextLine textLine,
int  line,
bool  selectionsOnly = false 
) const

The ultimate decoration creation function.

selectionsOnlyreturn decorations for selections and/or dynamic highlighting.

Definition at line 451 of file katerenderer.cpp.

◆ doc()

KTextEditor::DocumentPrivate* KateRenderer::doc ( ) const

Returns the document to which this renderer is bound.

Definition at line 83 of file katerenderer.h.

◆ drawCaret()

bool KateRenderer::drawCaret ( ) const

Determine whether the caret (text cursor) will be drawn.

should it be drawn?

Definition at line 115 of file katerenderer.h.

◆ folding()

Kate::TextFolding& KateRenderer::folding ( ) const

Returns the folding info to which this renderer is bound.

folding info

Definition at line 92 of file katerenderer.h.

◆ increaseFontSizes()

void KateRenderer::increaseFontSizes ( qreal  step = 1.0) const

Change to a different font (soon to be font set?)

Definition at line 143 of file katerenderer.cpp.

◆ isLineRightToLeft()

bool KateRenderer::isLineRightToLeft ( KateLineLayoutPtr  lineLayout)

This is a smaller QString::isRightToLeft().

It's also marked as internal to kate instead of internal to Qt, so we can modify. This method searches for the first strong character in the paragraph and then returns its direction. In case of a line without any strong characters, the direction is forced to be LTR.

Back in KDE 4.1 this method counted chars, which lead to unwanted side effects. (see https://bugs.kde.org/show_bug.cgi?id=178594). As this function is internal the way it work will probably change between releases. Be warned!

Definition at line 1248 of file katerenderer.cpp.

◆ isPrinterFriendly()

bool KateRenderer::isPrinterFriendly ( ) const
whether the renderer is configured to paint in a printer-friendly fashion.

Definition at line 165 of file katerenderer.cpp.

◆ layoutLine()

void KateRenderer::layoutLine ( KateLineLayoutPtr  line,
int  maxwidth = -1,
bool  cacheLayout = false 
) const

Text width & height calculation functions...

Definition at line 1109 of file katerenderer.cpp.

◆ paintSelection()

void KateRenderer::paintSelection ( QPaintDevice d,
int  startLine,
int  xStart,
int  endLine,
int  xEnd,
qreal  scale = 1.0 

Paints a range of text into d.

This function is mainly used to paint the pixmap when dragging text.

Please note that this will not paint the selection background but only the text.

dthe paint device
startLinestart line
xStartstart pos on startLine in pixels
endLineend line
xEndend pos on endLine in pixels
scalethe amount of scaling to apply. Default is 1.0, negative values are not supported

Definition at line 1332 of file katerenderer.cpp.

◆ paintTextLine()

void KateRenderer::paintTextLine ( QPainter paint,
KateLineLayoutPtr  range,
int  xStart,
int  xEnd,
const KTextEditor::Cursor cursor = nullptr,
PaintTextLineFlags  flags = PaintTextLineFlags() 

This is the ultimate function to perform painting of a text line.

The text line is painted from the upper limit of (0,0). To move that, apply a transform to your painter.

paintpainter to use
rangelayout to use in painting this line
xStartstarting width in pixels.
xEndending width in pixels.
cursorposition of the caret, if placed on the current line.
flagsflags for customizing the drawing of the line

Definition at line 667 of file katerenderer.cpp.

◆ paintTextLineBackground()

void KateRenderer::paintTextLineBackground ( QPainter paint,
KateLineLayoutPtr  layout,
int  currentViewLine,
int  xStart,
int  xEnd 

Paint the background of a line.

Split off from the main paintTextLine method to make it smaller. As it's being called only once per line it shouldn't noticably affect performance and it helps readability a LOT.

paintpainter to use
layoutlayout to use in painting this line
currentViewLineif one of the view lines is the current line, set this to the index; otherwise -1.
xStartstarting width in pixels.
xEndending width in pixels.

Definition at line 179 of file katerenderer.cpp.

◆ setCaretOverrideColor()

void KateRenderer::setCaretOverrideColor ( const QColor color)

Set a brush with which to override drawing of the caret.

Set to QColor() to clear.

Definition at line 1327 of file katerenderer.cpp.

◆ setCaretStyle()

void KateRenderer::setCaretStyle ( KateRenderer::caretStyles  style)

Set the style of caret to be painted.

stylestyle to set

Definition at line 93 of file katerenderer.cpp.

◆ setDrawCaret()

void KateRenderer::setDrawCaret ( bool  drawCaret)

Set whether the caret (text cursor) will be drawn.

drawCaretshould caret be drawn?

Definition at line 88 of file katerenderer.cpp.

◆ setIndentWidth()

void KateRenderer::setIndentWidth ( int  indentWidth)

Sets the width of the tab.

Helps performance.

indentWidthnew indent width

Definition at line 133 of file katerenderer.cpp.

◆ setPrinterFriendly()

void KateRenderer::setPrinterFriendly ( bool  printerFriendly)

Configure this renderer to paint in a printer-friendly fashion.

Sets the other options appropriately if true.

Definition at line 170 of file katerenderer.cpp.

◆ setShowIndentLines()

void KateRenderer::setShowIndentLines ( bool  showLines)

Set whether a guide should be painted to help identifying indent lines.

showLinesshow the indent lines?

Definition at line 123 of file katerenderer.cpp.

◆ setShowNonPrintableSpaces()

void KateRenderer::setShowNonPrintableSpaces ( const bool  showNonPrintableSpaces)

Set whether box should be drawn around non-printable spaces.

Definition at line 108 of file katerenderer.cpp.

◆ setShowSelections()

void KateRenderer::setShowSelections ( bool  showSelections)

Set whether the view's selections should be shown.

The default is true.

showSelectionsshow the selections?

Definition at line 138 of file katerenderer.cpp.

◆ setShowSpaces()

void KateRenderer::setShowSpaces ( KateDocumentConfig::WhitespaceRendering  showSpaces)

Set which spaces should be rendered.

Definition at line 103 of file katerenderer.cpp.

◆ setShowTabs()

void KateRenderer::setShowTabs ( bool  showTabs)

Set whether a mark should be painted to help identifying tabs.

showTabsshow the tabs?

Definition at line 98 of file katerenderer.cpp.

◆ setTabWidth()

void KateRenderer::setTabWidth ( int  tabWidth)

Sets the width of the tab.

Helps performance.

tabWidthnew tab width

Definition at line 113 of file katerenderer.cpp.

◆ showIndentLines()

bool KateRenderer::showIndentLines ( ) const
whether indent lines should be shown
indent lines should be shown

Definition at line 118 of file katerenderer.cpp.

◆ showNonPrintableSpaces()

bool KateRenderer::showNonPrintableSpaces ( ) const
whether non-printable spaces should be shown

Definition at line 183 of file katerenderer.h.

◆ showSelections()

bool KateRenderer::showSelections ( ) const

Show the view's selection?

show sels?

Definition at line 221 of file katerenderer.h.

◆ showSpaces()

KateDocumentConfig::WhitespaceRendering KateRenderer::showSpaces ( ) const
whether which spaces should be rendered

Definition at line 170 of file katerenderer.h.

◆ showTabs()

bool KateRenderer::showTabs ( ) const
whether tabs should be shown (ie. a small mark drawn to identify a tab)
tabs should be shown

Definition at line 151 of file katerenderer.h.

◆ updateAttributes()

void KateRenderer::updateAttributes ( )

update the highlighting attributes (for example after an hl change or after hl config changed)

Definition at line 65 of file katerenderer.cpp.

◆ updateMarkerSize()

void KateRenderer::updateMarkerSize ( )

Update marker size shown.

Definition at line 1096 of file katerenderer.cpp.

◆ view()

KTextEditor::ViewPrivate* KateRenderer::view ( ) const

Returns the view to which this renderer is bound.

Definition at line 100 of file katerenderer.h.

◆ xToCursor()

KTextEditor::Cursor KateRenderer::xToCursor ( const KateTextLayout range,
int  x,
bool  returnPastLine = false 
) const

Returns the real cursor which is occupied by the specified x value, or that closest to it.

If returnPastLine is true, the column will be extrapolated out with the assumption that the extra characters are spaces.

Definition at line 1310 of file katerenderer.cpp.

The documentation for this class was generated from the following files:
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Sun Jun 26 2022 03:49:55 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.