org.eclipse.swt.custom
Class DisplayRenderer

java.lang.Object
  |
  +--org.eclipse.swt.custom.StyledTextRenderer
        |
        +--org.eclipse.swt.custom.DisplayRenderer

class DisplayRenderer
extends StyledTextRenderer


Field Summary
protected  Font boldFont
           
private  StyledText parent
           
protected  Font regularFont
           
 
Constructor Summary
(package private) DisplayRenderer(Device device, Font regularFont, boolean isBidi, int leftMargin, StyledText parent, int tabLength)
          Creates an instance of DisplayRenderer.
 
Method Summary
(package private)  void calculateLineHeight()
          Calculates the line height and space width.
(package private)  void dispose()
          Disposes the resource created by the receiver.
protected  void disposeGC(GC gc)
          Dispose the specified GC.
(package private)  void drawLine(String line, int lineIndex, int paintY, GC gc, Color widgetBackground, Color widgetForeground, boolean clearBackground)
          Draws a line of text at the specified location.
protected  void drawLineSelectionBackground(String line, int lineOffset, StyleRange[] styles, int paintY, GC gc, StyledTextBidi bidi)
          Draws the background of the line selection.
(package private)  StyleRange[] filterLineStyles(StyleRange[] styles)
          Filter the given style ranges based on the font style and return the unchanged styles only if there is at least one non-regular (e.g., bold) font.
protected  int[] getBidiSegments(int lineOffset, String lineText)
          Returns the text segments that should be treated as if they had a different direction than the surrounding text.
protected  Rectangle getClientArea()
          Returns the visible client area that can be used for rendering.
protected  StyledTextContent getContent()
          Returns the StyledTextContent to use for line offset calculations.
protected  int getCurrentFontStyle()
          Return the font style that is currently set on the active gc.
(package private)  Device getDevice()
          Returns the Device that is being rendered on.
protected  GC getGC()
          Returns a new GC to use for rendering and measuring.
protected  int getHorizontalPixel()
          Returns the horizontal scroll position.
(package private)  int getLeftMargin()
          Method getLeftMargin.
protected  StyledTextEvent getLineBackgroundData(int lineOffset, String line)
          Returns the line background data for the given line or null if there is none.
(package private)  int getLineEndSpaceWidth()
          Returns the width in pixels of the space used to represent line delimiters.
(package private)  int getLineHeight()
          Returns the height in pixels of a line.
protected  StyledTextEvent getLineStyleData(int lineOffset, String line)
          Returns the line style data for the given line or null if there is none.
(package private)  StyledTextEvent getLineStyleData(StyledTextEvent event, int lineOffset, String line)
          Returns the line style data for the specified line.
protected  Point getSelection()
          Returns the widget selection.
(package private)  StyledTextBidi getStyledTextBidi(String lineText, int lineOffset, GC gc, StyleRange[] styles)
          Returns a StyledTextBidi object for the specified line.
protected  int getStyledTextWidth(String text, int textStartOffset, StyleRange[] lineStyles, int paintX, GC gc)
          Returns the width of the specified text segment.
(package private)  int getTextPosition(String text, int lineOffset, int length, StyleRange[] lineStyles, GC gc)
          Returns the x position of the character at the specified offset relative to the first character in the line.
(package private)  int getTextWidth(String text, int lineOffset, int startOffset, int length, StyleRange[] lineStyles, int startXOffset, GC gc)
          Returns the width of the specified text range.
(package private)  StyleRange[] getVisualLineStyleData(StyleRange[] logicalStyles, int lineOffset, int lineLength)
          Returns styles for the specified visual (wrapped) line.
protected  boolean getWordWrap()
          Returns the word wrap state.
(package private)  boolean isBidi()
          Returns whether the widget is running on a bidi platform.
protected  boolean isFullLineSelection()
          Returns whether the widget was created with the SWT.FULL_SELECTION style.
protected  StyleRange[] mergeSelectionLineStyles(StyleRange[] styles)
          Merges the selection into the styles that are passed in.
protected  void setCurrentFontStyle(int style)
          Set the font style that is set for the active gc.
(package private)  void setLineFont(GC gc, int style)
          Sets the font of the specified GC if it is not already set.
private  StyleRange setSelectionStyleEnd(StyleRange selectionStyle, StyleRange style)
          Ensures that the selection style ends at the selection end.
(package private)  void setTabLength(int tabLength)
          Calculates the width in pixel of a tab character
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

parent

private StyledText parent

regularFont

protected Font regularFont

boldFont

protected Font boldFont
Constructor Detail

DisplayRenderer

DisplayRenderer(Device device,
                Font regularFont,
                boolean isBidi,
                int leftMargin,
                StyledText parent,
                int tabLength)
Creates an instance of DisplayRenderer.

Parameters:
device - Device to render on
regularFont - Font to use for regular (non-bold) text
isBidi - true=bidi platform, false=no bidi platform
leftMargin - margin to the left of the text
parent - StyledText widget to render
tabLength - length in characters of a tab character
Method Detail

disposeGC

protected void disposeGC(GC gc)
Dispose the specified GC.

Specified by:
disposeGC in class StyledTextRenderer
Parameters:
gc - GC to dispose.

drawLineSelectionBackground

protected void drawLineSelectionBackground(String line,
                                           int lineOffset,
                                           StyleRange[] styles,
                                           int paintY,
                                           GC gc,
                                           StyledTextBidi bidi)
Draws the background of the line selection.

Specified by:
drawLineSelectionBackground in class StyledTextRenderer
Parameters:
line - the line to draw
lineOffset - offset of the first character in the line. Relative to the start of the document.
styles - line styles
paintY - y location to draw at
gc - GC to draw on
bidi - the bidi object to use for measuring and rendering text in bidi locales. null when not in bidi mode.

getBidiSegments

protected int[] getBidiSegments(int lineOffset,
                                String lineText)
Returns the text segments that should be treated as if they had a different direction than the surrounding text.

Specified by:
getBidiSegments in class StyledTextRenderer
Parameters:
lineOffset - offset of the first character in the line. 0 based from the beginning of the document.
Returns:
text segments that should be treated as if they had a different direction than the surrounding text. Only the start index of a segment is specified, relative to the start of the line. Always starts with 0 and ends with the line length.

getClientArea

protected Rectangle getClientArea()
Returns the visible client area that can be used for rendering.

Specified by:
getClientArea in class StyledTextRenderer
Returns:
the visible client area that can be used for rendering.

getContent

protected StyledTextContent getContent()
Returns the StyledTextContent to use for line offset calculations.

Specified by:
getContent in class StyledTextRenderer
Returns:
the StyledTextContent to use for line offset calculations.

getGC

protected GC getGC()
Returns a new GC to use for rendering and measuring. When the GC is no longer used it needs to be disposed by calling disposeGC.

Specified by:
getGC in class StyledTextRenderer
Returns:
the GC to use for rendering and measuring.
See Also:
disposeGC

getHorizontalPixel

protected int getHorizontalPixel()
Returns the horizontal scroll position.

Specified by:
getHorizontalPixel in class StyledTextRenderer
Returns:
the horizontal scroll position.

getLineBackgroundData

protected StyledTextEvent getLineBackgroundData(int lineOffset,
                                                String line)
Description copied from class: StyledTextRenderer
Returns the line background data for the given line or null if there is none.

Specified by:
getLineBackgroundData in class StyledTextRenderer
Parameters:
lineOffset - offset of the line start relative to the start of the content.
line - line to get line background data for
Returns:
line background data for the given line. may return null
See Also:
StyledTextRenderer.getLineBackgroundData(int, java.lang.String)

getLineStyleData

protected StyledTextEvent getLineStyleData(int lineOffset,
                                           String line)
Description copied from class: StyledTextRenderer
Returns the line style data for the given line or null if there is none. If there is a LineStyleListener but it does not set any styles, the StyledTextEvent.styles field will be initialized to an empty array.

Specified by:
getLineStyleData in class StyledTextRenderer
Parameters:
lineOffset - offset of the line start relative to the start of the content.
line - line to get line styles for
Returns:
line style data for the given line. Styles may start before line start and end after line end
See Also:
StyledTextRenderer.getLineStyleData(org.eclipse.swt.custom.StyledTextEvent, int, java.lang.String)

getSelection

protected Point getSelection()
Description copied from class: StyledTextRenderer
Returns the widget selection. Implemented by subclasses for optional selection rendering.

Specified by:
getSelection in class StyledTextRenderer
Returns:
the widget selection.
See Also:
StyledTextRenderer.getSelection()

getStyledTextWidth

protected int getStyledTextWidth(String text,
                                 int textStartOffset,
                                 StyleRange[] lineStyles,
                                 int paintX,
                                 GC gc)
Returns the width of the specified text segment. Expands tabs to tab stops using the widget tab width.

Specified by:
getStyledTextWidth in class StyledTextRenderer
Parameters:
text - text to measure
textStartOffset - offset of the first character in text relative to the first character in the document
lineStyles - styles of the line
paintX - x location to start drawing at
gc - GC to measure with
Returns:
the width of the specified text segment.

mergeSelectionLineStyles

protected StyleRange[] mergeSelectionLineStyles(StyleRange[] styles)
Description copied from class: StyledTextRenderer
Merges the selection into the styles that are passed in. The font style of existing style ranges is preserved in the selection. Implemented by subclasses for optional selection rendering.

Specified by:
mergeSelectionLineStyles in class StyledTextRenderer
Parameters:
styles - the existing styles that the selection should be applied to.
Returns:
the selection style range merged with the existing styles
See Also:
StyledTextRenderer#getSelectionLineStyles

getWordWrap

protected boolean getWordWrap()
Description copied from class: StyledTextRenderer
Returns the word wrap state.

Specified by:
getWordWrap in class StyledTextRenderer
Returns:
true=word wrap is on. false=no word wrap, lines may extend beyond the right side of the client area.
See Also:
StyledTextRenderer.getWordWrap()

isFullLineSelection

protected boolean isFullLineSelection()
Description copied from class: StyledTextRenderer
Returns whether the widget was created with the SWT.FULL_SELECTION style. Implemented by subclasses for optional selection rendering.

Specified by:
isFullLineSelection in class StyledTextRenderer
Returns:
true=the widget is running in full line selection mode, false=otherwise
See Also:
StyledTextRenderer.isFullLineSelection()

setSelectionStyleEnd

private StyleRange setSelectionStyleEnd(StyleRange selectionStyle,
                                        StyleRange style)
Ensures that the selection style ends at the selection end. selectionStyle is assumed to be created based on the style range of style. If selectionStyle does extend beyond the selection range a new style is returned to preserve the style passed in with style.

Parameters:
selectionStyle - the selection style based on the style range in style
style - the existing style that is to be merged with the selection
Returns:
a new style that preserves the style passed in with style if the selection does not fully extend over the existing style range. null otherwise.

calculateLineHeight

void calculateLineHeight()
Calculates the line height and space width.


dispose

void dispose()
Disposes the resource created by the receiver.


drawLine

void drawLine(String line,
              int lineIndex,
              int paintY,
              GC gc,
              Color widgetBackground,
              Color widgetForeground,
              boolean clearBackground)
Draws a line of text at the specified location.

Parameters:
line - the line to draw
lineIndex - index of the line to draw
paintY - y location to draw at
gc - GC to draw on
widgetBackground - the widget background color. Used as the default rendering color.
widgetForeground - the widget foreground color. Used as the default rendering color.
clearBackground - true if the line background should be drawn explicitly.

filterLineStyles

StyleRange[] filterLineStyles(StyleRange[] styles)
Filter the given style ranges based on the font style and return the unchanged styles only if there is at least one non-regular (e.g., bold) font.

Parameters:
styles - styles that may contain font styles.
Returns:
null if the styles contain only regular font styles, the unchanged styles otherwise.

getCurrentFontStyle

protected int getCurrentFontStyle()
Return the font style that is currently set on the active gc. Font style cached for performance reasons.

Returns:
int SWT.BOLD, SWT.NORMAL

getDevice

Device getDevice()
Returns the Device that is being rendered on.

Returns:
the Device that is being rendered on.

getLeftMargin

int getLeftMargin()
Method getLeftMargin.

Returns:
int

getLineEndSpaceWidth

int getLineEndSpaceWidth()
Returns the width in pixels of the space used to represent line delimiters.

Returns:
the width in pixels of the space used to represent line delimiters.

getLineHeight

int getLineHeight()
Returns the height in pixels of a line.

Returns:
the height in pixels of a line.

getLineStyleData

StyledTextEvent getLineStyleData(StyledTextEvent event,
                                 int lineOffset,
                                 String line)
Returns the line style data for the specified line. The lineOffset and line may specify a segment of a logical line stored in the StyledTextContent of the widget. The returned styles are guaranteed to be at least partially on the segment.

Parameters:
event - the styles for the logical line
lineOffset - offset of the line start relative to the start of the content.
line - line to get line styles for
Returns:
line style data for the given line segment. Styles may start before line start and end after line end but are guaranteed to be at least partially on the line.

getStyledTextBidi

StyledTextBidi getStyledTextBidi(String lineText,
                                 int lineOffset,
                                 GC gc,
                                 StyleRange[] styles)
Returns a StyledTextBidi object for the specified line.

Parameters:
lineText - the line that the StyledTextBidi object should work on.
lineOffset - offset of the beginning of the line, relative to the beginning of the document
gc - GC to use when creating a new StyledTextBidi object.
styles - StyleRanges to use when creating a new StyledTextBidi object.
Returns:
a StyledTextBidi object for the specified line.

getTextPosition

int getTextPosition(String text,
                    int lineOffset,
                    int length,
                    StyleRange[] lineStyles,
                    GC gc)
Returns the x position of the character at the specified offset relative to the first character in the line. Expands tabs to tab stops using the widget tab width.

Parameters:
text - text to be measured.
lineOffset - offset of the first character in the line.
length - number of characters to measure. Tabs are counted as one character in this parameter.
gc - GC to use for measuring text
Returns:
x position of the character at the specified offset with tabs expanded to tab stops. 0 if the length is outside the specified text.

getTextWidth

int getTextWidth(String text,
                 int lineOffset,
                 int startOffset,
                 int length,
                 StyleRange[] lineStyles,
                 int startXOffset,
                 GC gc)
Returns the width of the specified text range. Expand tabs to tab stops using the widget tab width.

Parameters:
text - text to be measured.
lineOffset - offset of the first character in the line.
startOffset - offset of the character to start measuring and expand tabs.
length - number of characters to measure. Tabs are counted as one character in this parameter.
startXOffset - x position of "startOffset" in "text". Used for calculating tab stops
gc - GC to use for measuring text
Returns:
width of the text range with tabs expanded to tab stops or 0 if the startOffset or length is outside the specified text.

getVisualLineStyleData

StyleRange[] getVisualLineStyleData(StyleRange[] logicalStyles,
                                    int lineOffset,
                                    int lineLength)
Returns styles for the specified visual (wrapped) line.

Parameters:
logicalStyles - the styles for a logical (unwrapped) line
lineOffset - offset of the visual line
lineLength - length of the visual line
Returns:
styles in the logicalStyles array that are at least partially on the specified visual line.

isBidi

boolean isBidi()
Returns whether the widget is running on a bidi platform.

Returns:
true=the widget is running on a bidi platform, false=otherwise.

setCurrentFontStyle

protected void setCurrentFontStyle(int style)
Set the font style that is set for the active gc. Font style cached for performance reasons.

Parameters:
style - SWT.BOLD, SWT.NORMAL

setLineFont

void setLineFont(GC gc,
                 int style)
Sets the font of the specified GC if it is not already set.

Parameters:
gc - GC to set the font in
style - desired style of the font in gc. Can be one of SWT.NORMAL, SWT. BOLD

setTabLength

void setTabLength(int tabLength)
Calculates the width in pixel of a tab character

Parameters:
tabLength - number of space characters represented by a tab character.


comments?