1
|
|
package g0803.bindingofshiba.textures; |
2
|
|
|
3
|
|
import g0803.bindingofshiba.math.Vec2D; |
4
|
|
import java.awt.*; |
5
|
|
import java.awt.image.BufferedImage; |
6
|
|
import java.io.IOException; |
7
|
|
import java.net.URL; |
8
|
|
import javax.imageio.ImageIO; |
9
|
|
|
10
|
|
public class ImageTextureBuilder implements ITextureBuilder { |
11
|
|
|
12
|
|
private final int width, height; |
13
|
|
private final Color[] pixels; |
14
|
|
private Vec2D anchorPoint = new Vec2D(0, 0); |
15
|
|
|
16
|
|
public ImageTextureBuilder(int width, int height) { |
17
|
|
this.width = width; |
18
|
|
this.height = height; |
19
|
1
1. <init> : Replaced integer multiplication with division → KILLED
|
this.pixels = new Color[width * height]; |
20
|
|
} |
21
|
|
|
22
|
|
public ImageTextureBuilder(BufferedImage image) { |
23
|
|
this(image.getWidth(), image.getHeight()); |
24
|
|
this.loadImageData(image); |
25
|
|
} |
26
|
|
|
27
|
|
private int getIndexFromCoordinates(int x, int y) { |
28
|
8
1. getIndexFromCoordinates : changed conditional boundary → SURVIVED
2. getIndexFromCoordinates : changed conditional boundary → SURVIVED
3. getIndexFromCoordinates : changed conditional boundary → KILLED
4. getIndexFromCoordinates : changed conditional boundary → KILLED
5. getIndexFromCoordinates : negated conditional → KILLED
6. getIndexFromCoordinates : negated conditional → KILLED
7. getIndexFromCoordinates : negated conditional → KILLED
8. getIndexFromCoordinates : negated conditional → KILLED
|
if (x < 0 || x >= width || y < 0 || y >= height) |
29
|
|
throw new IllegalArgumentException("The provided coordinates are invalid"); |
30
|
|
|
31
|
3
1. getIndexFromCoordinates : Replaced integer multiplication with division → KILLED
2. getIndexFromCoordinates : Replaced integer addition with subtraction → KILLED
3. getIndexFromCoordinates : replaced int return with 0 for g0803/bindingofshiba/textures/ImageTextureBuilder::getIndexFromCoordinates → KILLED
|
return x + y * width; |
32
|
|
} |
33
|
|
|
34
|
|
public ImageTextureBuilder setAnchorPoint(double x, double y) { |
35
|
1
1. setAnchorPoint : replaced return value with null for g0803/bindingofshiba/textures/ImageTextureBuilder::setAnchorPoint → KILLED
|
return this.setAnchorPoint(new Vec2D(x, y)); |
36
|
|
} |
37
|
|
|
38
|
|
public ImageTextureBuilder setAnchorPoint(Vec2D anchorPoint) { |
39
|
|
this.anchorPoint = anchorPoint; |
40
|
1
1. setAnchorPoint : replaced return value with null for g0803/bindingofshiba/textures/ImageTextureBuilder::setAnchorPoint → KILLED
|
return this; |
41
|
|
} |
42
|
|
|
43
|
|
public ImageTextureBuilder loadImageData(BufferedImage image) { |
44
|
|
int imageWidth = image.getWidth(); |
45
|
|
int imageHeight = image.getHeight(); |
46
|
|
|
47
|
2
1. loadImageData : negated conditional → KILLED
2. loadImageData : negated conditional → KILLED
|
if (width != imageWidth || height != imageHeight) |
48
|
|
throw new IllegalArgumentException( |
49
|
|
"Image dimensions must match builder's expected dimensions"); |
50
|
|
|
51
|
3
1. loadImageData : changed conditional boundary → KILLED
2. loadImageData : Changed increment from 1 to -1 → KILLED
3. loadImageData : negated conditional → KILLED
|
for (int x = 0; x < width; x++) { |
52
|
3
1. loadImageData : changed conditional boundary → KILLED
2. loadImageData : Changed increment from 1 to -1 → KILLED
3. loadImageData : negated conditional → KILLED
|
for (int y = 0; y < height; y++) { |
53
|
|
int index = getIndexFromCoordinates(x, y); |
54
|
|
int rgb = image.getRGB(x, y); |
55
|
|
|
56
|
|
this.pixels[index] = new Color(rgb, true); |
57
|
|
} |
58
|
|
} |
59
|
|
|
60
|
1
1. loadImageData : replaced return value with null for g0803/bindingofshiba/textures/ImageTextureBuilder::loadImageData → KILLED
|
return this; |
61
|
|
} |
62
|
|
|
63
|
|
public ImageTextureBuilder loadResourceData(String location) throws IOException { |
64
|
|
URL resourceLocation = ImageTextureBuilder.class.getResource(location); |
65
|
1
1. loadResourceData : negated conditional → KILLED
|
if (resourceLocation == null) |
66
|
|
throw new IOException("Could not find resource at " + location); |
67
|
|
|
68
|
|
BufferedImage image = ImageIO.read(resourceLocation); |
69
|
1
1. loadResourceData : replaced return value with null for g0803/bindingofshiba/textures/ImageTextureBuilder::loadResourceData → KILLED
|
return this.loadImageData(image); |
70
|
|
} |
71
|
|
|
72
|
|
public ImageTextureBuilder setPixelAt(int x, int y, Color c) { |
73
|
|
int index = getIndexFromCoordinates(x, y); |
74
|
|
this.pixels[index] = c; |
75
|
1
1. setPixelAt : replaced return value with null for g0803/bindingofshiba/textures/ImageTextureBuilder::setPixelAt → KILLED
|
return this; |
76
|
|
} |
77
|
|
|
78
|
|
@Override |
79
|
|
public StaticTexture build() { |
80
|
1
1. build : replaced return value with null for g0803/bindingofshiba/textures/ImageTextureBuilder::build → KILLED
|
return new StaticTexture(width, height, anchorPoint, pixels); |
81
|
|
} |
82
|
|
} |
| | Mutations |
19 |
|
1.1 Location : <init> Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:defaultAnchorPoint()] Replaced integer multiplication with division → KILLED
|
28 |
|
1.1 Location : getIndexFromCoordinates Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:copiesImage()] changed conditional boundary → KILLED 2.2 Location : getIndexFromCoordinates Killed by : none changed conditional boundary → SURVIVED 3.3 Location : getIndexFromCoordinates Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:copiesImage()] changed conditional boundary → KILLED 4.4 Location : getIndexFromCoordinates Killed by : none changed conditional boundary → SURVIVED 5.5 Location : getIndexFromCoordinates Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:pixelModificationMustBeDoneInsideTheImageArea()] negated conditional → KILLED 6.6 Location : getIndexFromCoordinates Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:pixelModificationMustBeDoneInsideTheImageArea()] negated conditional → KILLED 7.7 Location : getIndexFromCoordinates Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:pixelModificationMustBeDoneInsideTheImageArea()] negated conditional → KILLED 8.8 Location : getIndexFromCoordinates Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:pixelModificationMustBeDoneInsideTheImageArea()] negated conditional → KILLED
|
31 |
|
1.1 Location : getIndexFromCoordinates Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:copiesImage()] Replaced integer multiplication with division → KILLED 2.2 Location : getIndexFromCoordinates Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:copiesImage()] Replaced integer addition with subtraction → KILLED 3.3 Location : getIndexFromCoordinates Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:copiesImage()] replaced int return with 0 for g0803/bindingofshiba/textures/ImageTextureBuilder::getIndexFromCoordinates → KILLED
|
35 |
|
1.1 Location : setAnchorPoint Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:setAnchorPoint()] replaced return value with null for g0803/bindingofshiba/textures/ImageTextureBuilder::setAnchorPoint → KILLED
|
40 |
|
1.1 Location : setAnchorPoint Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:setAnchorPoint()] replaced return value with null for g0803/bindingofshiba/textures/ImageTextureBuilder::setAnchorPoint → KILLED
|
47 |
|
1.1 Location : loadImageData Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:copiesImage()] negated conditional → KILLED 2.2 Location : loadImageData Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:throwsIfDimensionsDontMatch()] negated conditional → KILLED
|
51 |
|
1.1 Location : loadImageData Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:copiesImage()] changed conditional boundary → KILLED 2.2 Location : loadImageData Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:copiesImage()] Changed increment from 1 to -1 → KILLED 3.3 Location : loadImageData Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:copiesImage()] negated conditional → KILLED
|
52 |
|
1.1 Location : loadImageData Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:copiesImage()] changed conditional boundary → KILLED 2.2 Location : loadImageData Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:copiesImage()] Changed increment from 1 to -1 → KILLED 3.3 Location : loadImageData Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:copiesImage()] negated conditional → KILLED
|
60 |
|
1.1 Location : loadImageData Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:loadResourceData()] replaced return value with null for g0803/bindingofshiba/textures/ImageTextureBuilder::loadImageData → KILLED
|
65 |
|
1.1 Location : loadResourceData Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:throwsIfResourceNotFound()] negated conditional → KILLED
|
69 |
|
1.1 Location : loadResourceData Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:loadResourceData()] replaced return value with null for g0803/bindingofshiba/textures/ImageTextureBuilder::loadResourceData → KILLED
|
75 |
|
1.1 Location : setPixelAt Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:setPixelAt()] replaced return value with null for g0803/bindingofshiba/textures/ImageTextureBuilder::setPixelAt → KILLED
|
80 |
|
1.1 Location : build Killed by : g0803.bindingofshiba.textures.ImageTextureBuilderTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.textures.ImageTextureBuilderTest]/[method:defaultAnchorPoint()] replaced return value with null for g0803/bindingofshiba/textures/ImageTextureBuilder::build → KILLED
|