Skip to content

Commit 0e1c655

Browse files
committed
add color mode black and white
1 parent 05adfa4 commit 0e1c655

3 files changed

Lines changed: 57 additions & 26 deletions

File tree

.changeset/rich-apes-spend.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"struktolab": minor
3+
---
4+
5+
Add greyscale and black & white option. Also fixed loading of color mode.

src/common/svg-renderer.js

Lines changed: 47 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,60 @@
11
const SVG_NS = "http://www.w3.org/2000/svg";
22

33
const COLORS = {
4-
color: {
5-
TaskNode: "rgb(253, 237, 206)",
6-
InputNode: "rgb(253, 237, 206)",
7-
OutputNode: "rgb(253, 237, 206)",
8-
HeadLoopNode: "rgb(220, 239, 231)",
9-
CountLoopNode: "rgb(220, 239, 231)",
10-
FootLoopNode: "rgb(220, 239, 231)",
11-
BranchNode: "rgb(250, 218, 209)",
12-
CaseNode: "rgb(250, 218, 209)",
13-
InsertCase: "rgb(250, 218, 209)",
14-
TryCatchNode: "rgb(250, 218, 209)",
15-
FunctionNode: "rgb(255, 255, 255)",
4+
color: (type) => {
5+
const colors = {
6+
TaskNode: "rgb(253, 237, 206)",
7+
InputNode: "rgb(253, 237, 206)",
8+
OutputNode: "rgb(253, 237, 206)",
9+
HeadLoopNode: "rgb(220, 239, 231)",
10+
CountLoopNode: "rgb(220, 239, 231)",
11+
FootLoopNode: "rgb(220, 239, 231)",
12+
BranchNode: "rgb(250, 218, 209)",
13+
CaseNode: "rgb(250, 218, 209)",
14+
InsertCase: "rgb(250, 218, 209)",
15+
TryCatchNode: "rgb(250, 218, 209)",
16+
FunctionNode: "rgb(255, 255, 255)",
17+
};
18+
return colors[type];
1619
},
17-
bw: {
18-
TaskNode: "rgb(250, 250, 250)",
19-
InputNode: "rgb(250, 250, 250)",
20-
OutputNode: "rgb(250, 250, 250)",
21-
HeadLoopNode: "rgb(245, 245, 245)",
22-
CountLoopNode: "rgb(245, 245, 245)",
23-
FootLoopNode: "rgb(245, 245, 245)",
24-
BranchNode: "rgb(240, 240, 240)",
25-
CaseNode: "rgb(240, 240, 240)",
26-
InsertCase: "rgb(240, 240, 240)",
27-
TryCatchNode: "rgb(240, 240, 240)",
28-
FunctionNode: "rgb(255, 255, 255)",
20+
bw: (type) => {
21+
const colors = {
22+
TaskNode: "rgb(255, 255, 255)",
23+
InputNode: "rgb(255, 255, 255)",
24+
OutputNode: "rgb(255, 255, 255)",
25+
HeadLoopNode: "rgb(255, 255, 255)",
26+
CountLoopNode: "rgb(255, 255, 255)",
27+
FootLoopNode: "rgb(255, 255, 255)",
28+
BranchNode: "rgb(255, 255, 255)",
29+
CaseNode: "rgb(255, 255, 255)",
30+
InsertCase: "rgb(255, 255, 255)",
31+
TryCatchNode: "rgb(255, 255, 255)",
32+
FunctionNode: "rgb(255, 255, 255)",
33+
};
34+
return colors[type] || "rgb(255, 255, 255)";
35+
},
36+
greyscale: (type) => {
37+
const colors = {
38+
TaskNode: "rgb(250, 250, 250)",
39+
InputNode: "rgb(250, 250, 250)",
40+
OutputNode: "rgb(250, 250, 250)",
41+
HeadLoopNode: "rgb(245, 245, 245)",
42+
CountLoopNode: "rgb(245, 245, 245)",
43+
FootLoopNode: "rgb(245, 245, 245)",
44+
BranchNode: "rgb(240, 240, 240)",
45+
CaseNode: "rgb(240, 240, 240)",
46+
InsertCase: "rgb(240, 240, 240)",
47+
TryCatchNode: "rgb(240, 240, 240)",
48+
FunctionNode: "rgb(255, 255, 255)",
49+
};
50+
return colors[type];
2951
},
3052
};
3153

3254
let COLOR_MODE = "color";
3355

3456
function getColor(nodeType) {
35-
return COLORS[COLOR_MODE][nodeType];
57+
return COLORS[COLOR_MODE](nodeType);
3658
}
3759

3860
const DEFAULT_ROW_HEIGHT = 40;

src/editor/struktolab-editor.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,10 @@ class StruktolabEditor extends HTMLElement {
359359
this._fsInput.value = newVal || "14";
360360
if (name === "scale" && this._scaleInput)
361361
this._scaleInput.value = newVal || "1";
362+
if (name === "color-mode" && this._colorModeSelect)
363+
this._colorModeSelect.value = newVal || "color";
362364
this._render();
365+
363366
}
364367
}
365368

@@ -499,14 +502,15 @@ class StruktolabEditor extends HTMLElement {
499502
colorModeLabel.textContent = "Color Mode ";
500503
const colorModeSelect = document.createElement("select");
501504
colorModeSelect.innerHTML =
502-
'<option value="color">Color</option><option value="bw">Black & White</option>';
505+
'<option value="color">Color</option><option value="greyscale">Greyscale</option><option value="bw">Black & White</option>';
503506
colorModeSelect.value = this.getAttribute("color-mode") || "color";
504507
colorModeSelect.addEventListener("change", () => {
505508
this.setAttribute("color-mode", colorModeSelect.value);
506509
this._onTreeChange();
507510
});
508511
colorModeLabel.appendChild(colorModeSelect);
509512
this._toolbar.appendChild(colorModeLabel);
513+
this._colorModeSelect = colorModeSelect;
510514

511515

512516
// Separator

0 commit comments

Comments
 (0)