diff --git a/terminal/bundles/org.eclipse.terminal.control/src/org/eclipse/terminal/internal/emulator/VT100TerminalControl.java b/terminal/bundles/org.eclipse.terminal.control/src/org/eclipse/terminal/internal/emulator/VT100TerminalControl.java index fba533c2c42..ded1e81d4c7 100644 --- a/terminal/bundles/org.eclipse.terminal.control/src/org/eclipse/terminal/internal/emulator/VT100TerminalControl.java +++ b/terminal/bundles/org.eclipse.terminal.control/src/org/eclipse/terminal/internal/emulator/VT100TerminalControl.java @@ -84,6 +84,7 @@ import org.eclipse.swt.events.KeyListener; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; +import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.layout.GridData; @@ -678,7 +679,7 @@ private void updatePreferences(PropertyChangeEvent unused) { } private void onTerminalColorsChanged() { - Map map = new EnumMap<>(TerminalColor.class); + Map map = new EnumMap<>(TerminalColor.class); TerminalColor[] values = TerminalColor.values(); for (TerminalColor terminalColor : values) { RGB rgb = null; @@ -694,7 +695,7 @@ private void onTerminalColorsChanged() { if (rgb == null) { rgb = TerminalColorPresets.INSTANCE.getDefaultPreset().getRGB(terminalColor); } - map.put(terminalColor, rgb); + map.put(terminalColor, new Color(rgb)); } fCtlText.updateColors(map); } diff --git a/terminal/bundles/org.eclipse.terminal.control/src/org/eclipse/terminal/internal/textcanvas/ILinelRenderer.java b/terminal/bundles/org.eclipse.terminal.control/src/org/eclipse/terminal/internal/textcanvas/ILinelRenderer.java index 05e65030720..44bc0b3da7f 100644 --- a/terminal/bundles/org.eclipse.terminal.control/src/org/eclipse/terminal/internal/textcanvas/ILinelRenderer.java +++ b/terminal/bundles/org.eclipse.terminal.control/src/org/eclipse/terminal/internal/textcanvas/ILinelRenderer.java @@ -18,7 +18,6 @@ import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.graphics.RGB; import org.eclipse.terminal.model.TerminalColor; /** @@ -38,7 +37,7 @@ public interface ILinelRenderer { */ void updateFont(String fontName); - void updateColors(Map map); + void updateColors(Map map); void setInvertedColors(boolean invert); diff --git a/terminal/bundles/org.eclipse.terminal.control/src/org/eclipse/terminal/internal/textcanvas/StyleMap.java b/terminal/bundles/org.eclipse.terminal.control/src/org/eclipse/terminal/internal/textcanvas/StyleMap.java index 6ab6946cac8..5a8382aa6f1 100644 --- a/terminal/bundles/org.eclipse.terminal.control/src/org/eclipse/terminal/internal/textcanvas/StyleMap.java +++ b/terminal/bundles/org.eclipse.terminal.control/src/org/eclipse/terminal/internal/textcanvas/StyleMap.java @@ -23,6 +23,7 @@ import java.util.Map; import org.eclipse.jface.resource.JFaceResources; +import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Point; @@ -46,7 +47,7 @@ public class StyleMap { private boolean fInvertColors; private boolean fProportional; private final int[] fOffsets = new int[256]; - private final Map fColorMap = new EnumMap<>(TerminalColor.class); + private final Map fColorMap = new EnumMap<>(TerminalColor.class); public StyleMap() { fDefaultStyle = TerminalStyle.getDefaultStyle(); @@ -55,11 +56,11 @@ public StyleMap() { } private void initColors() { - Map map = new EnumMap<>(TerminalColor.class); + Map map = new EnumMap<>(TerminalColor.class); TerminalColor[] values = TerminalColor.values(); for (TerminalColor terminalColor : values) { - RGB rgb = TerminalColorPresets.INSTANCE.getDefaultPreset().getRGB(terminalColor); - map.put(terminalColor, rgb); + Color color = new Color(TerminalColorPresets.INSTANCE.getDefaultPreset().getRGB(terminalColor)); + map.put(terminalColor, color); } updateColors(map); } @@ -68,11 +69,11 @@ private void initFont() { updateFont(ITerminalConstants.FONT_DEFINITION); } - private RGB getRGB(TerminalColor color) { + private Color getColor(TerminalColor color) { return fColorMap.get(color); } - public RGB getForegrondRGB(TerminalStyle style) { + public Color getForegroundColor(TerminalStyle style) { style = defaultIfNull(style); RGB foregroundRGB; if (style.isReverse()) { @@ -81,7 +82,7 @@ public RGB getForegrondRGB(TerminalStyle style) { foregroundRGB = style.getForegroundRGB(); } if (foregroundRGB != null) { - return foregroundRGB; + return new Color(foregroundRGB); } TerminalColor color; @@ -96,10 +97,10 @@ public RGB getForegrondRGB(TerminalStyle style) { } color = color.convertColor(fInvertColors, style.isBold()); - return getRGB(color); + return getColor(color); } - public RGB getBackgroundRGB(TerminalStyle style) { + public Color getBackgroundColor(TerminalStyle style) { style = defaultIfNull(style); RGB backgroundRGB; if (style.isReverse()) { @@ -108,7 +109,7 @@ public RGB getBackgroundRGB(TerminalStyle style) { backgroundRGB = style.getBackgroundRGB(); } if (backgroundRGB != null) { - return backgroundRGB; + return new Color(backgroundRGB); } TerminalColor color; @@ -123,7 +124,7 @@ public RGB getBackgroundRGB(TerminalStyle style) { } color = color.convertColor(fInvertColors, style.isBold()); - return getRGB(color); + return getColor(color); } private TerminalStyle defaultIfNull(TerminalStyle style) { @@ -267,7 +268,7 @@ public int getCharOffset(char c) { return fOffsets[c]; } - public void updateColors(Map colorMap) { + public void updateColors(Map colorMap) { fColorMap.putAll(colorMap); } } diff --git a/terminal/bundles/org.eclipse.terminal.control/src/org/eclipse/terminal/internal/textcanvas/TextCanvas.java b/terminal/bundles/org.eclipse.terminal.control/src/org/eclipse/terminal/internal/textcanvas/TextCanvas.java index 26ab7916d09..82af27fd580 100644 --- a/terminal/bundles/org.eclipse.terminal.control/src/org/eclipse/terminal/internal/textcanvas/TextCanvas.java +++ b/terminal/bundles/org.eclipse.terminal.control/src/org/eclipse/terminal/internal/textcanvas/TextCanvas.java @@ -40,7 +40,6 @@ import org.eclipse.swt.graphics.Device; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Composite; import org.eclipse.terminal.control.ITerminalMouseListener; @@ -650,7 +649,7 @@ public void updateFont(String fontName) { calculateGrid(); } - public void updateColors(Map map) { + public void updateColors(Map map) { fCellRenderer.updateColors(map); redraw(); } diff --git a/terminal/bundles/org.eclipse.terminal.control/src/org/eclipse/terminal/internal/textcanvas/TextLineRenderer.java b/terminal/bundles/org.eclipse.terminal.control/src/org/eclipse/terminal/internal/textcanvas/TextLineRenderer.java index a5075c2f672..beba4c5dbf5 100644 --- a/terminal/bundles/org.eclipse.terminal.control/src/org/eclipse/terminal/internal/textcanvas/TextLineRenderer.java +++ b/terminal/bundles/org.eclipse.terminal.control/src/org/eclipse/terminal/internal/textcanvas/TextLineRenderer.java @@ -23,7 +23,6 @@ import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.graphics.RGB; import org.eclipse.terminal.connector.Logger; import org.eclipse.terminal.internal.control.impl.TerminalPlugin; import org.eclipse.terminal.model.ITerminalTextDataReadOnly; @@ -86,8 +85,8 @@ public void drawLine(ITextCanvasModel model, GC gc, int line, int x, int y, int int colStart = line == hsStart.y ? hsStart.x : 0; int colEnd = line == hsEnd.y ? hsEnd.x : getTerminalText().getWidth(); if (colStart < colEnd) { - RGB defaultFg = fStyleMap.getForegrondRGB(null); - doubleBufferGC.setForeground(new Color(doubleBufferGC.getDevice(), defaultFg)); + Color defaultFg = fStyleMap.getForegroundColor(null); + doubleBufferGC.setForeground(defaultFg); drawUnderline(doubleBufferGC, colStart, colEnd); } } @@ -133,8 +132,7 @@ private void fillBackground(GC gc, int x, int y, int width, int height) { @Override public Color getDefaultBackgroundColor() { - RGB backgroundRGB = fStyleMap.getBackgroundRGB(null); - return new Color(backgroundRGB); + return fStyleMap.getBackgroundColor(null); } private void drawCursor(ITextCanvasModel model, GC gc, int row, int x, int y, int colFirst) { @@ -196,10 +194,10 @@ private void drawUnderline(GC gc, int colStart, int colEnd) { } private void setupGC(GC gc, TerminalStyle style) { - RGB foregrondColor = fStyleMap.getForegrondRGB(style); - gc.setForeground(new Color(gc.getDevice(), foregrondColor)); - RGB backgroundColor = fStyleMap.getBackgroundRGB(style); - gc.setBackground(new Color(gc.getDevice(), backgroundColor)); + Color foregroundColor = fStyleMap.getForegroundColor(style); + gc.setForeground(foregroundColor); + Color backgroundColor = fStyleMap.getBackgroundColor(style); + gc.setBackground(backgroundColor); Font f = fStyleMap.getFont(style); if (f != gc.getFont()) { @@ -217,7 +215,7 @@ public void updateFont(String fontName) { } @Override - public void updateColors(Map map) { + public void updateColors(Map map) { fStyleMap.updateColors(map); }