/** * Copyright 2014 * SMEdit https://github.com/StarMade/SMEdit * SMTools https://github.com/StarMade/SMTools * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. **/ package jo.sm.ui; import java.awt.Color; import java.awt.Component; import java.awt.Graphics; import java.util.logging.Logger; import javax.swing.Icon; /** * * @author Robert Barefoot */ public class TriangleSquareWindowsCornerIcon implements Icon { //RGB values discovered using ZoomIn private static final Color THREE_D_EFFECT_COLOR = new Color(255, 255, 255); private static final Color SQUARE_COLOR_LEFT = new Color(184, 180, 163); private static final Color SQUARE_COLOR_TOP_RIGHT = new Color(184, 180, 161); private static final Color SQUARE_COLOR_BOTTOM_RIGHT = new Color(184, 181, 161); //Dimensions private static final int WIDTH = 12; private static final int HEIGHT = 12; @Override public int getIconHeight() { return HEIGHT; } @Override public int getIconWidth() { return WIDTH; } @Override public void paintIcon(Component c, Graphics g, int x, int y) { //Layout a row and column "grid" int firstRow = 0; int firstColumn = 0; int rowDiff = 4; int columnDiff = 4; int secondRow = firstRow + rowDiff; int secondColumn = firstColumn + columnDiff; int thirdRow = secondRow + rowDiff; int thirdColumn = secondColumn + columnDiff; //Draw the white squares first, so the gray squares will overlap draw3dSquare(g, firstColumn+1, thirdRow+1); draw3dSquare(g, secondColumn+1, secondRow+1); draw3dSquare(g, secondColumn+1, thirdRow+1); draw3dSquare(g, thirdColumn+1, firstRow+1); draw3dSquare(g, thirdColumn+1, secondRow+1); draw3dSquare(g, thirdColumn+1, thirdRow+1); //draw the gray squares overlapping the white background squares drawSquare(g, firstColumn, thirdRow); drawSquare(g, secondColumn, secondRow); drawSquare(g, secondColumn, thirdRow); drawSquare(g, thirdColumn, firstRow); drawSquare(g, thirdColumn, secondRow); drawSquare(g, thirdColumn, thirdRow); } private void draw3dSquare(Graphics g, int x, int y){ Color oldColor = g.getColor(); //cache the old color g.setColor(THREE_D_EFFECT_COLOR); //set the white color g.fillRect(x,y,2,2); //draw the square g.setColor(oldColor); //reset the old color } private void drawSquare(Graphics g, int x, int y){ Color oldColor = g.getColor(); g.setColor(SQUARE_COLOR_LEFT); g.drawLine(x,y, x,y+1); g.setColor(SQUARE_COLOR_TOP_RIGHT); g.drawLine(x+1,y, x+1,y); g.setColor(SQUARE_COLOR_BOTTOM_RIGHT); g.drawLine(x+1,y+1, x+1,y+1); g.setColor(oldColor); } private static final Logger LOG = Logger.getLogger(TriangleSquareWindowsCornerIcon.class.getName()); }