aboutsummaryrefslogtreecommitdiffstats
path: root/ice40/gfx.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ice40/gfx.cc')
-rw-r--r--ice40/gfx.cc34
1 files changed, 33 insertions, 1 deletions
diff --git a/ice40/gfx.cc b/ice40/gfx.cc
index d6fcf5df..02f2668b 100644
--- a/ice40/gfx.cc
+++ b/ice40/gfx.cc
@@ -21,7 +21,7 @@
NEXTPNR_NAMESPACE_BEGIN
-void gfxTileWire(std::vector<GraphicElement> &g, int x, int y, GfxTileWireId id, GraphicElement::style_t style)
+void gfxTileWire(std::vector<GraphicElement> &g, int x, int y, int w, int h, GfxTileWireId id, GraphicElement::style_t style)
{
GraphicElement el;
el.type = GraphicElement::TYPE_LINE;
@@ -462,6 +462,38 @@ void gfxTileWire(std::vector<GraphicElement> &g, int x, int y, GfxTileWireId id,
g.push_back(el);
}
+ if (idx <= 15 && (x == 0 || x == w-1) && y == 1) {
+ float y1 = y - (0.03 + 0.0025 * (60 - idx - 4));
+
+ el.x1 = x2;
+ el.y1 = y;
+ el.x2 = x2;
+ el.y2 = y1;
+ g.push_back(el);
+
+ el.x1 = x2;
+ el.y1 = y1;
+ el.x2 = x + (x == 0);
+ el.y2 = y1;
+ g.push_back(el);
+ }
+
+ if (idx >= 4 && (x == 0 || x == w-1) && y == h-2) {
+ float y1 = y + 2.0 - (0.03 + 0.0025 * (60 - idx));
+
+ el.x1 = x1;
+ el.y1 = y + 1.0;
+ el.x2 = x1;
+ el.y2 = y1;
+ g.push_back(el);
+
+ el.x1 = x1;
+ el.y1 = y1;
+ el.x2 = x + (x == 0);
+ el.y2 = y1;
+ g.push_back(el);
+ }
+
el.y1 = y + 1.0 - (0.03 + 0.0025 * (270 - idx));
el.y2 = el.y1;
el.x1 = x1;