Skip to content

Commit 3434391

Browse files
committed
Add options to hide references and values
Fixes #90
1 parent cdeb179 commit 3434391

File tree

5 files changed

+56
-19
lines changed

5 files changed

+56
-19
lines changed

DATAFORMAT.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,11 @@ attribute.
147147
// may include none, one or both
148148
"italic", "mirrored"
149149
],
150-
"angle": angle
150+
"angle": angle,
151+
// Present only if text is reference designator
152+
"ref": 1,
153+
// Present only if text is component value
154+
"val": 1,
151155
}
152156
```
153157

InteractiveHtmlBom/core/ibom.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ def parse_poly_set(polygon_set):
271271
return result
272272

273273

274-
def parse_text(d):
274+
def parse_text(d, ref_val=None):
275275
pos = normalize(d.GetPosition())
276276
if not d.IsVisible():
277277
return None
@@ -348,12 +348,14 @@ def parse_drawings_on_layers(drawings, f_layer, b_layer):
348348
back = []
349349

350350
for d in drawings:
351-
if d.GetLayer() not in [f_layer, b_layer]:
351+
if d[1].GetLayer() not in [f_layer, b_layer]:
352352
continue
353-
drawing = parse_drawing(d)
353+
drawing = parse_drawing(d[1])
354354
if not drawing:
355355
continue
356-
if d.GetLayer() == f_layer:
356+
if d[0] in ["ref", "val"]:
357+
drawing[d[0]] = 1
358+
if d[1].GetLayer() == f_layer:
357359
front.append(drawing)
358360
else:
359361
back.append(drawing)
@@ -365,12 +367,12 @@ def parse_drawings_on_layers(drawings, f_layer, b_layer):
365367

366368

367369
def get_all_drawings(pcb):
368-
drawings = list(pcb.GetDrawings())
370+
drawings = [(d.GetClass(), d) for d in list(pcb.GetDrawings())]
369371
for m in pcb.GetModules():
370-
drawings.append(m.Reference())
371-
drawings.append(m.Value())
372+
drawings.append(("ref", m.Reference()))
373+
drawings.append(("val", m.Value()))
372374
for d in m.GraphicalItems():
373-
drawings.append(d)
375+
drawings.append((d.GetClass(), d))
374376
return drawings
375377

376378

InteractiveHtmlBom/web/ibom.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,14 @@
6363
<input id="silkscreenCheckbox" type="checkbox" checked onchange="silkscreenVisible(this.checked)">
6464
Show silkscreen
6565
</label>
66+
<label class="menu-label" style="width: calc(50% - 18px)">
67+
<input id="referencesCheckbox" type="checkbox" checked onchange="referencesVisible(this.checked)">
68+
References
69+
</label><!-- This comment eats space! All of it!
70+
--><label class="menu-label" style="width: calc(50% - 18px); border-left: 0;">
71+
<input id="valuesCheckbox" type="checkbox" checked onchange="valuesVisible(this.checked)">
72+
Values
73+
</label>
6674
<label class="menu-label">
6775
<input id="highlightpin1Checkbox" type="checkbox" onchange="setHighlightPin1(this.checked)">
6876
Highlight first pin

InteractiveHtmlBom/web/ibom.js

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,25 +21,39 @@ function dbg(html) {
2121
dbgdiv.innerHTML = html;
2222
}
2323

24-
function padsVisible(value) {
25-
renderPads = value;
24+
function redrawIfInitDone() {
2625
if (initDone) {
2726
redrawCanvas(allcanvas.front);
2827
redrawCanvas(allcanvas.back);
2928
}
3029
}
3130

31+
function padsVisible(value) {
32+
writeStorage("padsVisible", value);
33+
renderPads = value;
34+
redrawIfInitDone();
35+
}
36+
37+
function referencesVisible(value) {
38+
writeStorage("referencesVisible", value);
39+
renderReferences = value;
40+
redrawIfInitDone();
41+
}
42+
43+
function valuesVisible(value) {
44+
writeStorage("valuesVisible", value);
45+
renderValues = value;
46+
redrawIfInitDone();
47+
}
48+
3249
function setDarkMode(value) {
3350
if (value) {
3451
topmostdiv.classList.add("dark");
3552
} else {
3653
topmostdiv.classList.remove("dark");
3754
}
3855
writeStorage("darkmode", value);
39-
if (initDone) {
40-
redrawCanvas(allcanvas.front);
41-
redrawCanvas(allcanvas.back);
42-
}
56+
redrawIfInitDone();
4357
}
4458

4559
function layerVisible(visible, frontCavnas, backCanvas, storageString) {
@@ -60,10 +74,7 @@ function silkscreenVisible(visible) {
6074
function setHighlightPin1(value) {
6175
writeStorage("highlightpin1", value);
6276
highlightpin1 = value;
63-
if (initDone) {
64-
redrawCanvas(allcanvas.front);
65-
redrawCanvas(allcanvas.back);
66-
}
77+
redrawIfInitDone();
6778
}
6879

6980
function getStoredCheckboxRefs(checkbox) {
@@ -756,6 +767,14 @@ function initDefaults() {
756767
document.getElementById("silkscreenCheckbox").checked = b;
757768
silkscreenVisible(b);
758769

770+
b = getStorageBooleanOrDefault("referencesVisible", true);
771+
document.getElementById("referencesCheckbox").checked = b;
772+
referencesVisible(b);
773+
774+
b = getStorageBooleanOrDefault("valuesVisible", true);
775+
document.getElementById("valuesCheckbox").checked = b;
776+
valuesVisible(b);
777+
759778
b = getStorageBooleanOrDefault("redrawOnDrag", config.redraw_on_drag);
760779
document.getElementById("dragCheckbox").checked = b;
761780
setRedrawOnDrag(b);

InteractiveHtmlBom/web/render.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
var redrawOnDrag = true;
44
var boardRotation = 0;
55
var renderPads = true;
6+
var renderReferences = true;
7+
var renderValues = true;
68

79
function deg2rad(deg) {
810
return deg * Math.PI / 180;
@@ -20,6 +22,8 @@ function calcFontPoint(linepoint, text, offsetx, offsety, tilt) {
2022
}
2123

2224
function drawtext(ctx, text, color, flip) {
25+
if ("ref" in text && !renderReferences) return;
26+
if ("val" in text && !renderValues) return;
2327
ctx.save();
2428
ctx.translate(...text.pos);
2529
var angle = -text.angle;

0 commit comments

Comments
 (0)