school/cs240/src/imageeditor/pixel.java

72 lines
1.1 KiB
Java

public class pixel {
public int red;
public int green;
public int blue;
public pixel(int r, int g, int b) {
red = r;
green = g;
blue = b;
}
public pixel(int v) {
red = v;
green = v;
blue = v;
}
public pixel invert() {
return invert(255);
}
public pixel invert(int max) {
return new pixel(max-red, max-green, max-blue);
}
public pixel grayscale() {
int v = (red + green + blue) / 3;
return new pixel(v);
}
public pixel emboss(pixel p) {
int v = 128 + absMax(
red - p.red,
green - p.green,
blue - p.blue
);
if (v > 255) v = 255;
else if (v < 0) v = 0;
return new pixel(v);
}
public String toString() {
return red + " " + green + " " + blue + " ";
}
public static pixel average(pixel...pixels) {
int r = 0,
g = 0,
b = 0;
for (pixel p : pixels) {
r += p.red;
g += p.green;
b += p.blue;
}
r = r / pixels.length;
g = g / pixels.length;
b = b / pixels.length;
return new pixel(r, g, b);
}
public static int absMax(int...vals) {
int max = 0;
for (int v : vals) {
if (Math.abs(v) > Math.abs(max)) {
max = v;
}
}
return max;
}
}