GfxLab-2022-2023/src/xyz/marsavic/gfxlab/MatrixData.java
2022-11-15 02:21:15 +01:00

53 lines
864 B
Java

package xyz.marsavic.gfxlab;
import xyz.marsavic.geometry.Vector;
import xyz.marsavic.gfxlab.gui.UtilsGL;
import java.util.Arrays;
public class MatrixData<E> implements Matrix<E> {
private final Vector size;
private final E[][] data;
public MatrixData(Vector size, E initialValue) {
this.size = size.floor();
//noinspection unchecked
data = (E[][]) new Object[this.size.yInt()][this.size.xInt()];
if (initialValue != null) {
fill(initialValue);
}
}
public MatrixData(Vector size) {
this(size, null);
}
@Override
public Vector size() {
return size;
}
@Override
public E get(int x, int y) {
return data[y][x];
}
@Override
public void set(int x, int y, E value) {
data[y][x] = value;
}
@Override
public void fill(E value) {
UtilsGL.parallel(data.length, y -> Arrays.fill(data[y], value));
}
}