Skip to content

Commit 7109046

Browse files
J0s3fsk89q
authored andcommitted
fix for new API and optimized palette added (optional)
1 parent 3a361b9 commit 7109046

File tree

1 file changed

+61
-18
lines changed

1 file changed

+61
-18
lines changed

craftscripts/draw.js

Lines changed: 61 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,42 @@ var clothColors = [
4545
makeColor(255, 0, 0), // Red
4646
makeColor(0, 0, 0), // Black
4747
]
48+
var clothColorsOpt = [
49+
makeColor(178, 178, 178), // White
50+
makeColor(187, 102, 44), // Orange
51+
makeColor(152, 61, 161), // Magenta
52+
makeColor(84, 111, 170), // Light blue
53+
makeColor(156, 145, 23), // Yellow
54+
makeColor(47, 151, 38), // Green
55+
makeColor(174, 105, 124), // Pink
56+
makeColor(53, 53, 53), // Gray
57+
makeColor(127, 133, 133), // Light grey
58+
makeColor(32, 94, 120), // Cyan
59+
makeColor(103, 43, 156), // Purple
60+
makeColor(31, 41, 123), // Blue
61+
makeColor(68, 41, 22), // Brown
62+
makeColor(44, 61, 19), // Cactus green
63+
makeColor(131, 36, 32), // Red
64+
makeColor(21, 18, 18), // Black
65+
]
66+
var clothColorsOptHD = [
67+
makeColor(168, 168, 168), // White
68+
makeColor(143, 59, 0), // Orange
69+
makeColor(152, 0, 67), // Magenta
70+
makeColor(0, 153, 153), // Light blue
71+
makeColor(150, 150, 0), // Yellow
72+
makeColor(59, 143, 0), // Green
73+
makeColor(167, 83, 125), // Pink
74+
makeColor(64, 64, 64), // Gray
75+
makeColor(101, 101, 101), // Light grey
76+
makeColor(0, 83, 83), // Cyan
77+
makeColor(43, 12, 75), // Purple
78+
makeColor(0, 38, 77), // Blue
79+
makeColor(52, 25, 0), // Brown
80+
makeColor(10, 76, 10), // Cactus green
81+
makeColor(127, 9, 9), // Red
82+
makeColor(17, 17, 17), // Black
83+
]
4884

4985
// http://stackoverflow.com/questions/2103368/color-logic-algorithm/2103608#2103608
5086
function colorDistance(c1, c2) {
@@ -58,31 +94,38 @@ function colorDistance(c1, c2) {
5894
return Math.sqrt(weightR*r*r + weightG*g*g + weightB*b*b);
5995
}
6096

61-
function findClosestWoolColor(col) {
62-
var closestId = 0;
63-
var closestDistance = colorDistance(col, clothColors[0]);
64-
65-
for (var i = 1; i < clothColors.length; i++) {
66-
var dist = colorDistance(col, clothColors[i]);
67-
68-
if (dist < closestDistance) {
69-
closestId = i;
70-
closestDistance = dist;
71-
}
72-
}
73-
74-
return closestId;
97+
function findClosestWoolColor(col, clothColors) {
98+
var closestId = 0;
99+
var closestDistance = colorDistance(col, clothColors[0]);
100+
101+
for(var i = 1; i < clothColors.length; i++) {
102+
var dist = colorDistance(col, clothColors[i]);
103+
104+
if(dist < closestDistance) {
105+
closestId = i;
106+
closestDistance = dist;
107+
}
108+
}
109+
110+
return closestId;
75111
}
76112

77113

78-
context.checkArgs(1, 2, "<image> <orientation>");
114+
context.checkArgs(1, 3, "<image> <orientation> <palette>");
79115

80116
var f = context.getSafeFile("drawings", argv[1]);
81117
var sess = context.remember();
82118
var upright = argv[2] == "v";
83-
119+
var colors = clothColors;
120+
if(argv[3] == "opt") {
121+
colors = clothColorsOpt;
122+
player.print("Using optimized palette");
123+
} else if(argv[3] == "optHD") {
124+
colors = clothColorsOptHD;
125+
player.print("Using optimized HD palette");
126+
}
84127
if (!f.exists()) {
85-
player.error("Specified file doesn't exist.");
128+
player.printError("Specified file doesn't exist.");
86129
} else {
87130
var img = ImageIO.read(f);
88131

@@ -94,7 +137,7 @@ if (!f.exists()) {
94137
for (var x = 0; x < width; x++) {
95138
for (var y = 0; y < height; y++) {
96139
var c = new Color(img.getRGB(x, y));
97-
var data = findClosestWoolColor(c);
140+
var data = findClosestWoolColor(c,colors);
98141
// Added this to enable the user to create images upright
99142
// rather than flat on the ground
100143
if (!upright) {

0 commit comments

Comments
 (0)