Browse Source

Add high-level overview image of how repositories interconnect

Ghostkeeper 4 years ago
parent
commit
9d800f9fde
2 changed files with 77 additions and 1 deletions
  1. 7 1
      docs/repositories.md
  2. 70 0
      docs/resources/repositories.svg

+ 7 - 1
docs/repositories.md

@@ -12,4 +12,10 @@ There are also a number of repositories under our control that are not integral
 * Loading and writing UFP files is done through [libCharon](https://github.com/Ultimaker/libCharon).
 * To make the build system a bit simpler, some parts are pre-compiled in [cura-binary-data](https://github.com/Ultimaker/cura-binary-data). This holds things like the machine-readable translation files and the Marlin builds for firmware updates, which would require considerable tooling to build automatically.
 * There are automated GUI tests in [Cura-squish-tests](https://github.com/Ultimaker/Cura-squish-tests).
-* Material profiles are stored in [fdm_materials](https://github.com/Ultimaker/fdm_materials). This is separated out and combined in our build process, so that the firmware for Ultimaker's printers can use the same set of profiles too.
+* Material profiles are stored in [fdm_materials](https://github.com/Ultimaker/fdm_materials). This is separated out and combined in our build process, so that the firmware for Ultimaker's printers can use the same set of profiles too.
+
+Interplay
+----
+At a very high level, Cura's repositories interconnect as follows:
+
+![Overview of interplay between repositories](resources/repositories.svg)

+ 70 - 0
docs/resources/repositories.svg

@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000">
+    <defs>
+        <marker id="arrow" refX="2" refY="1.5" markerWidth="3" markerHeight="3" orient="auto-start-reverse">
+            <polygon points="0,0 3,1.5 0,3" />
+        </marker>
+    </defs>
+
+    <g marker-end="url(#arrow)" stroke="black" stroke-width="5"> <!-- Arrows. -->
+        <!-- Towards CuraEngine and back. -->
+        <line x1="475" y1="400" x2="475" y2="307.5" />
+        <line x1="475" y1="250" x2="475" y2="210" />
+        <line x1="525" y1="200" x2="525" y2="242.5" />
+        <line x1="525" y1="300" x2="525" y2="390" />
+
+        <!-- From libSavitar. -->
+        <line x1="100" y1="425" x2="142.5" y2="425" />
+        <line x1="300" y1="425" x2="390" y2="425" />
+
+        <!-- From fdm_materials. -->
+        <line x1="350" y1="575" x2="390" y2="575" />
+
+        <!-- To libCharon. -->
+        <line x1="600" y1="500" x2="692.5" y2="500" />
+        <line x1="900" y1="500" x2="945" y2="500" />
+
+        <!-- To Uranium. -->
+        <line x1="500" y1="600" x2="500" y2="690" />
+    </g>
+
+    <g stroke="black" fill="none"> <!-- Boxes representing repositories. -->
+        <g stroke-width="10"> <!-- Major repositories. -->
+            <rect x="400" y="400" width="200" height="200" rx="20" /> <!-- Cura. -->
+            <rect x="350" y="700" width="300" height="200" rx="20" /> <!-- Uranium. -->
+            <rect x="300" y="5" width="400" height="195" rx="20" /> <!-- CuraEngine. -->
+        </g>
+        <g stroke-width="5"> <!-- Minor repositories. -->
+            <rect x="150" y="350" width="150" height="100" rx="20" /> <!-- libSavitar. -->
+            <rect x="100" y="550" width="250" height="100" rx="20" /> <!-- fdm_materials. -->
+            <rect x="430" y="250" width="140" height="50" rx="20" /> <!-- libArcus. -->
+            <rect x="700" y="450" width="200" height="100" rx="20" /> <!-- libCharon. -->
+        </g>
+    </g>
+
+    <g font-family="sans-serif" text-anchor="middle" dominant-baseline="middle"> <!-- Labels. -->
+        <g font-size="50"> <!-- Major repositories. -->
+            <text x="500" y="500">Cura</text>
+            <text x="500" y="800">Uranium</text>
+            <text x="500" y="102.5">CuraEngine</text>
+        </g>
+        <g font-size="25"> <!-- Minor repositories and arrows. -->
+            <text x="225" y="400">libSavitar</text>
+            <text x="225" y="600">fdm_materials</text>
+            <text x="500" y="275">libArcus</text>
+            <text x="800" y="500">libCharon</text>
+
+            <g text-anchor="start">
+                <text x="645" y="490" transform="rotate(-90, 645, 490)">G-code</text>
+                <text x="950" y="500">UFP</text>
+                <text x="535" y="345">G-code</text>
+                <text x="345" y="415" transform="rotate(-90, 345, 415)">Model</text>
+                <text x="510" y="645">Built upon</text>
+            </g>
+            <g text-anchor="end">
+                <text x="465" y="345">Scene</text>
+                <text x="90" y="425">3MF</text>
+            </g>
+        </g>
+    </g>
+</svg>