public int getTopColor(DrawContext dc, java.awt.Point pickPoint) { GL gl = dc.getGL(); java.nio.ByteBuffer pixel = BufferUtil.newByteBuffer(3); int yInGLCoords = dc.getView().getViewport().height - pickPoint.y - 1; gl.glReadPixels( pickPoint.x, yInGLCoords, 1, 1, javax.media.opengl.GL.GL_RGB, GL.GL_UNSIGNED_BYTE, pixel); java.awt.Color topColor = null; try { topColor = new java.awt.Color(pixel.get(0) & 0xff, pixel.get(1) & 0xff, pixel.get(2) & 0xff, 0); } catch (Exception e) { Logging.logger().severe("layers.InvalidPickColorRead"); } return topColor != null ? topColor.getRGB() : 0; }
/** * getBorder. * * @param card a {@link forge.Card} object. * @return a {@link javax.swing.border.Border} object. */ public static Border getBorder(Card card) { // color info if (card == null) return BorderFactory.createEmptyBorder(2, 2, 2, 2); java.awt.Color color; ArrayList<String> list = CardUtil.getColors(card); if (card.isFaceDown()) color = Color.gray; else if (list.size() > 1) color = Color.orange; else if (list.get(0).equals(Constant.Color.Black)) color = Color.black; else if (list.get(0).equals(Constant.Color.Green)) color = new Color(0, 220, 39); else if (list.get(0).equals(Constant.Color.White)) color = Color.white; else if (list.get(0).equals(Constant.Color.Red)) color = Color.red; else if (list.get(0).equals(Constant.Color.Blue)) color = Color.blue; else if (list.get(0).equals(Constant.Color.Colorless)) color = Color.gray; else color = new Color(200, 0, 230); // If your card has a violet border, something is wrong if (color != Color.gray) { int r = color.getRed(); int g = color.getGreen(); int b = color.getBlue(); int shade = 10; r -= shade; g -= shade; b -= shade; r = Math.max(0, r); g = Math.max(0, g); b = Math.max(0, b); color = new Color(r, g, b); return BorderFactory.createLineBorder(color, 2); } else return BorderFactory.createLineBorder(Color.gray, 2); }