void performPaint(GC gc,int startLine,int startY, int renderHeight)	{
void performPaint(GC gc,int startLine,int startY, int renderHeight, boolean drawDirect)	{
void performPaint(GC gc,int startLine,int startY, int renderHeight)	{	int lineCount = content.getLineCount();	int paintY = topMargin;		Rectangle clientArea = getClientArea();	Color background = getBackground();	Color foreground = getForeground();	Image lineBuffer;	GC lineGC;	Font font;	FontData fontData;		// Check if there is work to do. We never want to try and create 	// an Image with 0 width or 0 height.	if (clientArea.width == 0 || renderHeight == 0) {				return;	}	if (isSingleLine()) {		lineCount = 1;		if (startLine > 1) {			startLine = 1;		}	}	font = gc.getFont();	fontData = font.getFontData()[0];	// Do double buffering on direct draw operations only	if (drawDirect || SWT.getPlatform().equals("win32")) {		lineBuffer = new Image(getDisplay(), clientArea.width, renderHeight);		lineGC = new GC(lineBuffer);			lineGC.setFont(font);		lineGC.setForeground(foreground);		lineGC.setBackground(background);		for (int i = startLine; paintY < renderHeight && i < lineCount; i++, paintY += lineHeight) {			String line = content.getLine(i);			renderer.drawLine(line, i, paintY, lineGC, background, foreground, fontData, true);		}		if (paintY < renderHeight) {			lineGC.setBackground(background);			lineGC.setForeground(background);			lineGC.fillRectangle(0, paintY, clientArea.width, renderHeight - paintY);		}		gc.drawImage(lineBuffer, 0, startY);		lineGC.dispose();		lineBuffer.dispose();	} else {		for (int i = startLine; paintY < renderHeight && i < lineCount; i++, paintY += lineHeight) {			String line = content.getLine(i);			renderer.drawLine(line, i, paintY + startY, gc, background, foreground, fontData, true);		}		if (paintY < renderHeight) {			gc.setBackground(background);			gc.setForeground(background);			gc.fillRectangle(0, paintY + startY, clientArea.width, renderHeight - paintY);		}	}		// clear the margin background	gc.setBackground(background);	gc.fillRectangle(0, 0, clientArea.width, topMargin);	gc.fillRectangle(0, 0, leftMargin, renderHeight);		gc.fillRectangle(		0, clientArea.height - bottomMargin, 		clientArea.width, bottomMargin);	gc.fillRectangle(		clientArea.width - rightMargin, 0, 		rightMargin, renderHeight);}