Ticket #2149: links_highlights_foreground.patch
File links_highlights_foreground.patch, 4.9 KB (added by tanya, 15 years ago) |
---|
-
modules/org.sophie2.base.model.text/src/main/java/org/sophie2/base/model/text/smart/layout/HotSegmentLayout.java
### Eclipse Workspace Patch 1.0 #P sophie
2 2 3 3 import java.awt.Color; 4 4 import java.awt.Graphics2D; 5 import java.awt.RenderingHints; 5 6 import java.awt.Shape; 6 7 import java.awt.font.LineBreakMeasurer; 7 8 import java.awt.font.TextHitInfo; 8 9 import java.awt.font.TextLayout; 10 import java.awt.geom.AffineTransform; 11 import java.awt.geom.Area; 9 12 import java.util.Comparator; 10 13 import java.util.Iterator; 11 14 … … 94 97 Graphics2D graphics = (Graphics2D) g2d.create(); 95 98 graphics.translate(x, y); 96 99 awtLayout.draw(graphics, 0f, 0f); 100 awtLayout.draw(graphics, 0f, 0f); 101 97 102 boolean caretHandled = false; 98 103 for (Iterator<HotHighlight> iter = highlights.getIterator(); iter.hasNext();) { 99 104 HotHighlight highlight = iter.next(); … … 131 136 // Retrieve highlight region for selection range. 132 137 Shape highlightShape = awtLayout.getLogicalHighlightShape( 133 138 interval.getBegin(), interval.getEnd()); 134 // Fill the highlight region with the highlight color. 135 ImmColor bgColor = (ImmColor)highlight.getStyle().getValue(CommonAttr.BACKGROUND_COLOR); 139 Shape highlightOutline = awtLayout.getOutline(new AffineTransform()); 140 141 Area areaOuline = new Area(highlightOutline); 142 Area areaBounding = new Area(highlightShape); 143 144 areaOuline.intersect(areaBounding); 145 areaBounding.subtract(areaOuline); 136 146 137 graphics.setColor(bgColor.toAwtColor()); 138 graphics.fill(highlightShape); 147 // Fill the highlight region with the background highlight color. 148 ImmColor bgColor = (ImmColor) highlight.getStyle() 149 .getValue(CommonAttr.BACKGROUND_COLOR); 150 151 // Fill the highlight outline with the foreground highlight color. 152 ImmColor fgColor = (ImmColor) highlight.getStyle() 153 .getValue(CommonAttr.FOREGROUND_COLOR); 154 155 int clearX = (int) highlightShape.getBounds().getX(); 156 int clearY = (int) highlightShape.getBounds().getY(); 157 int clearWidth = (int) highlightShape.getBounds().getWidth(); 158 int clearHeight = (int) highlightShape.getBounds().getHeight(); 159 160 graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 161 162 graphics.clearRect(clearX, clearY, clearWidth, clearHeight); 163 164 graphics.setColor(bgColor.toAwtColor()); 165 graphics.fill(areaBounding); 166 167 168 graphics.setColor(fgColor.toAwtColor()); 169 graphics.fill(areaOuline); 139 170 } 171 140 172 if (withCaret) { 141 173 HotPos caretPos = end; 142 174 HotPos textEnd = this.text.getEnd(); -
modules/org.sophie2.base.scene/src/main/java/org/sophie2/base/scene/helpers/HotTextElementHelper.java
95 95 96 96 Map<HotAttr<?>, Object> styleValues = new HashMap<HotAttr<?>, Object>(); 97 97 styleValues.put(CommonAttr.BACKGROUND_COLOR, SELECTION_BACKGROUND_COLOR); 98 styleValues.put(CommonAttr.FOREGROUND_COLOR, ImmColor.WHITE); 98 99 HotStyleDef style = HotStyleDef.getEmpty().derive(styleValues); 99 100 HotHighlight selectionHighlight = new HotHighlight(new HotInterval(markPos, caretPos), 100 101 style); -
modules/org.sophie2.main.func.text/src/main/java/org/sophie2/main/func/text/view/HeadTextFrameView.java
60 60 * @author kyli 61 61 */ 62 62 public class HeadTextFrameView extends TextFrameView { 63 64 /** 65 * The color of the background of links. 66 */ 67 static ImmColor BACKGROUND_LINKS_COLOR = ImmColor.YELLOW; 63 68 64 69 /** 65 70 * A constructor with {@link ResourceAccess}. … … 246 251 247 252 private HotHighlight createBgHighlight(HotInterval interval, ImmColor color) { 248 253 Map<HotAttr<?>, Object> styleValues = new HashMap<HotAttr<?>, Object>(); 249 styleValues.put(CommonAttr.BACKGROUND_COLOR, color); 254 styleValues.put(CommonAttr.FOREGROUND_COLOR, color); 255 styleValues.put(CommonAttr.BACKGROUND_COLOR, BACKGROUND_LINKS_COLOR); 250 256 HotStyleDef style = HotStyleDef.getEmpty().derive(styleValues); 251 257 252 258 return new HotHighlight(interval, style);