void pairDraw(GC gc, StyledRegion sr, int start, int end) { if (start > text.getCharCount() || end > text.getCharCount()) return; if (gc != null) { Point left = text.getLocationAtOffset(start); Point right = text.getLocationAtOffset(end); if (sr != null) { if (highlightStyle == HLS_XOR) { int resultColor = sr.fore ^ cm.getColor(text.getBackground()); if (text.getLineAtOffset(text.getCaretOffset()) == text.getLineAtOffset(start) && horzCross && horzCrossColor != null && ((StyledRegion) horzCrossColor).bback) resultColor = sr.fore ^ ((StyledRegion) horzCrossColor).back; Color color = cm.getColor(sr.bfore, resultColor); gc.setBackground(color); gc.setXORMode(true); gc.fillRectangle(left.x, left.y, right.x - left.x, gc.getFontMetrics().getHeight()); } else if (highlightStyle == HLS_OUTLINE) { Color color = cm.getColor(sr.bfore, sr.fore); gc.setForeground(color); gc.drawRectangle( left.x, left.y, right.x - left.x - 1, gc.getFontMetrics().getHeight() - 1); } else if (highlightStyle == HLS_OUTLINE2) { Color color = cm.getColor(sr.bfore, sr.fore); gc.setForeground(color); gc.setLineWidth(2); gc.drawRectangle( left.x + 1, left.y + 1, right.x - left.x - 2, gc.getFontMetrics().getHeight() - 2); } } } else { text.redrawRange(start, end - start, true); } }
/** * Changes style/coloring scheme into the specified. * * @param name Name of color scheme (HRD name). * @param useBackground If true, native HRD background properties would be assigned to colored * StyledText. */ public void setRegionMapper(String name, boolean useBackground) { baseEditor.setRegionMapper("rgb", name); StyledRegion sr = (StyledRegion) baseEditor.getBackground(); text.setForeground(null); text.setBackground(null); if (useBackground) { text.setForeground(cm.getColor(sr.bfore, sr.fore)); text.setBackground(cm.getColor(sr.bback, sr.back)); } ; /* if ((sr.style & StyledRegion.BOLD) != 0){ Font cf = text.getFont(); FontData fdata[] = cf.getFontData(); fdata[0].setStyle(SWT.BOLD); text.setFont(new Font(text.getDisplay(), fdata)); System.out.println("font!"); }; */ setCross(vertCross, horzCross); };