From 5b028a76f597267a3b39b138b3d8e372b8106943 Mon Sep 17 00:00:00 2001 From: Martin Petera Date: Thu, 1 Jan 2026 17:24:03 +0100 Subject: [PATCH 1/9] Extended SVGGenerator with TextAsShapes option. --- .../mps/editor/diagram/runtime/plugin.mps | 367 ++++++++++-------- 1 file changed, 201 insertions(+), 166 deletions(-) diff --git a/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps b/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps index cf2b30ed76..49bdbfc898 100644 --- a/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps +++ b/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps @@ -52,6 +52,7 @@ + @@ -6747,316 +6748,349 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - + + - + - + - - - + + + - + - + - + - + - - - - - - - - - - - - - + + - + - - - + + + - + - - + + + - - + + + - + - - - + + + - + - + - - + + - - - - + + + + - + - - + + - - + + - + - - + + - - - - + + + + - + - - + + - - - + + + - + - + - + - + - + - + - - + + - + - - + + - - + + - - + + - - - + + + - + - + - + - + - + - + - + - + - + - - - - + + + + - - + + - - - + + + + - + - + - + - + - + - + - + - + - - - + + + - + - - + + - - + + - - - + + + - + - + - + - + - + - + - - + + - + - - + + - - + + - - + + @@ -7064,33 +7098,33 @@ - - - - - - + + + + + + - + - - + + - - + + - - - - - - + + + + + + - + @@ -7099,28 +7133,29 @@ - - + - - + - - + + - + - + - + + + + + - From 781f9f084339941048c3891d3f265d544f21a040 Mon Sep 17 00:00:00 2001 From: Martin Petera Date: Thu, 1 Jan 2026 17:28:47 +0100 Subject: [PATCH 2/9] Turned hollow SVGGenerator into object --- .../mps/editor/diagram/runtime/plugin.mps | 385 ++++++++++-------- 1 file changed, 214 insertions(+), 171 deletions(-) diff --git a/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps b/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps index 49bdbfc898..18d12de284 100644 --- a/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps +++ b/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps @@ -393,6 +393,7 @@ + @@ -6744,21 +6745,67 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + - - + + + + + + + + - @@ -6784,313 +6831,312 @@ - - - - - - - - + + + + + + + - + - + - - + + - + - + - - - + + + - + - + - + - + - - + + - + - - - + + + - + - + - + - + - - - + + + - + - + - - + + - - - - + + + + - + - - + + - - + + - + - - + + - - - - + + + + - + - - + + - - - + + + - + - + - + - + - + - + - - + + - + - - + + - - + + - - + + - - - + + + - + - + - + - + - + - + - + - + - + - - - - + + + + - - + + - - - - + + + + - + - + - + - + - + - + - + - + - - - + + + - + - - + + - - + + - - - + + + - + - + - + - + - + - + - - + + - + - - + + - - + + - - + + @@ -7098,33 +7144,33 @@ - - - - - - + + + + + + - + - - + + - - + + - - - - - - + + + + + + - + @@ -7133,30 +7179,27 @@ - + + - + - - + + - + - + - + - - - - + - From 95b924579c9afe5326e59f774d15db0221c8fdb5 Mon Sep 17 00:00:00 2001 From: Martin Petera Date: Thu, 1 Jan 2026 17:41:27 +0100 Subject: [PATCH 3/9] SVGGenerator: separate concerns into methods --- .../mps/editor/diagram/runtime/plugin.mps | 468 +++++++++--------- 1 file changed, 226 insertions(+), 242 deletions(-) diff --git a/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps b/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps index 18d12de284..22d499599b 100644 --- a/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps +++ b/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps @@ -6798,7 +6798,7 @@ - + @@ -6831,312 +6831,310 @@ - - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - + + - + - + - - - + + + - + - + - + - + - - + + - + - - - + + + - + - + - + - + - - - + + + - + - + - - + + - - - - + + + + - + - - + + - - + + - + - - + + - - - - + + + + - + - - + + - - - + + + - + - + - + - + - + - + - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + - + - - + + - - + + - - + + @@ -7144,33 +7142,33 @@ - - - - - - + + + + + + - + - - + + - - + + - - - - - - + + + + + + - + @@ -7179,26 +7177,12 @@ - - + - - - - - - - - - - - - - - + + - From b8a14b0173f1a647e9ebfe3ebbdfb85a2053213f Mon Sep 17 00:00:00 2001 From: Martin Petera Date: Thu, 1 Jan 2026 18:50:18 +0100 Subject: [PATCH 4/9] SVGGenerator allow to setViewBox and useCSS --- .../mps/editor/diagram/runtime/plugin.mps | 450 +++++++++++++----- 1 file changed, 339 insertions(+), 111 deletions(-) diff --git a/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps b/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps index 22d499599b..0b80b3fa74 100644 --- a/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps +++ b/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps @@ -156,6 +156,9 @@ + + + @@ -6747,9 +6750,22 @@ + + + + + + + + + + + + + @@ -6758,6 +6774,10 @@ + + + + @@ -6766,6 +6786,19 @@ + + + + + + + + + + + + + @@ -6779,58 +6812,34 @@ - - - - - - - - - - - - - - - - - + + + + - - - - - - - + + + + - - - + + + - - - - - - - - - + + + - - - - - + + + - + @@ -6848,6 +6857,19 @@ + + + + + + + + + + + + + @@ -6858,42 +6880,99 @@ - - - - + + + + + - - + + - + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + - - + + @@ -6919,8 +6998,52 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -7100,41 +7223,24 @@ - + + - - - - - - - - - - - - - - - - - - - - - + + + - + - - + + - - + + - - + + @@ -7142,33 +7248,37 @@ - - - - - - + + + + + + - - - - + + + + + + + - - + + + - - - - - - + + + + + + - + @@ -7177,12 +7287,130 @@ - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 129a8f20604050ba85e883f14d6e7361f01f29f4 Mon Sep 17 00:00:00 2001 From: Martin Petera Date: Thu, 1 Jan 2026 19:19:12 +0100 Subject: [PATCH 5/9] Builder for SVGGenerator to set all options --- .../mps/editor/diagram/runtime/plugin.mps | 284 ++++++++++++++++-- 1 file changed, 259 insertions(+), 25 deletions(-) diff --git a/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps b/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps index 0b80b3fa74..01b48395fa 100644 --- a/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps +++ b/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps @@ -6767,21 +6767,6 @@ - - - - - - - - - - - - - - - @@ -7002,23 +6987,39 @@ - - - - - - + + + + + + + + + + + + + + + - + + + + + - + - + + + + @@ -7223,7 +7224,6 @@ - @@ -7412,6 +7412,240 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 4a1a4528d378230e2412eeb0fd91c4b6d5769724 Mon Sep 17 00:00:00 2001 From: Martin Petera Date: Thu, 1 Jan 2026 19:46:40 +0100 Subject: [PATCH 6/9] Allow to set escaping for special charactes in SVGGenerator --- .../mps/editor/diagram/runtime/plugin.mps | 316 ++++++++++++++---- 1 file changed, 254 insertions(+), 62 deletions(-) diff --git a/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps b/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps index 01b48395fa..a3aa085979 100644 --- a/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps +++ b/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps @@ -6760,6 +6760,12 @@ + + + + + + @@ -6797,6 +6803,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6823,6 +6864,10 @@ + + + + @@ -6830,7 +6875,7 @@ - + @@ -6861,7 +6906,7 @@ - + @@ -6911,7 +6956,7 @@ - + @@ -6920,6 +6965,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6930,7 +7024,7 @@ - + @@ -6946,9 +7040,9 @@ - + - + @@ -6956,9 +7050,6 @@ - - - @@ -6994,15 +7085,13 @@ - - - - - - + + + + @@ -7224,23 +7313,23 @@ - + - - - + + + - + - - + + - - + + - - + + @@ -7248,37 +7337,39 @@ - - - - - - + + + + + + - + - - + + - - + + - - + + + + + - - - - - - - + + + + + + - + @@ -7287,36 +7378,32 @@ - - + + - + - + - + - + - + - + - + - - - - - + @@ -7426,6 +7513,11 @@ + + + + + @@ -7434,7 +7526,7 @@ - + @@ -7445,6 +7537,7 @@ + @@ -7479,6 +7572,19 @@ + + + + + + + + + + + + + @@ -7505,6 +7611,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -7530,6 +7658,12 @@ + + + + + + @@ -7567,6 +7701,12 @@ + + + + + + @@ -7604,6 +7744,12 @@ + + + + + + @@ -7617,6 +7763,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -7635,6 +7824,9 @@ + + + From 1f73eb76cc9bf48625247869612fa4cb6b0a1090 Mon Sep 17 00:00:00 2001 From: Martin Petera Date: Thu, 1 Jan 2026 20:20:42 +0100 Subject: [PATCH 7/9] SVGGenerator: Allow to set SVG style - e.g. external font --- .../mps/editor/diagram/runtime/plugin.mps | 360 +++++++++++++++++- 1 file changed, 355 insertions(+), 5 deletions(-) diff --git a/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps b/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps index a3aa085979..0a7992a7c6 100644 --- a/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps +++ b/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps @@ -265,6 +265,7 @@ + @@ -6772,6 +6773,12 @@ + + + + + + @@ -6851,6 +6858,20 @@ + + + + + + + + + + + + + + @@ -6868,6 +6889,10 @@ + + + + @@ -6964,6 +6989,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -7097,6 +7171,9 @@ + + + @@ -7106,9 +7183,6 @@ - - - @@ -7499,31 +7573,212 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + @@ -7538,6 +7793,7 @@ + @@ -7598,6 +7854,19 @@ + + + + + + + + + + + + + @@ -7615,6 +7884,10 @@ + + + + @@ -7664,6 +7937,12 @@ + + + + + + @@ -7707,6 +7986,12 @@ + + + + + + @@ -7750,6 +8035,12 @@ + + + + + + @@ -7793,6 +8084,12 @@ + + + + + + @@ -7806,6 +8103,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -7827,6 +8173,9 @@ + + + @@ -7838,6 +8187,7 @@ + From 1c95761b5ab22438717877bf69fe02894e1c0849 Mon Sep 17 00:00:00 2001 From: Martin Petera Date: Thu, 1 Jan 2026 20:35:03 +0100 Subject: [PATCH 8/9] Modified ImageExportUtil to use Builder + example --- .../mps/editor/diagram/runtime/plugin.mps | 180 ++++++++++++++++-- 1 file changed, 160 insertions(+), 20 deletions(-) diff --git a/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps b/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps index 0a7992a7c6..4f117056bd 100644 --- a/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps +++ b/code/diagram/solutions/de.itemis.mps.editor.diagram.runtime/models/de/itemis/mps/editor/diagram/runtime/plugin.mps @@ -10,6 +10,7 @@ + @@ -434,6 +435,21 @@ + + + + + + + + + + + + + + + @@ -469,10 +485,18 @@ + + + + + + + + @@ -4357,33 +4381,137 @@ - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + - - - - - + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -7206,6 +7334,18 @@ + + + + + + + + + + + + From cf6eafa0ac47c2289c72ce234db9da5a1549f542 Mon Sep 17 00:00:00 2001 From: Martin Petera Date: Thu, 29 Jan 2026 02:29:34 +0100 Subject: [PATCH 9/9] Updated Changelog --- CHANGELOG.md | 4 ++ .../de.itemis.mps.extensions.changelog.mps | 64 +++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a943b3c3cf..d4e8c324c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ The format is *loosely* based on [Keep a Changelog](https://keepachangelog.com/e - *de.slisson.mps.editor.multiline* Generic placeholders like generic comments can't be inserted into words anymore (an exception was thrown). - *de.slisson.mps.tables.runtime* Prevent inserting a new row node before/after a singular cardinality child node +### Added + +- *de.itemis.mps.editor.diagram.runtime* Turned SVGGenerator into object with options (TextAsShape, UseCSS, SetViewBox), customizable style snippet and SVGGenerator.Builder for convenient usage. + ## December 2025 ### Added diff --git a/code/solutions/de.itemis.mps.extensions.changelog/models/de.itemis.mps.extensions.changelog.mps b/code/solutions/de.itemis.mps.extensions.changelog/models/de.itemis.mps.extensions.changelog.mps index a6d7875d3f..ff6775dd60 100644 --- a/code/solutions/de.itemis.mps.extensions.changelog/models/de.itemis.mps.extensions.changelog.mps +++ b/code/solutions/de.itemis.mps.extensions.changelog/models/de.itemis.mps.extensions.changelog.mps @@ -343,6 +343,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +