clan manager: Use Sprite IDs for rank badges
This commit adds `ImageUtil::resizeCanvas`, `ImageUtil::outlineImage`, and `ImageUtil::fillImage`, and applies these functions to the clan manager to replace the clan rank images with calls to `SpriteManager`.
This commit is contained in:
@@ -96,4 +96,26 @@ public class ColorUtilTest
|
||||
assertEquals(hex, ColorUtil.colorToHexCode(color));
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isFullyTransparent()
|
||||
{
|
||||
for (Color color : COLOR_HEXSTRING_MAP.keySet())
|
||||
{
|
||||
assert(!ColorUtil.isFullyTransparent(color));
|
||||
}
|
||||
assert(ColorUtil.isFullyTransparent(new Color(0, 0, 0, 0)));
|
||||
assert(!ColorUtil.isFullyTransparent(new Color(0, 0, 0, 1)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isNotFullyTransparent()
|
||||
{
|
||||
for (Color color : COLOR_HEXSTRING_MAP.keySet())
|
||||
{
|
||||
assert(ColorUtil.isNotFullyTransparent(color));
|
||||
}
|
||||
assert(!ColorUtil.isNotFullyTransparent(new Color(0, 0, 0, 0)));
|
||||
assert(ColorUtil.isNotFullyTransparent(new Color(0, 0, 0, 1)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ import java.awt.image.BufferedImage;
|
||||
import java.awt.image.DataBuffer;
|
||||
import java.awt.image.DataBufferInt;
|
||||
import java.util.Arrays;
|
||||
import java.util.function.Predicate;
|
||||
import javax.annotation.Nonnull;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
@@ -193,6 +194,22 @@ public class ImageUtilTest
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void resizeCanvas()
|
||||
{
|
||||
assert(bufferedImagesEqual(centeredPixel(BLACK), ImageUtil.resizeCanvas(oneByOne(BLACK), 3, 3)));
|
||||
assert(bufferedImagesEqual(oneByOne(BLACK), ImageUtil.resizeCanvas(oneByOne(BLACK), 1, 1)));
|
||||
assert(bufferedImagesEqual(oneByOne(BLACK), ImageUtil.resizeCanvas(centeredPixel(BLACK), 1, 1)));
|
||||
|
||||
BufferedImage expected = new BufferedImage(2, 1, BufferedImage.TYPE_INT_ARGB);
|
||||
expected.setRGB(1, 0, BLACK.getRGB());
|
||||
assert(bufferedImagesEqual(expected, ImageUtil.resizeCanvas(oneByOne(BLACK), 2, 1)));
|
||||
|
||||
expected = new BufferedImage(1, 2, BufferedImage.TYPE_INT_ARGB);
|
||||
expected.setRGB(0, 1, BLACK.getRGB());
|
||||
assert(bufferedImagesEqual(expected, ImageUtil.resizeCanvas(oneByOne(BLACK), 1, 2)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void rotateImage()
|
||||
{
|
||||
@@ -230,6 +247,79 @@ public class ImageUtilTest
|
||||
assert(bufferedImagesEqual(BLACK_PIXEL_BOTTOM_RIGHT, ImageUtil.flipImage(BLACK_PIXEL_TOP_LEFT, true, true)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void fillImage()
|
||||
{
|
||||
// fillImage(BufferedImage image, Color color)
|
||||
assert(bufferedImagesEqual(centeredPixel(GRAY), ImageUtil.fillImage(centeredPixel(BLACK), GRAY)));
|
||||
assert(bufferedImagesEqual(solidColor(3, 3, GREEN), ImageUtil.fillImage(solidColor(3, 3, BLACK), GREEN)));
|
||||
assert(bufferedImagesEqual(oneByOne(BLACK_TRANSPARENT), ImageUtil.fillImage(oneByOne(BLACK_TRANSPARENT), WHITE)));
|
||||
|
||||
// fillImage(BufferedImage image, Color color, Predicate<Color> fillCondition)
|
||||
BufferedImage expected = solidColor(CORNER_SIZE, CORNER_SIZE, WHITE);
|
||||
expected.setRGB(0, 0, new Color(0, true).getRGB());
|
||||
assert(bufferedImagesEqual(expected, ImageUtil.fillImage(BLACK_PIXEL_TOP_LEFT, WHITE, ColorUtil::isFullyTransparent)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void outlineImage()
|
||||
{
|
||||
// outlineImage(BufferedImage image, Color color)
|
||||
BufferedImage expected = new BufferedImage(CENTERED_SIZE, CENTERED_SIZE, BufferedImage.TYPE_INT_ARGB);
|
||||
for (int x = 0; x < expected.getWidth(); x++)
|
||||
{
|
||||
for (int y = 0; y < expected.getHeight(); y++)
|
||||
{
|
||||
if (x != 1 && y != 1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
expected.setRGB(x, y, BLACK.getRGB());
|
||||
}
|
||||
}
|
||||
assert(bufferedImagesEqual(expected, ImageUtil.outlineImage(centeredPixel(BLACK), BLACK)));
|
||||
expected.setRGB(1, 1, WHITE.getRGB());
|
||||
assert(bufferedImagesEqual(expected, ImageUtil.outlineImage(centeredPixel(WHITE), BLACK)));
|
||||
expected = solidColor(CORNER_SIZE, CORNER_SIZE, WHITE);
|
||||
expected.setRGB(0, 0, BLACK.getRGB());
|
||||
expected.setRGB(1, 1, new Color(0, true).getRGB());
|
||||
assert(bufferedImagesEqual(expected, ImageUtil.outlineImage(BLACK_PIXEL_TOP_LEFT, WHITE)));
|
||||
|
||||
// outlineImage(BufferedImage image, Color color, Predicate<Color> fillCondition)
|
||||
BufferedImage test = new BufferedImage(CORNER_SIZE, CORNER_SIZE, BufferedImage.TYPE_INT_ARGB);
|
||||
test.setRGB(0, 0, BLACK.getRGB());
|
||||
test.setRGB(1, 0, GRAY.getRGB());
|
||||
expected = test;
|
||||
expected.setRGB(0, 1, BLUE.getRGB());
|
||||
assert(bufferedImagesEqual(expected, ImageUtil.outlineImage(test, BLUE, (color -> color.equals(BLACK)))));
|
||||
|
||||
// outlineImage(BufferedImage image, Color color, Boolean outlineCorners)
|
||||
expected = solidColor(CORNER_SIZE, CORNER_SIZE, WHITE);
|
||||
expected.setRGB(0, 0, BLACK.getRGB());
|
||||
assert(bufferedImagesEqual(expected, ImageUtil.outlineImage(BLACK_PIXEL_TOP_LEFT, WHITE, true)));
|
||||
assert(bufferedImagesEqual(solidColor(3, 3, BLACK), ImageUtil.outlineImage(centeredPixel(BLACK), BLACK, true)));
|
||||
|
||||
// outlineImage(BufferedImage image, Color color, Predicate<Color> fillCondition, Boolean outlineCorners)
|
||||
test = new BufferedImage(5, 5, BufferedImage.TYPE_INT_ARGB);
|
||||
test.setRGB(2, 2, BLACK.getRGB());
|
||||
test.setRGB(1,2, new Color(50, 50, 50).getRGB());
|
||||
test.setRGB(3, 2, new Color(100, 100, 100).getRGB());
|
||||
test.setRGB(2, 3, new Color(150, 150, 150).getRGB());
|
||||
expected = test;
|
||||
expected.setRGB(2, 1, RED.getRGB());
|
||||
expected.setRGB(3, 1, RED.getRGB());
|
||||
expected.setRGB(4, 1, RED.getRGB());
|
||||
expected.setRGB(4, 2, RED.getRGB());
|
||||
expected.setRGB(1, 3, RED.getRGB());
|
||||
expected.setRGB(3, 3, RED.getRGB());
|
||||
expected.setRGB(4, 3, RED.getRGB());
|
||||
expected.setRGB(1, 4, RED.getRGB());
|
||||
expected.setRGB(2, 4, RED.getRGB());
|
||||
expected.setRGB(3, 4, RED.getRGB());
|
||||
Predicate<Color> testPredicate = (color -> ColorUtil.isNotFullyTransparent(color) && color.getRed() > 75 && color.getGreen() > 75 && color.getBlue() > 75);
|
||||
assert(bufferedImagesEqual(expected, ImageUtil.outlineImage(test, RED, testPredicate, true)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Compares whether two {@link BufferedImage}s are equal in data.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user