Changeset 8903 in josm
- Timestamp:
- 2015-10-18T23:57:31+02:00 (9 years ago)
- Location:
- trunk/src/org/openstreetmap/josm
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java
r8510 r8903 3 3 4 4 import java.awt.Component; 5 import java.awt.Rectangle; 5 6 6 7 import javax.swing.DefaultListCellRenderer; … … 67 68 * provided that it's a kind of JLabel. 68 69 * @param def the rendering component 69 * @param value the OsmPrimtive to render 70 * @param value the OsmPrimitive to render 70 71 * @return the modified rendering component 71 72 */ … … 73 74 if (value != null && def instanceof JLabel) { 74 75 ((JLabel) def).setText(getComponentText(value)); 75 ImageIcon icon = ImageProvider.get(value.getDisplayType()); 76 ImageIcon icon = ImageProvider.getPadded(value, 77 // Height of component no yet known, assume the default 16px. 78 new Rectangle(16, 16)); 76 79 if (icon != null) { 77 80 ((JLabel) def).setIcon(icon); … … 88 91 * provided that it's a kind of JLabel. 89 92 * @param def the rendering component 90 * @param value the HistoryOsmPrimtive to render 93 * @param value the HistoryOsmPrimitive to render 91 94 * @return the modified rendering component 92 95 */ -
trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRenderer.java
r6476 r8903 3 3 4 4 import java.awt.Component; 5 import java.awt.Rectangle; 5 6 6 7 import javax.swing.JTable; … … 10 11 import org.openstreetmap.josm.tools.ImageProvider; 11 12 13 /** 14 * "Refers to" column in relation editor's member list. 15 */ 12 16 public class MemberTableMemberCellRenderer extends MemberTableCellRenderer { 13 17 18 /** 19 * Constructs a new {@code MemberTableMemberCellRenderer}. 20 */ 14 21 public MemberTableMemberCellRenderer() { 15 22 super(); 16 23 } 17 24 18 protected void renderPrimitive(OsmPrimitive primitive) { 19 setIcon(ImageProvider.get(primitive.getDisplayType())); 25 protected void renderPrimitive(OsmPrimitive primitive, Rectangle cellSize) { 26 // Make icon the full height of the table cell. Icon background is square. 27 setIcon(ImageProvider.getPadded(primitive, cellSize)); 20 28 setText(primitive.getDisplayName(DefaultNameFormatter.getInstance())); 21 29 setToolTipText(DefaultNameFormatter.getInstance().buildDefaultToolTip(primitive)); … … 30 38 return this; 31 39 40 Rectangle cellSize = table.getCellRect(row, column, false); 41 32 42 renderForeground(isSelected); 33 43 OsmPrimitive primitive = (OsmPrimitive) value; 34 44 renderBackground(getModel(table), primitive, isSelected); 35 renderPrimitive(primitive); 45 renderPrimitive(primitive, cellSize); 36 46 return this; 37 47 } -
trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRenderer.java
r8855 r8903 4 4 import java.awt.Color; 5 5 import java.awt.Component; 6 import java.awt.Rectangle; 6 7 7 8 import javax.swing.JLabel; … … 58 59 } 59 60 60 protected void renderPrimitive(OsmPrimitive primitive) { 61 setIcon(ImageProvider.get(primitive .getDisplayType()));61 protected void renderPrimitive(OsmPrimitive primitive, Rectangle cellSize) { 62 setIcon(ImageProvider.getPadded(primitive, cellSize)); 62 63 setText(primitive.getDisplayName(DefaultNameFormatter.getInstance())); 63 64 setToolTipText(DefaultNameFormatter.getInstance().buildDefaultToolTip(primitive)); … … 72 73 return this; 73 74 75 Rectangle cellSize = table.getCellRect(row, column, false); 76 74 77 renderBackground((OsmPrimitive) value); 75 renderPrimitive((OsmPrimitive) value); 78 renderPrimitive((OsmPrimitive) value, cellSize); 76 79 return this; 77 80 } -
trunk/src/org/openstreetmap/josm/tools/ImageProvider.java
r8846 r8903 12 12 import java.awt.Image; 13 13 import java.awt.Point; 14 import java.awt.Rectangle; 14 15 import java.awt.RenderingHints; 15 16 import java.awt.Toolkit; … … 56 57 57 58 import org.openstreetmap.josm.Main; 59 import org.openstreetmap.josm.data.osm.OsmPrimitive; 58 60 import org.openstreetmap.josm.data.osm.OsmPrimitiveType; 61 import org.openstreetmap.josm.gui.mappaint.ElemStyle; 62 import org.openstreetmap.josm.gui.mappaint.MapImage; 63 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles; 64 import org.openstreetmap.josm.gui.mappaint.NodeElemStyle; 65 import org.openstreetmap.josm.gui.mappaint.Range; 66 import org.openstreetmap.josm.gui.mappaint.StyleCache.StyleList; 59 67 import org.openstreetmap.josm.io.CachedFile; 60 68 import org.openstreetmap.josm.plugins.PluginHandler; … … 1266 1274 CheckParameterUtil.ensureParameterNotNull(type, "type"); 1267 1275 return get("data", type.getAPIName()); 1276 } 1277 1278 /** 1279 * @param primitive Object for which an icon shall be fetched. The icon is chosen based on tags. 1280 * @param iconSize Target size of icon. Icon is padded if required. 1281 * @return Icon for {@code primitive} that fits in cell. 1282 * @since 8903 1283 */ 1284 public static ImageIcon getPadded(OsmPrimitive primitive, Rectangle iconSize) { 1285 // Check if the current styles have special icon for tagged nodes. 1286 if (primitive instanceof org.openstreetmap.josm.data.osm.Node) { 1287 Pair<StyleList, Range> nodeStyles = MapPaintStyles.getStyles().generateStyles(primitive, 100, false); 1288 for (ElemStyle style : nodeStyles.a) { 1289 if (style instanceof NodeElemStyle) { 1290 NodeElemStyle nodeStyle = (NodeElemStyle) style; 1291 MapImage icon = nodeStyle.mapImage; 1292 if (icon != null) { 1293 int backgroundWidth = iconSize.height; 1294 int backgroundHeight = iconSize.height; 1295 int iconWidth = icon.getWidth(); 1296 int iconHeight = icon.getHeight(); 1297 BufferedImage image = new BufferedImage(backgroundWidth, backgroundHeight, 1298 BufferedImage.TYPE_INT_ARGB); 1299 double scaleFactor = Math.min(backgroundWidth / (double) iconWidth, backgroundHeight 1300 / (double) iconHeight); 1301 BufferedImage iconImage = icon.getImage(false); 1302 Image scaledIcon; 1303 final int scaledWidth; 1304 final int scaledHeight; 1305 if (scaleFactor < 1) { 1306 // Scale icon such that it fits on background. 1307 scaledWidth = (int) (iconWidth * scaleFactor); 1308 scaledHeight = (int) (iconHeight * scaleFactor); 1309 scaledIcon = iconImage.getScaledInstance(scaledWidth, scaledHeight, Image.SCALE_SMOOTH); 1310 } else { 1311 // Use original size, don't upscale. 1312 scaledWidth = iconWidth; 1313 scaledHeight = iconHeight; 1314 scaledIcon = iconImage; 1315 } 1316 image.getGraphics().drawImage(scaledIcon, (backgroundWidth - scaledWidth) / 2, 1317 (backgroundHeight - scaledHeight) / 2, null); 1318 1319 return new ImageIcon(image); 1320 } 1321 } 1322 } 1323 } 1324 1325 // Use generic default icon. 1326 return ImageProvider.get(primitive.getDisplayType()); 1268 1327 } 1269 1328
Note:
See TracChangeset
for help on using the changeset viewer.