1
0
mirror of https://github.com/octoleo/plantuml.git synced 2024-10-31 19:22:31 +00:00

Integration of themes from Brett Schwarz

This commit is contained in:
Arnaud Roques 2021-05-01 19:40:56 +02:00
parent fcf10ee0a9
commit f1d83b484c
66 changed files with 9517 additions and 239 deletions

View File

@ -76,6 +76,11 @@
<include name="**/*.skin" /> <include name="**/*.skin" />
</fileset> </fileset>
</copy> </copy>
<copy todir="build/themes">
<fileset dir="themes">
<include name="**/*.puml" />
</fileset>
</copy>
<copy todir="build/svg"> <copy todir="build/svg">
<fileset dir="svg"> <fileset dir="svg">
<include name="**/*.js" /> <include name="**/*.js" />

View File

@ -35,7 +35,7 @@
<groupId>net.sourceforge.plantuml</groupId> <groupId>net.sourceforge.plantuml</groupId>
<artifactId>plantuml</artifactId> <artifactId>plantuml</artifactId>
<version>1.2021.6-SNAPSHOT</version> <version>1.2021.5-SNAPSHOT</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>PlantUML</name> <name>PlantUML</name>
@ -145,6 +145,7 @@
<includes> <includes>
<include>stdlib/**/*.repx</include> <include>stdlib/**/*.repx</include>
<include>skin/**/*.skin</include> <include>skin/**/*.skin</include>
<include>themes/**/*.puml</include>
<include>svg/**/*.css</include> <include>svg/**/*.css</include>
<include>svg/**/*.js</include> <include>svg/**/*.js</include>
</includes> </includes>

View File

@ -46,6 +46,6 @@ public interface Dedication {
static public final BigInteger N = new BigInteger( static public final BigInteger N = new BigInteger(
"64194259632025692228025828504368542164501926620236990850309916606915924860847417702229807236946186163298479808527077315212362810246237044147835839820235668271044023359607622658694578433933680627840319408427732468918341837133798296090069295727323673222224923200718714534955390633175683720810506099934813509605263799234445827953809462431871169282281822048299576307847441008670575692934434087522877910989584374673170522742162366773143807761599862833698229067475807108264396251702152180676841544743258182370105404479387062985271422237607462447989728490398294623785717593446941673706569352249533885603771123718557406286501161336667835919957553680522213067630956498293529840163155604109185561515875171125161872265975088797712442352939352686113608345330266855433849127812528823634773975825170679786399199082599910532761710473383280738663105826045325480095451410448217715495894688594898541182351588505292424154550388343455540760277051977859647543838445735549451966254020972172982014944475678385523833120793348365125754234511467512831686599126674298367512469557219326026525667529348508876650236597163509336304607610284488623800062157659286940214435134423619711736992281071131245654755167288438258292694799131521268600284444731890784171372171309"); "64194259632025692228025828504368542164501926620236990850309916606915924860847417702229807236946186163298479808527077315212362810246237044147835839820235668271044023359607622658694578433933680627840319408427732468918341837133798296090069295727323673222224923200718714534955390633175683720810506099934813509605263799234445827953809462431871169282281822048299576307847441008670575692934434087522877910989584374673170522742162366773143807761599862833698229067475807108264396251702152180676841544743258182370105404479387062985271422237607462447989728490398294623785717593446941673706569352249533885603771123718557406286501161336667835919957553680522213067630956498293529840163155604109185561515875171125161872265975088797712442352939352686113608345330266855433849127812528823634773975825170679786399199082599910532761710473383280738663105826045325480095451410448217715495894688594898541182351588505292424154550388343455540760277051977859647543838445735549451966254020972172982014944475678385523833120793348365125754234511467512831686599126674298367512469557219326026525667529348508876650236597163509336304607610284488623800062157659286940214435134423619711736992281071131245654755167288438258292694799131521268600284444731890784171372171309");
public BufferedImage getImage(String sentence); public BufferedImage getImage(TinyHashableString sentence);
} }

View File

@ -58,27 +58,28 @@ public class DedicationCrypted implements Dedication {
this.tinyHash = tinyHash; this.tinyHash = tinyHash;
} }
public synchronized BufferedImage getImage(final String sentence) { public synchronized BufferedImage getImage(final TinyHashableString sentence) {
if (sentence.length() < 40) { final String line = sentence.getSentence();
if (line.length() < 40) {
return null; return null;
} }
try { try {
if (solution == null || sentence.equals(this.solution) == false) { if (solution == null || line.equals(this.solution) == false) {
if (System.currentTimeMillis() < next) { if (System.currentTimeMillis() < next) {
return null; return null;
} }
final int tinyHash = Noise.shortHash(sentence.getBytes("UTF-8"), N.toByteArray()); if (this.tinyHash != sentence.tinyHash()) {
if (this.tinyHash != tinyHash) {
return null; return null;
} }
this.next = System.currentTimeMillis() + 5000L; this.next = System.currentTimeMillis() + 5000L;
} }
final byte[] hash1 = Noise.computeArgon2bytes(sentence.getBytes("UTF-8"), final byte[] hash1 = Noise.computeArgon2bytes(line.getBytes("UTF-8"),
(pq.toString(35) + sentence).getBytes("UTF-8")); (pq.toString(35) + line).getBytes("UTF-8"));
final byte[] hash2 = Noise.computeArgon2bytes(sentence.getBytes("UTF-8"), final byte[] hash2 = Noise.computeArgon2bytes(line.getBytes("UTF-8"),
(pq.toString(36) + sentence).getBytes("UTF-8")); (pq.toString(36) + line).getBytes("UTF-8"));
final BlumBlumShub rndBBS = new BlumBlumShub(pq, hash1); final BlumBlumShub rndBBS = new BlumBlumShub(pq, hash1);
final MTRandom rndMT = new MTRandom(hash2); final MTRandom rndMT = new MTRandom(hash2);
@ -86,7 +87,7 @@ public class DedicationCrypted implements Dedication {
byte[] current = crypted.clone(); byte[] current = crypted.clone();
Noise.shuffle(current, rndMT); Noise.shuffle(current, rndMT);
Noise.xor(current, rndBBS); Noise.xor(current, rndBBS);
Noise.xor(current, sentence.getBytes("UTF-8")); Noise.xor(current, line.getBytes("UTF-8"));
Noise.shuffle(current, rndMT); Noise.shuffle(current, rndMT);
@ -98,7 +99,7 @@ public class DedicationCrypted implements Dedication {
Noise.shuffle(current, rndMT); Noise.shuffle(current, rndMT);
Noise.xor(current, rndBBS); Noise.xor(current, rndBBS);
final String argon = Noise.computeArgon2String(current, (pq.toString(34) + sentence).getBytes("UTF-8")); final String argon = Noise.computeArgon2String(current, (pq.toString(34) + line).getBytes("UTF-8"));
if (this.argon2.equals(argon) == false) { if (this.argon2.equals(argon) == false) {
return null; return null;
@ -107,7 +108,7 @@ public class DedicationCrypted implements Dedication {
current = Noise.reverse(current, rndMT.nextInt()); current = Noise.reverse(current, rndMT.nextInt());
final BufferedImage img = PSystemDedication.getBufferedImage(new ByteArrayInputStream(current)); final BufferedImage img = PSystemDedication.getBufferedImage(new ByteArrayInputStream(current));
this.solution = sentence; this.solution = line;
return img; return img;
} catch (Throwable t) { } catch (Throwable t) {
t.printStackTrace(); t.printStackTrace();

View File

@ -48,8 +48,8 @@ public class DedicationSimple implements Dedication {
this.sentence = sentence; this.sentence = sentence;
} }
public synchronized BufferedImage getImage(String sentence) { public synchronized BufferedImage getImage(TinyHashableString sentence) {
if (same(this.sentence, sentence) == false) { if (same(this.sentence, sentence.getSentence()) == false) {
return null; return null;
} }

View File

@ -50,7 +50,6 @@ public class Dedications {
private static final List<Dedication> all = new ArrayList<Dedication>(); private static final List<Dedication> all = new ArrayList<Dedication>();
static { static {
try { try {
all.add(new DedicationSimple(load("dedication"), "Write your own dedication!")); all.add(new DedicationSimple(load("dedication"), "Write your own dedication!"));
all.add(new DedicationSimple(load("linux_china"), "linux_china")); all.add(new DedicationSimple(load("linux_china"), "linux_china"));
@ -62,8 +61,8 @@ public class Dedications {
"1182423723677118831606503500858825217076578422970565964857326298418401529955036896808663335300684244453386039908536275400945824932191521017102701344437753036730900076162922741167523337650578479960119614237031234925702200473053235777"))); "1182423723677118831606503500858825217076578422970565964857326298418401529955036896808663335300684244453386039908536275400945824932191521017102701344437753036730900076162922741167523337650578479960119614237031234925702200473053235777")));
all.add(secret(3, "514816d583044efbd336882227deb822194ff63e3bdc3cf707a01f17770d5a6a", new BigInteger( all.add(secret(3, "514816d583044efbd336882227deb822194ff63e3bdc3cf707a01f17770d5a6a", new BigInteger(
"538955952645999836068094511687012232127213955837942782605199622268460518023083462090291844640318324475656060087513198129259364840841077651829017347845508167869708224054456044836844382437974410757740941102771969965334031780041648873"))); "538955952645999836068094511687012232127213955837942782605199622268460518023083462090291844640318324475656060087513198129259364840841077651829017347845508167869708224054456044836844382437974410757740941102771969965334031780041648873")));
} catch (IOException e) { } catch (Throwable t) {
e.printStackTrace(); t.printStackTrace();
} }
} }
@ -82,8 +81,9 @@ public class Dedications {
} }
public synchronized static BufferedImage get(String line) { public synchronized static BufferedImage get(String line) {
final TinyHashableString sentence = new TinyHashableString(line);
for (Dedication dedication : all) { for (Dedication dedication : all) {
final BufferedImage image = dedication.getImage(line); final BufferedImage image = dedication.getImage(sentence);
if (image != null) { if (image != null) {
return image; return image;
} }

View File

@ -0,0 +1,61 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2020, Arnaud Roques
*
* Project Info: http://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* http://plantuml.com/patreon (only 1$ per month!)
* http://plantuml.com/paypal
*
* This file is part of PlantUML.
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PlantUML distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
* License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
*
* Original Author: Arnaud Roques
*
*
*/
package net.sourceforge.plantuml.dedication;
import java.io.UnsupportedEncodingException;
public final class TinyHashableString {
private final String sentence;
private int cachedTinyHash = -1;
public TinyHashableString(String sentence) {
this.sentence = sentence;
}
public final String getSentence() {
return sentence;
}
public final synchronized int tinyHash() throws UnsupportedEncodingException {
if (cachedTinyHash == -1) {
cachedTinyHash = Noise.shortHash(sentence.getBytes("UTF-8"), Dedication.N.toByteArray());
}
return cachedTinyHash;
}
}

View File

@ -69,28 +69,28 @@ public class PSystemDonors extends PlainDiagram {
private static final int COLS = 6; private static final int COLS = 6;
private static final int FREE_LINES = 6; private static final int FREE_LINES = 6;
public static final String DONORS = "6sWD0AmFkBap0wp4H6CjU-RENbb-8cPf4i7oFA4uiOZJNK3y0UwT7lSRwI-YAxltJJEYrckJSaPHV13q" public static final String DONORS = "6vOD0AmFkBap0wp4H6CjU-RENbb-8cPf4i7oFA4uiOZJNK3y0UwT7lSRwI-YAxltJJEYrckJSaPHV13q"
+ "W7UtXVQXzBy-27EYV0Z-tGWU80D4ITH6jIptfDXjcof3Il3lEr_v9UWTth51eZbAgyMHwq-_8GFlEsFp" + "W7UtXVQXzBy-27EYV0Z-tGWU80D4ITH6jIptfDXjcof3Il3lEr_v9UWTth51eZbAgyMHwq-_8GFlEsFp"
+ "x3GsNZsQe2y2FmRsrVzTJelBGo7Cqcm5Hc3KQOHRtMF_7mLLrwXs9rN3JZ-cKxagXgkYAh7PzgQ8LjBS" + "x3GsNZsQe2y2FmRsrR-VEbkNgqAOfRiL685HqGYNCPbxlHVLei9NiFDHmqu_fbCfgiEXMfNOR7jJH2jf"
+ "CIlKjVDHeyb5CMafKjoja8RRw4neoCdi4sI31eqVweVmPdE5fOmpWJZQ4A7hwxqT-quilr3YWyWHOe7X" + "xfWLwjlvgDNaeXWfHKgW5T8869q9ZJcPVP9iqA3nI_qGtcoki9Hn9X176o9qVRstSz-9vHT9V33oXbXW"
+ "WJcGSbWMKUBSKD1m262ecqKrjgHopnCZAFpGGjxyeP5KF5BEd0uN3QS7GE3s32gGz44Dcd1sw6v0nP5i" + "hC0SI3ao5b7qt53Gy0fWg9z5DRQqSi-JL53aG0jvyuz6Kl58ENCwN3Hy7W11m3EeGD87DMh2sSBTW4eY"
+ "qM69gwwC6qlpTLYUoXv9myt4mic2La0DGVu7NU3fiSP7KsVR38wadYPvdROIzMVYxRJD1NsZQvE4zRMr" + "sQBJ4bUT7JUMbkkmFAMFfE7fnCB7WbP03K6IWoxmz5ZZewcpRGP7Ka-Jl4vRXVepunsqpGLzOskJXFMr"
+ "QQQFAqLP8jMrZS_HNlC8mDrIAw_uCkQ8vm3DVlEg8giVBP0VWUwh2LloPzdlB2GXh6tO1-ewLnyULOHZ" + "lMdcZ2j1MIBLjOtFqLxp2C3TKYkl-3BcYEO0pNxpgYAh7osG7u4UgWbRycVPxonaGrZRi0_KTQuvFAe8"
+ "CcIQMCVlPjjhsIzq1IORaB02BEdlXgyhJN2mXQvS7W6Uq2gcMUS3XRIqUh_eyMNjFk6QOebxuwBtCS9I" + "9sJ8DB5Etissr_GNkhZ91YMi08lydl9rjWaEjj3LaaU09xHAQDRvH24jhTulUdnPkq-ufaJYtgZeVOom"
+ "-kzNVPWPYWDqeCmiw9e5Yt8rhTgBBOXWZz2f0JU5P2ESLzVbkFguI1_v2O2ta16GmuRG2F7yaahNKGZL" + "bFxxLHzcXk807Imp2xhfWcLmDQqwYYs8O8_GYG4tXMGZd5VNvRZwk4WV-Gc0DvKHaCE6eGdY-MKhNKSX"
+ "aQbhqbm0p9zMsgBXieH1kNP1DwDAB5HMgprELsVwiZ5td_J1yrQ3COfZEgcniDozAjB3i5WrchDtQqTf" + "L4Ucharp0R3rjD8M3Ryb32gq2xeLLIAXibhjSRewqvUDBVT97pnlDnYZEAQpDHQMkrT5UXYMg4Qplbix"
+ "Ji4p-JZEgzvpC5S1hYsyHtnmppyo46TwPI1ISiXZtuT_PEbMOJ6BDjVDgdHNzOE3Xsu-S3UBPZ6ZJ1wo" + "H7CAhl9nabUzPpvN0Qujl4TzSCy_Cg1dUcKWKdp8Oz-7VsJfLc4nItYkcrNfhke71m_TSk1k5irXHfay"
+ "B1WSJqHB_KhafoN3tq78PlbhTR5Fi3bTfuO8CxBWzjBacfeSqt2OpdAix2A4HorUSIeeN4ImbwKbsSAc" + "P1eCZYQYfNubyjEIuMyUifg_rXJx15lJTMQ8C2C9RYzDRgZ9CGslwIp7nIv2PAh5AqxnmWK5UrdX95lO"
+ "K7d6wb58oE-OJo9IMHPA0zQMkmBFf7iKvE6y1rOjgrjJIIwWYcmcY4aBLhLKSQIl1J9mhQ9dfdLY-zC2" + "52hFM3qE2VcTy4b4geo5qeYrvQx2Cx97GHxEUsJLiherbUG2gincWeYqO5LB5KVwMY03rofwPbidjZyj"
+ "2-hI7cFY38VYAoRQgjoGWIamCqJuXK4afW-afVIIaqG4_kVFNUgbrphuyPqnV38EaZqa4L15ndJgYMgc" + "i60kxJ4cLXoAhvXektA3WYamCuJoXK4aAWEDKdhPaqG4_kVFNUh9jGxh-CuOFXa7oHwI2AX2cSuyKStK"
+ "xdOC6yPwYRzVB-Nc8_ZphptQvDHez_mCGRGE4W8mmWkubFk54JmD_7Ksz08EiKA8DXAkNBNqB92mO3FU" + "quvXmrYlyVVhfTny17_-jKURd9hidfyXYDP1L016U06NSdymWgU1lyw6MO13hA2YZOGhromz2IGis89t"
+ "kObwS9jHlOd9ScDoqIloGnN_DfMeS38swBY8fJXQBAdIoyrgK0Ljt_okmqqEYh-BAaCYkUpDpcGaR1Ig" + "RgBERpEQDp5PRbmkUaL-g9BVvdQuc0wnGST59CNHOacLNcvMWugtVSkx3ZSv3FnTL1aMoMMldib8o2XK"
+ "E3V7RcqOch4P0tXG7RK9jDtrsscMLuqvNv5K6Pu6vDiDEPNg4LfOKzFoiH1OBSRjlQNzbDFZFnde5zGw" + "SMwFtTemD6EL0LPG7RK9mhlhjzCihnfplWAfCbm1yjs6d4hr22sigMd5M0Yi4UFsthRzbDFZFndenskj"
+ "-zYhXuQ3N5tVRgBXMnUadp6I62vITaJGMsfEBF3mJGHvKIsKZgLjC-pimGhv3RoC5n8EsS47abfUfQno" + "7tlrq7YGg-lVJJHyEuBfvumaXelO7H76BJKd4dZu9eYyg1PAnzAE6NQUO8Ny1b_62mb7xE03crfUfQno"
+ "GmxTGlQEQfIVAAA6i40kB5ReAcAXbEE154d1dDKoaI7be2_OrnE0KnGSx-yj29UTQ7v6i_RsZ48obsxk" + "GuwnXUoTrIW_8KGD8O5SMApKLSH2ASS3APA2EQjbD4FAGLzmTay0Jb5mlB-t8PoUQ7v1i_RsZ48obsFk"
+ "9XL4DfoVHMAJagqUER2VbhbiyuhSZbgamuvzExxZVFiZwkQB2382CIq9NgiBVNTZbraQDjEUwpGuZilS" + "9HL4CfoVHMAJagq1ER0lPIxRkYAtinRfi1FVZkyut_c8klKY0YKGfIHuRIxqtOtzPcdOb9xhDJYEoxmy"
+ "F9Zy0dP5EqyPs1ecMv2bR0OgdWGWTiYWmenNyglvY6lE1VBl_KOf33JXUU8qkl5S2rQHhJOY9GrekSaI" + "cFn2TaKxNndO6YTRaELi1YgU121sKAXGUML-jHznpJb5_htVA8M19ZnFdKOtdkl0Ah8rHgIa0IqtMOHh"
+ "klRzZfkS72YSM6nmOOcvqSC4YawlKsq_QRCiWqeKBXLVsCEiPbEgV6JOGNFPQkVLzWG0"; + "t--voSc1med41XUMcXizJABez3hLZfCswycW4eLBnMJtCAlPb2eV6NRGN3PDdVO4YoM1LTrvjQ8J";
/* /*
* Special thanks to our sponsors and donors: * Special thanks to our sponsors and donors:

View File

@ -79,6 +79,7 @@ import net.sourceforge.plantuml.cucadiagram.entity.EntityFactory;
/* /*
import org.eclipse.elk.core.RecursiveGraphLayoutEngine; import org.eclipse.elk.core.RecursiveGraphLayoutEngine;
import org.eclipse.elk.core.math.ElkPadding;
import org.eclipse.elk.core.options.CoreOptions; import org.eclipse.elk.core.options.CoreOptions;
import org.eclipse.elk.core.options.Direction; import org.eclipse.elk.core.options.Direction;
import org.eclipse.elk.core.options.EdgeLabelPlacement; import org.eclipse.elk.core.options.EdgeLabelPlacement;
@ -92,6 +93,7 @@ import org.eclipse.elk.graph.util.ElkGraphUtil;
*/ */
import net.sourceforge.plantuml.elk.proxy.core.RecursiveGraphLayoutEngine; import net.sourceforge.plantuml.elk.proxy.core.RecursiveGraphLayoutEngine;
import net.sourceforge.plantuml.elk.proxy.core.math.ElkPadding;
import net.sourceforge.plantuml.elk.proxy.core.options.CoreOptions; import net.sourceforge.plantuml.elk.proxy.core.options.CoreOptions;
import net.sourceforge.plantuml.elk.proxy.core.options.Direction; import net.sourceforge.plantuml.elk.proxy.core.options.Direction;
import net.sourceforge.plantuml.elk.proxy.core.options.EdgeLabelPlacement; import net.sourceforge.plantuml.elk.proxy.core.options.EdgeLabelPlacement;
@ -406,6 +408,7 @@ public class CucaDiagramFileMakerElk implements CucaDiagramFileMaker {
// We create the "cluster" in ELK for this group // We create the "cluster" in ELK for this group
final ElkNode elkCluster = ElkGraphUtil.createNode(cluster); final ElkNode elkCluster = ElkGraphUtil.createNode(cluster);
elkCluster.setProperty(CoreOptions.DIRECTION, Direction.DOWN); elkCluster.setProperty(CoreOptions.DIRECTION, Direction.DOWN);
elkCluster.setProperty(CoreOptions.PADDING, new ElkPadding(40, 15, 15, 15));
// Not sure this is usefull to put a label on a "cluster" // Not sure this is usefull to put a label on a "cluster"
final ElkLabel label = ElkGraphUtil.createLabel(elkCluster); final ElkLabel label = ElkGraphUtil.createLabel(elkCluster);

View File

@ -0,0 +1,7 @@
package net.sourceforge.plantuml.elk.proxy;
public interface ElkObjectProxy {
public Object getTrueObject();
}

View File

@ -1,7 +0,0 @@
package net.sourceforge.plantuml.elk.proxy;
public interface EnumProxy {
public Enum getTrueObject();
}

View File

@ -100,6 +100,17 @@ public class Reflect {
} }
} }
public static Object newInstance(String className, double arg1, double arg2, double arg3, double arg4) {
try {
final Class<?> cl = Class.forName(className);
final Constructor<?> m = cl.getConstructor(Double.TYPE, Double.TYPE, Double.TYPE, Double.TYPE);
return m.newInstance(arg1, arg2, arg3, arg4);
} catch (Throwable t) {
t.printStackTrace();
throw new IllegalArgumentException(t);
}
}
public static Object field(String className, String fieldName) { public static Object field(String className, String fieldName) {
try { try {
final Class<?> cl = Class.forName(className); final Class<?> cl = Class.forName(className);

View File

@ -0,0 +1,19 @@
package net.sourceforge.plantuml.elk.proxy.core.math;
import net.sourceforge.plantuml.elk.proxy.ElkObjectProxy;
import net.sourceforge.plantuml.elk.proxy.Reflect;
public class ElkPadding implements ElkObjectProxy {
public final Object obj;
public ElkPadding(double top, double right, double bottom, double left) {
this.obj = Reflect.newInstance("org.eclipse.elk.core.math.ElkPadding", top, right, bottom, left);
}
@Override
public Object getTrueObject() {
return obj;
}
}

View File

@ -12,5 +12,6 @@ public class CoreOptions {
public static final Object EDGE_TYPE = Reflect.field("org.eclipse.elk.core.options.CoreOptions", "EDGE_TYPE"); public static final Object EDGE_TYPE = Reflect.field("org.eclipse.elk.core.options.CoreOptions", "EDGE_TYPE");
public static final Object NODE_LABELS_PLACEMENT = Reflect.field("org.eclipse.elk.core.options.CoreOptions", "NODE_LABELS_PLACEMENT"); public static final Object NODE_LABELS_PLACEMENT = Reflect.field("org.eclipse.elk.core.options.CoreOptions", "NODE_LABELS_PLACEMENT");
public static final Object NODE_SIZE_OPTIONS = Reflect.field("org.eclipse.elk.core.options.CoreOptions", "NODE_SIZE_OPTIONS"); public static final Object NODE_SIZE_OPTIONS = Reflect.field("org.eclipse.elk.core.options.CoreOptions", "NODE_SIZE_OPTIONS");
public static final Object PADDING = Reflect.field("org.eclipse.elk.core.options.CoreOptions", "PADDING");
} }

View File

@ -1,9 +1,9 @@
package net.sourceforge.plantuml.elk.proxy.core.options; package net.sourceforge.plantuml.elk.proxy.core.options;
import net.sourceforge.plantuml.elk.proxy.EnumProxy; import net.sourceforge.plantuml.elk.proxy.ElkObjectProxy;
import net.sourceforge.plantuml.elk.proxy.Reflect; import net.sourceforge.plantuml.elk.proxy.Reflect;
public enum EdgeLabelPlacement implements EnumProxy { public enum EdgeLabelPlacement implements ElkObjectProxy {
TAIL, HEAD; TAIL, HEAD;

View File

@ -1,9 +1,9 @@
package net.sourceforge.plantuml.elk.proxy.core.options; package net.sourceforge.plantuml.elk.proxy.core.options;
import net.sourceforge.plantuml.elk.proxy.EnumProxy; import net.sourceforge.plantuml.elk.proxy.ElkObjectProxy;
import net.sourceforge.plantuml.elk.proxy.Reflect; import net.sourceforge.plantuml.elk.proxy.Reflect;
public enum NodeLabelPlacement implements EnumProxy { public enum NodeLabelPlacement implements ElkObjectProxy {
INSIDE, V_CENTER, H_CENTER; INSIDE, V_CENTER, H_CENTER;

View File

@ -1,9 +1,9 @@
package net.sourceforge.plantuml.elk.proxy.core.options; package net.sourceforge.plantuml.elk.proxy.core.options;
import net.sourceforge.plantuml.elk.proxy.EnumProxy; import net.sourceforge.plantuml.elk.proxy.ElkObjectProxy;
import net.sourceforge.plantuml.elk.proxy.Reflect; import net.sourceforge.plantuml.elk.proxy.Reflect;
public enum SizeConstraint implements EnumProxy { public enum SizeConstraint implements ElkObjectProxy {
NODE_LABELS; NODE_LABELS;
@Override @Override

View File

@ -3,7 +3,7 @@ package net.sourceforge.plantuml.elk.proxy.graph;
import java.util.Collection; import java.util.Collection;
import java.util.EnumSet; import java.util.EnumSet;
import net.sourceforge.plantuml.elk.proxy.EnumProxy; import net.sourceforge.plantuml.elk.proxy.ElkObjectProxy;
import net.sourceforge.plantuml.elk.proxy.Reflect; import net.sourceforge.plantuml.elk.proxy.Reflect;
public class ElkWithProperty { public class ElkWithProperty {
@ -32,15 +32,15 @@ public class ElkWithProperty {
if (value instanceof EnumSet) { if (value instanceof EnumSet) {
EnumSet result = null; EnumSet result = null;
for (Object foo : (Collection) value) { for (Object foo : (Collection) value) {
final EnumProxy elk = (EnumProxy) foo; final ElkObjectProxy elk = (ElkObjectProxy) foo;
if (result == null) { if (result == null) {
result = EnumSet.noneOf((Class) elk.getClass()); result = EnumSet.noneOf((Class) elk.getClass());
} }
result.add(elk); result.add(elk);
} }
Reflect.call2(obj, "setProperty", key, result); Reflect.call2(obj, "setProperty", key, result);
} else if (value instanceof EnumProxy) { } else if (value instanceof ElkObjectProxy) {
final Enum elk = ((EnumProxy) value).getTrueObject(); final Object elk = ((ElkObjectProxy) value).getTrueObject();
Reflect.call2(obj, "setProperty", key, elk); Reflect.call2(obj, "setProperty", key, elk);
} else { } else {
Reflect.call2(obj, "setProperty", key, value); Reflect.call2(obj, "setProperty", key, value);

View File

@ -90,6 +90,17 @@ public class PreprocessorUtils {
return result; return result;
} }
public static ReadLine getReaderTheme(StringLocated s, String filename) {
Log.info("Loading theme " + filename);
final String res = "/themes/puml-theme-" + filename + ".puml";
final String description = "<" + res + ">";
final InputStream is = Stdlib.class.getResourceAsStream(res);
if (is == null) {
return null;
}
return ReadLineReader.create(new InputStreamReader(is), description);
}
public static ReadLine getReaderStdlibInclude(StringLocated s, String filename) { public static ReadLine getReaderStdlibInclude(StringLocated s, String filename) {
Log.info("Loading sdlib " + filename); Log.info("Loading sdlib " + filename);
InputStream is = getStdlibInputStream(filename); InputStream is = getStdlibInputStream(filename);

View File

@ -43,7 +43,6 @@ import net.sourceforge.plantuml.project.core.TaskAttribute;
import net.sourceforge.plantuml.project.core.TaskInstant; import net.sourceforge.plantuml.project.core.TaskInstant;
import net.sourceforge.plantuml.project.draw.TaskDraw; import net.sourceforge.plantuml.project.draw.TaskDraw;
import net.sourceforge.plantuml.project.timescale.TimeScale; import net.sourceforge.plantuml.project.timescale.TimeScale;
import net.sourceforge.plantuml.style.ClockwiseTopRightBottomLeft;
import net.sourceforge.plantuml.style.PName; import net.sourceforge.plantuml.style.PName;
import net.sourceforge.plantuml.style.SName; import net.sourceforge.plantuml.style.SName;
import net.sourceforge.plantuml.style.Style; import net.sourceforge.plantuml.style.Style;

View File

@ -118,6 +118,7 @@ public class GanttDiagram extends TitledDiagram implements ToTaskDraw, WithSprit
private final Map<Day, HColor> colorDays = new HashMap<Day, HColor>(); private final Map<Day, HColor> colorDays = new HashMap<Day, HColor>();
private final Map<DayOfWeek, HColor> colorDaysOfWeek = new HashMap<DayOfWeek, HColor>(); private final Map<DayOfWeek, HColor> colorDaysOfWeek = new HashMap<DayOfWeek, HColor>();
private final Map<Day, String> nameDays = new HashMap<Day, String>(); private final Map<Day, String> nameDays = new HashMap<Day, String>();
private LabelStrategy labelStrategy = LabelStrategy.LEGACY;
// Let's follow ISO-8601 rules // Let's follow ISO-8601 rules
private WeekNumberStrategy weekNumberStrategy = new WeekNumberStrategy(DayOfWeek.MONDAY, 4); private WeekNumberStrategy weekNumberStrategy = new WeekNumberStrategy(DayOfWeek.MONDAY, 4);
@ -218,6 +219,8 @@ public class GanttDiagram extends TitledDiagram implements ToTaskDraw, WithSprit
public void drawU(UGraphic ug) { public void drawU(UGraphic ug) {
try { try {
final UGraphic ugOrig = ug;
ug = ug.apply(UTranslate.dx(getLeftColumnWidth(ug.getStringBounder())));
final Style timelineStyle = StyleSignature final Style timelineStyle = StyleSignature
.of(SName.root, SName.element, SName.ganttDiagram, SName.timeline) .of(SName.root, SName.element, SName.ganttDiagram, SName.timeline)
.getMergedStyle(getCurrentStyleBuilder()); .getMergedStyle(getCurrentStyleBuilder());
@ -236,7 +239,7 @@ public class GanttDiagram extends TitledDiagram implements ToTaskDraw, WithSprit
drawConstraints(ug, timeHeader.getTimeScale()); drawConstraints(ug, timeHeader.getTimeScale());
drawTasksRect(ug); drawTasksRect(ug);
drawTasksTitle(ug); drawTasksTitle(ugOrig, getLeftColumnWidth(ug.getStringBounder()));
drawResources(ug); drawResources(ug);
if (showFootbox) { if (showFootbox) {
timeHeader.drawTimeFooter(ug.apply(UTranslate.dy(totalHeightWithoutFooter))); timeHeader.drawTimeFooter(ug.apply(UTranslate.dy(totalHeightWithoutFooter)));
@ -249,6 +252,13 @@ public class GanttDiagram extends TitledDiagram implements ToTaskDraw, WithSprit
} }
} }
private double getLeftColumnWidth(StringBounder stringBounder) {
if (labelStrategy == LabelStrategy.LEGACY) {
return 0;
}
return getLeftColumnWidthInternal(stringBounder);
}
public Rectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) { public Rectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
return null; return null;
} }
@ -256,7 +266,8 @@ public class GanttDiagram extends TitledDiagram implements ToTaskDraw, WithSprit
public Dimension2D calculateDimension(StringBounder stringBounder) { public Dimension2D calculateDimension(StringBounder stringBounder) {
final double xmin = timeHeader.getTimeScale().getStartingPosition(min); final double xmin = timeHeader.getTimeScale().getStartingPosition(min);
final double xmax = timeHeader.getTimeScale().getEndingPosition(max); final double xmax = timeHeader.getTimeScale().getEndingPosition(max);
return new Dimension2DDouble(xmax - xmin, getTotalHeight(timeHeader)); return new Dimension2DDouble(getLeftColumnWidth(stringBounder) + xmax - xmin,
getTotalHeight(timeHeader));
} }
public MinMax getMinMax(StringBounder stringBounder) { public MinMax getMinMax(StringBounder stringBounder) {
@ -327,14 +338,26 @@ public class GanttDiagram extends TitledDiagram implements ToTaskDraw, WithSprit
return StyleSignature.of(SName.root, SName.element, SName.ganttDiagram, SName.arrow); return StyleSignature.of(SName.root, SName.element, SName.ganttDiagram, SName.arrow);
} }
private void drawTasksTitle(final UGraphic ug1) { private double getLeftColumnWidthInternal(StringBounder stringBounder) {
double width = 0;
for (Task task : tasks.values()) { for (Task task : tasks.values()) {
if (isHidden(task)) { if (isHidden(task)) {
continue; continue;
} }
final TaskDraw draw = draws.get(task); final TaskDraw draw = draws.get(task);
final UTranslate move = UTranslate.dy(draw.getY(ug1.getStringBounder())); width = Math.max(width, draw.getTitleWidth(stringBounder));
draw.drawTitle(ug1.apply(move)); }
return width;
}
private void drawTasksTitle(UGraphic ug, double leftColumnWidth) {
for (Task task : tasks.values()) {
if (isHidden(task)) {
continue;
}
final TaskDraw draw = draws.get(task);
final UTranslate move = UTranslate.dy(draw.getY(ug.getStringBounder()));
draw.drawTitle(ug.apply(move), labelStrategy, leftColumnWidth);
} }
} }
@ -596,14 +619,10 @@ public class GanttDiagram extends TitledDiagram implements ToTaskDraw, WithSprit
} }
public Day getStartingDate() { public Day getStartingDate() {
return openClose.getCalendar();
}
public Day getStartingDate(int nday) {
if (openClose.getCalendar() == null) { if (openClose.getCalendar() == null) {
return null; return min;
} }
return openClose.getCalendar().addDays(nday); return openClose.getCalendar();
} }
public int daysInWeek() { public int daysInWeek() {
@ -757,4 +776,8 @@ public class GanttDiagram extends TitledDiagram implements ToTaskDraw, WithSprit
return ClockwiseTopRightBottomLeft.none(); return ClockwiseTopRightBottomLeft.none();
} }
public void labelOnFirstColumn() {
this.labelStrategy = LabelStrategy.LEFT_COLUMN;
}
} }

View File

@ -48,6 +48,7 @@ import net.sourceforge.plantuml.project.command.CommandColorTask;
import net.sourceforge.plantuml.project.command.CommandFootbox; import net.sourceforge.plantuml.project.command.CommandFootbox;
import net.sourceforge.plantuml.project.command.CommandGanttArrow; import net.sourceforge.plantuml.project.command.CommandGanttArrow;
import net.sourceforge.plantuml.project.command.CommandGanttArrow2; import net.sourceforge.plantuml.project.command.CommandGanttArrow2;
import net.sourceforge.plantuml.project.command.CommandLabelOnFirstColumn;
import net.sourceforge.plantuml.project.command.CommandNoteBottom; import net.sourceforge.plantuml.project.command.CommandNoteBottom;
import net.sourceforge.plantuml.project.command.CommandPage; import net.sourceforge.plantuml.project.command.CommandPage;
import net.sourceforge.plantuml.project.command.CommandPrintBetween; import net.sourceforge.plantuml.project.command.CommandPrintBetween;
@ -105,6 +106,7 @@ public class GanttDiagramFactory extends PSystemCommandFactory {
cmds.add(new CommandPage()); cmds.add(new CommandPage());
cmds.add(new CommandNoteBottom()); cmds.add(new CommandNoteBottom());
cmds.add(new CommandFootbox()); cmds.add(new CommandFootbox());
cmds.add(new CommandLabelOnFirstColumn());
// cmds.add(new CommandScaleWidthAndHeight()); // cmds.add(new CommandScaleWidthAndHeight());
// cmds.add(new CommandScaleWidthOrHeight()); // cmds.add(new CommandScaleWidthOrHeight());

View File

@ -0,0 +1,42 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2020, Arnaud Roques
*
* Project Info: http://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* http://plantuml.com/patreon (only 1$ per month!)
* http://plantuml.com/paypal
*
* This file is part of PlantUML.
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PlantUML distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
* License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
*
* Original Author: Arnaud Roques
*
*
*/
package net.sourceforge.plantuml.project;
public enum LabelStrategy {
LEGACY, LEFT_COLUMN
}

View File

@ -33,47 +33,38 @@
* *
* *
*/ */
package net.sourceforge.plantuml.wbs; package net.sourceforge.plantuml.project.command;
import net.sourceforge.plantuml.Direction;
import net.sourceforge.plantuml.LineLocation; import net.sourceforge.plantuml.LineLocation;
import net.sourceforge.plantuml.command.CommandExecutionResult; import net.sourceforge.plantuml.command.CommandExecutionResult;
import net.sourceforge.plantuml.command.SingleLineCommand2; import net.sourceforge.plantuml.command.SingleLineCommand2;
import net.sourceforge.plantuml.command.regex.IRegex; import net.sourceforge.plantuml.command.regex.IRegex;
import net.sourceforge.plantuml.command.regex.RegexConcat; import net.sourceforge.plantuml.command.regex.RegexConcat;
import net.sourceforge.plantuml.command.regex.RegexLeaf; import net.sourceforge.plantuml.command.regex.RegexLeaf;
import net.sourceforge.plantuml.command.regex.RegexOptional;
import net.sourceforge.plantuml.command.regex.RegexResult; import net.sourceforge.plantuml.command.regex.RegexResult;
import net.sourceforge.plantuml.mindmap.IdeaShape; import net.sourceforge.plantuml.project.GanttDiagram;
import net.sourceforge.plantuml.ugraphic.color.HColor;
import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException;
public class CommandWBSPlus extends SingleLineCommand2<WBSDiagram> { public class CommandLabelOnFirstColumn extends SingleLineCommand2<GanttDiagram> {
public CommandWBSPlus() { public CommandLabelOnFirstColumn() {
super(false, getRegexConcat()); super(getRegexConcat());
} }
static IRegex getRegexConcat() { static IRegex getRegexConcat() {
return RegexConcat.build(CommandWBSPlus.class.getName(), RegexLeaf.start(), // return RegexConcat.build(CommandLabelOnFirstColumn.class.getName(), RegexLeaf.start(), //
new RegexLeaf("TYPE", "([+-]+)"), // new RegexLeaf("labels?"), //
new RegexOptional(new RegexLeaf("BACKCOLOR", "\\[(#\\w+)\\]")), //
new RegexLeaf("SHAPE", "(_)?"), //
RegexLeaf.spaceOneOrMore(), // RegexLeaf.spaceOneOrMore(), //
new RegexLeaf("LABEL", "([^%s].*)"), RegexLeaf.end()); new RegexLeaf("on"), //
RegexLeaf.spaceZeroOrMore(), //
new RegexLeaf("first"), //
RegexLeaf.spaceZeroOrMore(), //
new RegexLeaf("column"), RegexLeaf.end()); //
} }
@Override @Override
protected CommandExecutionResult executeArg(WBSDiagram diagram, LineLocation location, RegexResult arg) throws NoSuchColorException { protected CommandExecutionResult executeArg(GanttDiagram diagram, LineLocation location, RegexResult arg) {
final String type = arg.get("TYPE", 0); diagram.labelOnFirstColumn();
final String label = arg.get("LABEL", 0); return CommandExecutionResult.ok();
final Direction dir = type.contains("-") ? Direction.LEFT : Direction.RIGHT;
final String stringColor = arg.get("BACKCOLOR", 0);
HColor backColor = null;
if (stringColor != null) {
backColor = diagram.getSkinParam().getIHtmlColorSet().getColor(stringColor);
}
return diagram.addIdea(backColor, type.length() - 1, label, dir, IdeaShape.fromDesc(arg.get("SHAPE", 0)));
} }
} }

View File

@ -41,6 +41,7 @@ import net.sourceforge.plantuml.Url;
import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration; import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.StringBounder; import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.project.ToTaskDraw; import net.sourceforge.plantuml.project.ToTaskDraw;
import net.sourceforge.plantuml.project.core.Task; import net.sourceforge.plantuml.project.core.Task;
import net.sourceforge.plantuml.project.lang.CenterBorderColor; import net.sourceforge.plantuml.project.lang.CenterBorderColor;
@ -110,6 +111,15 @@ public abstract class AbstractTaskDraw implements TaskDraw {
final protected Style getStyle() { final protected Style getStyle() {
return getStyleSignature().getMergedStyle(styleBuilder); return getStyleSignature().getMergedStyle(styleBuilder);
} }
final public double getTitleWidth(StringBounder stringBounder) {
final Style style = getStyleSignature().getMergedStyle(getStyleBuilder());
final ClockwiseTopRightBottomLeft margin = style.getMargin();
return margin.getLeft() + getTitle().calculateDimension(stringBounder).getWidth() + margin.getRight();
}
protected abstract TextBlock getTitle();
abstract protected double getShapeHeight(StringBounder stringBounder); abstract protected double getShapeHeight(StringBounder stringBounder);

View File

@ -40,6 +40,7 @@ import net.sourceforge.plantuml.Url;
import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.StringBounder; import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.UDrawable; import net.sourceforge.plantuml.graphic.UDrawable;
import net.sourceforge.plantuml.project.LabelStrategy;
import net.sourceforge.plantuml.project.core.Task; import net.sourceforge.plantuml.project.core.Task;
import net.sourceforge.plantuml.project.core.TaskAttribute; import net.sourceforge.plantuml.project.core.TaskAttribute;
import net.sourceforge.plantuml.project.lang.CenterBorderColor; import net.sourceforge.plantuml.project.lang.CenterBorderColor;
@ -56,8 +57,10 @@ public interface TaskDraw extends UDrawable {
public double getY(StringBounder stringBounder, Direction direction); public double getY(StringBounder stringBounder, Direction direction);
public void pushMe(double deltaY); public void pushMe(double deltaY);
public void drawTitle(UGraphic ug, LabelStrategy labelStrategy, double leftColumnWidth);
public void drawTitle(UGraphic ug); public double getTitleWidth(StringBounder stringBounder);
public double getFullHeightTask(StringBounder stringBounder); public double getFullHeightTask(StringBounder stringBounder);
@ -73,5 +76,4 @@ public interface TaskDraw extends UDrawable {
public double getX2(TaskAttribute taskAttribute); public double getX2(TaskAttribute taskAttribute);
} }

View File

@ -41,6 +41,7 @@ import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.HorizontalAlignment; import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.StringBounder; import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.TextBlock; import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.project.LabelStrategy;
import net.sourceforge.plantuml.project.ToTaskDraw; import net.sourceforge.plantuml.project.ToTaskDraw;
import net.sourceforge.plantuml.project.core.Task; import net.sourceforge.plantuml.project.core.Task;
import net.sourceforge.plantuml.project.core.TaskAttribute; import net.sourceforge.plantuml.project.core.TaskAttribute;
@ -84,28 +85,40 @@ public class TaskDrawDiamond extends AbstractTaskDraw {
} }
final public void drawTitle(UGraphic ug) { @Override
final public void drawTitle(UGraphic ug, LabelStrategy labelStrategy, double leftColumnWidth) {
final Style style = getStyle(); final Style style = getStyle();
final ClockwiseTopRightBottomLeft margin = style.getMargin(); final ClockwiseTopRightBottomLeft margin = style.getMargin();
final ClockwiseTopRightBottomLeft padding = style.getPadding(); final ClockwiseTopRightBottomLeft padding = style.getPadding();
final TextBlock title = getTitle();
ug = ug.apply(UTranslate.dy(margin.getTop())); ug = ug.apply(UTranslate.dy(margin.getTop()));
final TextBlock title = Display.getWithNewlines(prettyDisplay).create(getFontConfiguration(),
HorizontalAlignment.LEFT, new SpriteContainerEmpty());
final StringBounder stringBounder = ug.getStringBounder(); final StringBounder stringBounder = ug.getStringBounder();
final double titleHeight = title.calculateDimension(stringBounder).getHeight(); final double titleHeight = title.calculateDimension(stringBounder).getHeight();
final double h = (getShapeHeight(stringBounder) - titleHeight) / 2; final double h = (getShapeHeight(stringBounder) - titleHeight) / 2;
final double x1 = timeScale.getStartingPosition(start); final double x;
final double x2 = timeScale.getEndingPosition(start); if (labelStrategy == LabelStrategy.LEFT_COLUMN) {
final double width = getShapeHeight(ug.getStringBounder()); x = margin.getLeft();
final double delta = x2 - x1 - width; } else {
final double x1 = timeScale.getStartingPosition(start);
final double x = x2 - delta / 2 + padding.getLeft(); final double x2 = timeScale.getEndingPosition(start);
final double width = getShapeHeight(ug.getStringBounder());
final double delta = x2 - x1 - width;
x = x2 - delta / 2 + padding.getLeft();
}
title.drawU(ug.apply(new UTranslate(x, h))); title.drawU(ug.apply(new UTranslate(x, h)));
} }
@Override
protected TextBlock getTitle() {
return Display.getWithNewlines(prettyDisplay).create(getFontConfiguration(), HorizontalAlignment.LEFT,
new SpriteContainerEmpty());
}
public void drawU(UGraphic ug) { public void drawU(UGraphic ug) {
final Style style = getStyle(); final Style style = getStyle();

View File

@ -53,6 +53,7 @@ import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.StringBounder; import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.TextBlock; import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.project.GanttConstraint; import net.sourceforge.plantuml.project.GanttConstraint;
import net.sourceforge.plantuml.project.LabelStrategy;
import net.sourceforge.plantuml.project.ToTaskDraw; import net.sourceforge.plantuml.project.ToTaskDraw;
import net.sourceforge.plantuml.project.core.Task; import net.sourceforge.plantuml.project.core.Task;
import net.sourceforge.plantuml.project.core.TaskAttribute; import net.sourceforge.plantuml.project.core.TaskAttribute;
@ -111,19 +112,26 @@ public class TaskDrawRegular extends AbstractTaskDraw {
protected double getShapeHeight(StringBounder stringBounder) { protected double getShapeHeight(StringBounder stringBounder) {
final Style style = getStyle(); final Style style = getStyle();
final ClockwiseTopRightBottomLeft padding = style.getPadding(); final ClockwiseTopRightBottomLeft padding = style.getPadding();
return padding.getTop() + getTextBlock().calculateDimension(stringBounder).getHeight() + padding.getBottom(); return padding.getTop() + getTitle().calculateDimension(stringBounder).getHeight() + padding.getBottom();
} }
public void drawTitle(UGraphic ug) { @Override
final TextBlock title = getTextBlock(); public void drawTitle(UGraphic ug, LabelStrategy labelStrategy, double leftColumnWidth) {
final TextBlock title = getTitle();
final StringBounder stringBounder = ug.getStringBounder(); final StringBounder stringBounder = ug.getStringBounder();
final Dimension2D dim = title.calculateDimension(stringBounder); final Dimension2D dim = title.calculateDimension(stringBounder);
final Style style = getStyleSignature().getMergedStyle(getStyleBuilder()); final Style style = getStyleSignature().getMergedStyle(getStyleBuilder());
final ClockwiseTopRightBottomLeft margin = style.getMargin(); final ClockwiseTopRightBottomLeft margin = style.getMargin();
final ClockwiseTopRightBottomLeft padding = style.getPadding(); final ClockwiseTopRightBottomLeft padding = style.getPadding();
ug = ug.apply(UTranslate.dy(margin.getTop() + padding.getTop())); ug = ug.apply(UTranslate.dy(margin.getTop() + padding.getTop()));
if (labelStrategy == LabelStrategy.LEFT_COLUMN) {
title.drawU(ug.apply(UTranslate.dx(margin.getLeft())));
return;
}
final double pos1 = timeScale.getStartingPosition(start) + 6; final double pos1 = timeScale.getStartingPosition(start) + 6;
final double pos2 = timeScale.getEndingPosition(end) - 6; final double pos2 = timeScale.getEndingPosition(end) - 6;
final double pos; final double pos;
@ -134,7 +142,8 @@ public class TaskDrawRegular extends AbstractTaskDraw {
title.drawU(ug.apply(UTranslate.dx(pos))); title.drawU(ug.apply(UTranslate.dx(pos)));
} }
private TextBlock getTextBlock() { @Override
protected TextBlock getTitle() {
return Display.getWithNewlines(prettyDisplay).create(getFontConfiguration(), HorizontalAlignment.LEFT, return Display.getWithNewlines(prettyDisplay).create(getFontConfiguration(), HorizontalAlignment.LEFT,
new SpriteContainerEmpty()); new SpriteContainerEmpty());
} }

View File

@ -44,6 +44,7 @@ import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.StringBounder; import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.TextBlock; import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.graphic.TextBlockUtils; import net.sourceforge.plantuml.graphic.TextBlockUtils;
import net.sourceforge.plantuml.project.LabelStrategy;
import net.sourceforge.plantuml.project.core.Task; import net.sourceforge.plantuml.project.core.Task;
import net.sourceforge.plantuml.project.core.TaskAttribute; import net.sourceforge.plantuml.project.core.TaskAttribute;
import net.sourceforge.plantuml.project.lang.CenterBorderColor; import net.sourceforge.plantuml.project.lang.CenterBorderColor;
@ -84,12 +85,19 @@ public class TaskDrawSeparator implements TaskDraw {
this.max = max; this.max = max;
} }
public void drawTitle(UGraphic ug) { @Override
public void drawTitle(UGraphic ug, LabelStrategy labelStrategy, double leftColumnWidth) {
final ClockwiseTopRightBottomLeft padding = getStyle().getPadding(); final ClockwiseTopRightBottomLeft padding = getStyle().getPadding();
final ClockwiseTopRightBottomLeft margin = getStyle().getMargin(); final ClockwiseTopRightBottomLeft margin = getStyle().getMargin();
final double dx = margin.getLeft() + padding.getLeft(); final double dx = margin.getLeft() + padding.getLeft();
final double dy = margin.getTop() + padding.getTop(); final double dy = margin.getTop() + padding.getTop();
getTitle().drawU(ug.apply(new UTranslate(dx, dy))); getTitle().drawU(ug.apply(new UTranslate(leftColumnWidth + dx, dy)));
}
@Override
public double getTitleWidth(StringBounder stringBounder) {
// Never used in first column
return 0;
} }
private StyleSignature getStyleSignature() { private StyleSignature getStyleSignature() {

View File

@ -108,7 +108,7 @@ public class ComplementDate implements Something {
private Day resultD(GanttDiagram system, RegexResult arg, String suffix) { private Day resultD(GanttDiagram system, RegexResult arg, String suffix) {
final int day = Integer.parseInt(arg.get("DCOUNT" + suffix, 0)); final int day = Integer.parseInt(arg.get("DCOUNT" + suffix, 0));
return system.getStartingDate(day); return system.getStartingDate().addDays(day);
} }
private Day resultA(RegexResult arg, String suffix) { private Day resultA(RegexResult arg, String suffix) {

View File

@ -52,10 +52,10 @@ public class SentenceHappensDate extends SentenceSimple {
final Task task = (Task) subject; final Task task = (Task) subject;
task.setLoad(Load.inWinks(1)); task.setLoad(Load.inWinks(1));
final Day start = (Day) complement; final Day start = (Day) complement;
final Day startingDate = project.getStartingDate(); // final Day startingDate = project.getStartingDate2();
if (startingDate == null) { // if (startingDate == null) {
return CommandExecutionResult.error("No starting date for the project"); // return CommandExecutionResult.error("No starting date for the project");
} // }
task.setStart(start); task.setStart(start);
task.setDiamond(true); task.setDiamond(true);
return CommandExecutionResult.ok(); return CommandExecutionResult.ok();

View File

@ -50,10 +50,10 @@ public class SentencePausesDate extends SentenceSimple {
public CommandExecutionResult execute(GanttDiagram project, Object subject, Object complement) { public CommandExecutionResult execute(GanttDiagram project, Object subject, Object complement) {
final Task task = (Task) subject; final Task task = (Task) subject;
final Day pause = (Day) complement; final Day pause = (Day) complement;
final Day startingDate = project.getStartingDate(); // final Day startingDate = project.getStartingDate();
if (startingDate == null) { // if (startingDate == null) {
return CommandExecutionResult.error("No starting date for the project"); // return CommandExecutionResult.error("No starting date for the project");
} // }
task.addPause(pause); task.addPause(pause);
return CommandExecutionResult.ok(); return CommandExecutionResult.ok();
} }

View File

@ -51,10 +51,10 @@ public class SentencePausesDates extends SentenceSimple {
public CommandExecutionResult execute(GanttDiagram project, Object subject, Object complement) { public CommandExecutionResult execute(GanttDiagram project, Object subject, Object complement) {
final Task task = (Task) subject; final Task task = (Task) subject;
final DaysAsDates pauses = (DaysAsDates) complement; final DaysAsDates pauses = (DaysAsDates) complement;
final Day startingDate = project.getStartingDate(); // final Day startingDate = project.getStartingDate();
if (startingDate == null) { // if (startingDate == null) {
return CommandExecutionResult.error("No starting date for the project"); // return CommandExecutionResult.error("No starting date for the project");
} // }
for (Day day : pauses) { for (Day day : pauses) {
task.addPause(day); task.addPause(day);
} }

View File

@ -50,10 +50,10 @@ public class SentenceTaskEndsAbsolute extends SentenceSimple {
public CommandExecutionResult execute(GanttDiagram project, Object subject, Object complement) { public CommandExecutionResult execute(GanttDiagram project, Object subject, Object complement) {
final Task task = (Task) subject; final Task task = (Task) subject;
final Day end = (Day) complement; final Day end = (Day) complement;
final Day startingDate = project.getStartingDate(); // final Day startingDate = project.getStartingDate();
if (startingDate == null) { // if (startingDate == null) {
return CommandExecutionResult.error("No starting date for the project"); // return CommandExecutionResult.error("No starting date for the project");
} // }
task.setEnd(end); task.setEnd(end);
return CommandExecutionResult.ok(); return CommandExecutionResult.ok();
} }

View File

@ -50,10 +50,10 @@ public class SentenceTaskStartsAbsolute extends SentenceSimple {
public CommandExecutionResult execute(GanttDiagram project, Object subject, Object complement) { public CommandExecutionResult execute(GanttDiagram project, Object subject, Object complement) {
final Task task = (Task) subject; final Task task = (Task) subject;
final Day start = (Day) complement; final Day start = (Day) complement;
final Day startingDate = project.getStartingDate(); // final Day startingDate = project.getStartingDate();
if (startingDate == null) { // if (startingDate == null) {
return CommandExecutionResult.error("No starting date for the project"); // return CommandExecutionResult.error("No starting date for the project");
} // }
task.setStart(start); task.setStart(start);
return CommandExecutionResult.ok(); return CommandExecutionResult.ok();
} }

View File

@ -0,0 +1,60 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2020, Arnaud Roques
*
* Project Info: http://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* http://plantuml.com/patreon (only 1$ per month!)
* http://plantuml.com/paypal
*
* This file is part of PlantUML.
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PlantUML distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
* License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
*
* Original Author: Arnaud Roques
*
*/
package net.sourceforge.plantuml.tim;
import net.sourceforge.plantuml.StringLocated;
public class EaterTheme extends Eater {
private String location;
public EaterTheme(StringLocated s) {
super(s);
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!theme");
skipSpaces();
this.location = context.applyFunctionsAndVariables(memory, getLineLocation(), this.eatAllToEnd());
}
public final String getLocation() {
return location;
}
}

View File

@ -268,6 +268,9 @@ public class TContext {
if (type == TLineType.INCLUDESUB) { if (type == TLineType.INCLUDESUB) {
this.executeIncludesub(memory, s); this.executeIncludesub(memory, s);
return null; return null;
} else if (type == TLineType.THEME) {
this.executeTheme(memory, s);
return null;
} else if (type == TLineType.INCLUDE) { } else if (type == TLineType.INCLUDE) {
this.executeInclude(memory, s); this.executeInclude(memory, s);
return null; return null;
@ -542,6 +545,36 @@ public class TContext {
} }
} }
private void executeTheme(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated {
final EaterTheme include = new EaterTheme(s.getTrimmed());
include.analyze(this, memory);
final String location = include.getLocation();
final ReadLine reader = PreprocessorUtils.getReaderTheme(s, location);
if (reader == null) {
throw EaterException.located("No such theme " + location);
}
try {
final List<StringLocated> body = new ArrayList<StringLocated>();
do {
final StringLocated sl = reader.readLine();
if (sl == null) {
executeLines(memory, body, null, false);
return;
}
body.add(sl);
} while (true);
} catch (IOException e) {
e.printStackTrace();
throw EaterException.located("Error reading theme " + e);
} finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void executeInclude(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated { private void executeInclude(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated {
final EaterInclude include = new EaterInclude(s.getTrimmed()); final EaterInclude include = new EaterInclude(s.getTrimmed());
include.analyze(this, memory); include.analyze(this, memory);
@ -554,7 +587,7 @@ public class TContext {
location = location.substring(0, idx); location = location.substring(0, idx);
} }
ReadLine reader2 = null; ReadLine reader = null;
ImportedFiles saveImportedFiles = null; ImportedFiles saveImportedFiles = null;
try { try {
if (location.startsWith("http://") || location.startsWith("https://")) { if (location.startsWith("http://") || location.startsWith("https://")) {
@ -562,9 +595,9 @@ public class TContext {
if (url == null) { if (url == null) {
throw EaterException.located("Cannot open URL"); throw EaterException.located("Cannot open URL");
} }
reader2 = PreprocessorUtils.getReaderIncludeUrl2(url, s, suf, charset); reader = PreprocessorUtils.getReaderIncludeUrl2(url, s, suf, charset);
} else if (location.startsWith("<") && location.endsWith(">")) { } else if (location.startsWith("<") && location.endsWith(">")) {
reader2 = PreprocessorUtils.getReaderStdlibInclude(s, location.substring(1, location.length() - 1)); reader = PreprocessorUtils.getReaderStdlibInclude(s, location.substring(1, location.length() - 1));
} else { } else {
final FileWithSuffix f2 = importedFiles.getFile(location, suf); final FileWithSuffix f2 = importedFiles.getFile(location, suf);
if (f2.fileOk()) { if (f2.fileOk()) {
@ -576,25 +609,25 @@ public class TContext {
} }
if (StartDiagramExtractReader.containsStartDiagram(f2, s, charset)) { if (StartDiagramExtractReader.containsStartDiagram(f2, s, charset)) {
reader2 = StartDiagramExtractReader.build(f2, s, charset); reader = StartDiagramExtractReader.build(f2, s, charset);
} else { } else {
final Reader reader = f2.getReader(charset); final Reader tmp = f2.getReader(charset);
if (reader == null) { if (tmp == null) {
throw EaterException.located("Cannot include file"); throw EaterException.located("Cannot include file");
} }
reader2 = ReadLineReader.create(reader, location, s.getLocation()); reader = ReadLineReader.create(tmp, location, s.getLocation());
} }
saveImportedFiles = this.importedFiles; saveImportedFiles = this.importedFiles;
this.importedFiles = this.importedFiles.withCurrentDir(f2.getParentFile()); this.importedFiles = this.importedFiles.withCurrentDir(f2.getParentFile());
assert reader2 != null; assert reader != null;
filesUsedCurrent.add(f2); filesUsedCurrent.add(f2);
} }
} }
if (reader2 != null) { if (reader != null) {
try { try {
final List<StringLocated> body = new ArrayList<StringLocated>(); final List<StringLocated> body = new ArrayList<StringLocated>();
do { do {
final StringLocated sl = reader2.readLine(); final StringLocated sl = reader.readLine();
if (sl == null) { if (sl == null) {
executeLines(memory, body, null, false); executeLines(memory, body, null, false);
return; return;
@ -611,9 +644,9 @@ public class TContext {
e.printStackTrace(); e.printStackTrace();
throw EaterException.located("cannot include " + e); throw EaterException.located("cannot include " + e);
} finally { } finally {
if (reader2 != null) { if (reader != null) {
try { try {
reader2.close(); reader.close();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@ -37,7 +37,8 @@ package net.sourceforge.plantuml.tim;
public enum TLineType { public enum TLineType {
PLAIN, AFFECTATION_DEFINE, AFFECTATION, ASSERT, IF, IFDEF, UNDEF, IFNDEF, ELSE, ELSEIF, ENDIF, WHILE, ENDWHILE, PLAIN, AFFECTATION_DEFINE, AFFECTATION, ASSERT, IF, IFDEF, UNDEF, IFNDEF, ELSE, ELSEIF, ENDIF, WHILE, ENDWHILE,
FOREACH, ENDFOREACH, DECLARE_RETURN_FUNCTION, DECLARE_PROCEDURE, END_FUNCTION, RETURN, LEGACY_DEFINE, LEGACY_DEFINELONG, INCLUDE, INCLUDE_DEF, FOREACH, ENDFOREACH, DECLARE_RETURN_FUNCTION, DECLARE_PROCEDURE, END_FUNCTION, RETURN, LEGACY_DEFINE, LEGACY_DEFINELONG,
THEME, INCLUDE, INCLUDE_DEF,
IMPORT, STARTSUB, ENDSUB, INCLUDESUB, LOG, DUMP_MEMORY, COMMENT_SIMPLE, COMMENT_LONG_START; IMPORT, STARTSUB, ENDSUB, INCLUDESUB, LOG, DUMP_MEMORY, COMMENT_SIMPLE, COMMENT_LONG_START;
// private boolean elseLike() { // private boolean elseLike() {
@ -122,6 +123,9 @@ public enum TLineType {
if (s.matches("^\\s*!return\\b.*")) { if (s.matches("^\\s*!return\\b.*")) {
return RETURN; return RETURN;
} }
if (s.matches("^\\s*!theme\\b.*")) {
return THEME;
}
if (s.matches("^\\s*!(include|includeurl|include_many|include_once)\\b.*")) { if (s.matches("^\\s*!(include|includeurl|include_many|include_once)\\b.*")) {
return INCLUDE; return INCLUDE;
} }

View File

@ -539,6 +539,7 @@ public enum License {
text.add("ASCIIMathML (c) David Lippman http://www.pierce.ctc.edu/dlippman"); text.add("ASCIIMathML (c) David Lippman http://www.pierce.ctc.edu/dlippman");
text.add("CafeUndZopfli ported by Eugene Klyuchnikov https://github.com/eustas/CafeUndZopfli"); text.add("CafeUndZopfli ported by Eugene Klyuchnikov https://github.com/eustas/CafeUndZopfli");
text.add("Brotli (c) by the Brotli Authors https://github.com/google/brotli"); text.add("Brotli (c) by the Brotli Authors https://github.com/google/brotli");
text.add("Themes (c) by Brett Schwarz https://github.com/bschwarz/puml-themes");
text.add(" "); text.add(" ");
} }
} }

View File

@ -80,7 +80,7 @@ public class Version {
} }
public static int beta() { public static int beta() {
final int beta = 0; final int beta = 2;
return beta; return beta;
} }

View File

@ -48,15 +48,15 @@ import net.sourceforge.plantuml.mindmap.IdeaShape;
import net.sourceforge.plantuml.ugraphic.color.HColor; import net.sourceforge.plantuml.ugraphic.color.HColor;
import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException; import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException;
public class CommandWBSOrgmode extends SingleLineCommand2<WBSDiagram> { public class CommandWBSItem extends SingleLineCommand2<WBSDiagram> {
public CommandWBSOrgmode() { public CommandWBSItem() {
super(false, getRegexConcat()); super(false, getRegexConcat());
} }
static IRegex getRegexConcat() { static IRegex getRegexConcat() {
return RegexConcat.build(CommandWBSOrgmode.class.getName(), RegexLeaf.start(), // return RegexConcat.build(CommandWBSItem.class.getName(), RegexLeaf.start(), //
new RegexLeaf("TYPE", "([*]+)"), // new RegexLeaf("TYPE", "([ \t]*[*+-]+)"), //
new RegexOptional(new RegexLeaf("BACKCOLOR", "\\[(#\\w+)\\]")), // new RegexOptional(new RegexLeaf("BACKCOLOR", "\\[(#\\w+)\\]")), //
new RegexLeaf("SHAPE", "(_)?"), // new RegexLeaf("SHAPE", "(_)?"), //
new RegexLeaf("DIRECTION", "([<>])?"), // new RegexLeaf("DIRECTION", "([<>])?"), //
@ -74,9 +74,17 @@ public class CommandWBSOrgmode extends SingleLineCommand2<WBSDiagram> {
if (stringColor != null) { if (stringColor != null) {
backColor = diagram.getSkinParam().getIHtmlColorSet().getColor(stringColor); backColor = diagram.getSkinParam().getIHtmlColorSet().getColor(stringColor);
} }
Direction dir = type.contains("-") ? Direction.LEFT : Direction.RIGHT;
final String direction = arg.get("DIRECTION", 0); final String direction = arg.get("DIRECTION", 0);
final Direction dir = "<".equals(direction) ? Direction.LEFT : Direction.RIGHT; if ("<".equals(direction)) {
return diagram.addIdea(backColor, type.length() - 1, label, dir, IdeaShape.fromDesc(arg.get("SHAPE", 0))); dir = Direction.LEFT;
} else if (">".equals(direction)) {
dir = Direction.RIGHT;
}
return diagram.addIdea(backColor, diagram.getSmartLevel(type), label, dir,
IdeaShape.fromDesc(arg.get("SHAPE", 0)));
} }
} }

View File

@ -1,79 +0,0 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2020, Arnaud Roques
*
* Project Info: http://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* http://plantuml.com/patreon (only 1$ per month!)
* http://plantuml.com/paypal
*
* This file is part of PlantUML.
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PlantUML distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
* License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
*
* Original Author: Arnaud Roques
*
*
*/
package net.sourceforge.plantuml.wbs;
import net.sourceforge.plantuml.Direction;
import net.sourceforge.plantuml.LineLocation;
import net.sourceforge.plantuml.command.CommandExecutionResult;
import net.sourceforge.plantuml.command.SingleLineCommand2;
import net.sourceforge.plantuml.command.regex.IRegex;
import net.sourceforge.plantuml.command.regex.RegexConcat;
import net.sourceforge.plantuml.command.regex.RegexLeaf;
import net.sourceforge.plantuml.command.regex.RegexOptional;
import net.sourceforge.plantuml.command.regex.RegexResult;
import net.sourceforge.plantuml.mindmap.IdeaShape;
import net.sourceforge.plantuml.ugraphic.color.HColor;
import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException;
public class CommandWBSTabulation extends SingleLineCommand2<WBSDiagram> {
public CommandWBSTabulation() {
super(false, getRegexConcat());
}
static IRegex getRegexConcat() {
return RegexConcat.build(CommandWBSTabulation.class.getName(), RegexLeaf.start(), //
new RegexLeaf("TYPE", "([ \t]*[*+-])"), //
new RegexOptional(new RegexLeaf("BACKCOLOR", "\\[(#\\w+)\\]")), //
new RegexLeaf("SHAPE", "(_)?"), //
RegexLeaf.spaceOneOrMore(), //
new RegexLeaf("LABEL", "([^%s].*)"), RegexLeaf.end());
}
@Override
protected CommandExecutionResult executeArg(WBSDiagram diagram, LineLocation location, RegexResult arg) throws NoSuchColorException {
final String type = arg.get("TYPE", 0);
final String label = arg.get("LABEL", 0);
final Direction dir = type.contains("-") ? Direction.LEFT : Direction.RIGHT;
final String stringColor = arg.get("BACKCOLOR", 0);
HColor backColor = null;
if (stringColor != null) {
backColor = diagram.getSkinParam().getIHtmlColorSet().getColor(stringColor);
}
return diagram.addIdea(backColor, type.length() - 1, label, dir, IdeaShape.fromDesc(arg.get("SHAPE", 0)));
}
}

View File

@ -75,9 +75,7 @@ public class WBSDiagram extends UmlDiagram {
protected ImageData exportDiagramInternal(OutputStream os, int index, FileFormatOption fileFormatOption) protected ImageData exportDiagramInternal(OutputStream os, int index, FileFormatOption fileFormatOption)
throws IOException { throws IOException {
return createImageBuilder(fileFormatOption) return createImageBuilder(fileFormatOption).drawable(getTextBlock()).write(os);
.drawable(getTextBlock())
.write(os);
} }
private TextBlockBackcolored getTextBlock() { private TextBlockBackcolored getTextBlock() {
@ -143,6 +141,7 @@ public class WBSDiagram extends UmlDiagram {
private WElement root; private WElement root;
private WElement last; private WElement last;
private String first;
private void initRoot(HColor backColor, String label, String stereotype, IdeaShape shape) { private void initRoot(HColor backColor, String label, String stereotype, IdeaShape shape) {
root = new WElement(backColor, Display.getWithNewlines(label), stereotype, root = new WElement(backColor, Display.getWithNewlines(label), stereotype,
@ -158,6 +157,25 @@ public class WBSDiagram extends UmlDiagram {
return result; return result;
} }
public int getSmartLevel(String type) {
if (root == null) {
assert first == null;
first = type;
return 0;
}
type = type.replace('\t', ' ');
if (type.contains(" ") == false) {
return type.length() - 1;
}
if (type.trim().length() == 1) {
return type.length() - 1;
}
if (type.startsWith(first)) {
return type.length() - first.length();
}
throw new UnsupportedOperationException("type=<" + type + ">[" + first + "]");
}
private CommandExecutionResult add(HColor backColor, int level, String label, String stereotype, private CommandExecutionResult add(HColor backColor, int level, String label, String stereotype,
Direction direction, IdeaShape shape) { Direction direction, IdeaShape shape) {
try { try {
@ -175,7 +193,7 @@ public class WBSDiagram extends UmlDiagram {
last = newIdea; last = newIdea;
return CommandExecutionResult.ok(); return CommandExecutionResult.ok();
} }
return CommandExecutionResult.error("error42L"); return CommandExecutionResult.error("Bad tree structure");
} catch (NoStyleAvailableException e) { } catch (NoStyleAvailableException e) {
// e.printStackTrace(); // e.printStackTrace();
return CommandExecutionResult.error("General failure: no style available."); return CommandExecutionResult.error("General failure: no style available.");

View File

@ -53,10 +53,8 @@ public class WBSDiagramFactory extends PSystemCommandFactory {
final List<Command> cmds = new ArrayList<Command>(); final List<Command> cmds = new ArrayList<Command>();
addCommonCommands1(cmds); addCommonCommands1(cmds);
cmds.add(new CommandWBSOrgmode()); cmds.add(new CommandWBSItem());
cmds.add(new CommandWBSPlus());
cmds.add(new CommandWBSTabulation());
return cmds; return cmds;
} }

View File

@ -0,0 +1,453 @@
''
'' Colors representing the black knight
''
'' Author: Brett Schwarz
!$THEME = "black-knight"
!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "transparent"
!endif
skinparam backgroundColor $BGCOLOR
skinparam useBetaStyle false
''
'' Colors taken from the _default_colors.scss file
''
!$PRIMARY = "#303030"
!$PRIMARY_DARK = "#262626"
!$PRIMARY_LIGHT = "#595959"
' !$PRIMARY_TEXT = "#0060a8"
!$PRIMARY_TEXT = "#fff200"
!$SECONDARY = "#484848"
!$SECONDARY_DARK = "#3a3a3a"
!$SECONDARY_LIGHT = "#6d6d6d"
!$SECONDARY_TEXT = "#fefefe"
!$SUCCESS = "#00FF00"
!$SUCCESS_DARK = "#00cc00"
!$SUCCESS_LIGHT = "#33ff33"
!$INFO = "#0060a8"
!$INFO_DARK = "#004d86"
!$INFO_LIGHT = "#3380b9"
!$WARNING = "#ff8000"
!$WARNING_DARK = "#cc6600"
!$WARNING_LIGHT = "#ff9933"
!$WARNING_TEXT = "#222222"
!$DANGER = "#ff0000"
!$DANGER_DARK = "#cc0000"
!$DANGER_LIGHT = "#ff3333"
!$LIGHT = "#fff200"
!$DARK = "#484848"
!procedure $success($msg)
<font color=$SUCCESS><b>$msg
!endprocedure
!procedure $failure($msg)
<font color=$DANGER><b>$msg
!endprocedure
!procedure $warning($msg)
<font color=$WARNING><b>$msg
!endprocedure
!procedure $primary_scheme()
FontColor $PRIMARY_TEXT
BorderColor $PRIMARY_DARK
BackgroundColor $PRIMARY_LIGHT-$PRIMARY_DARK
!endprocedure
skinparam {
defaultFontName "Verdana"
defaultFontSize 12
defaultTextAlignment center
shadowing false
RoundCorner 10
TitleFontSize 18
' TitleFontColor $PRIMARY_TEXT
}
''
'' Global Default Values
''
skinparam defaultFontName "Verdana"
skinparam defaultFontSize 12
skinparam dpi 100
skinparam shadowing false
skinparam roundcorner 8
skinparam ParticipantPadding 40
skinparam BoxPadding 40
skinparam Padding 5
skinparam ArrowColor $DARK
skinparam stereotype {
CBackgroundColor $SECONDARY_DARK
CBorderColor $SECONDARY_LIGHT
ABackgroundColor $SUCCESS_LIGHT
ABorderColor $SUCCESS_DARK
IBackgroundColor $DANGER_LIGHT
IBorderColor $DANGER_DARK
EBackgroundColor $WARNING_LIGHT
EBorderColor $WARNING_DARK
NBackgroundColor $INFO_LIGHT
NBorderColor $INFO_DARK
}
skinparam title {
FontColor $SECONDARY_TEXT
BorderColor $SECONDARY_DARK
FontSize 20
BorderRoundCorner 8
BorderThickness 1
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
}
skinparam legend {
BackgroundColor $PRIMARY
BorderColor $PRIMARY_DARK
FontColor $PRIMARY_TEXT
}
!startsub swimlane
skinparam swimlane {
BorderColor $INFO
BorderThickness 2
TitleBackgroundColor $SECONDARY_LIGHT-$SECONDARY
TitleFontColor $PRIMARY
}
!endsub
!startsub activity
skinparam activity {
$primary_scheme()
BarColor $SUCCESS
StartColor $INFO
EndColor $INFO
''
DiamondBackgroundColor $SECONDARY_LIGHT-$SECONDARY_DARK
DiamondBorderColor $SECONDARY_DARK
DiamondFontColor $SECONDARY_TEXT
}
!endsub
!startsub participant
skinparam participant {
$primary_scheme()
ParticipantBorderThickness 2
}
!endsub
!startsub actor
skinparam actor {
$primary_scheme()
}
!endsub
!startsub arrow
skinparam arrow {
Thickness 3
Color $PRIMARY
FontColor $FGCOLOR
}
!endsub
!startsub sequence
skinparam sequence {
BorderColor $PRIMARY
' For some reason sequence title font color does not pick up from global
TitleFontColor $PRIMARY
BackgroundColor $BGCOLOR
StartColor $PRIMARY
EndColor $PRIMARY
''
BoxBackgroundColor $BGCOLOR
BoxBorderColor $DARK
BoxFontColor $DARK
''
LifeLineBorderColor $SECONDARY
LifeLineBorderThickness 2
LifeLineBackgroundColor $SECONDARY_DARK
''
GroupBorderColor $DARK
GroupFontColor $DARK
GroupHeaderFontColor $INFO
GroupBackgroundColor $SECONDARY
GroupHeaderBackgroundColor $BGCOLOR
''
DividerBackgroundColor $DARK
DividerBorderColor $DARK
DividerBorderThickness 2
DividerFontColor $LIGHT
''
ReferenceBackgroundColor $BGCOLOR
ReferenceBorderColor $DARK
ReferenceFontColor $SECONDARY_TEXT
ReferenceHeaderBackgroundColor $SECONDARY
}
!endsub
!startsub partition
skinparam partition {
BorderColor $PRIMARY
FontColor $PRIMARY_LIGHT
BackgroundColor $BGCOLOR
}
!endsub
!startsub collections
skinparam collections {
$primary_scheme()
}
!endsub
!startsub control
skinparam control {
$primary_scheme()
}
!endsub
!startsub entity
skinparam entity {
$primary_scheme()
}
!endsub
!startsub boundary
skinparam boundary {
$primary_scheme()
}
!endsub
!startsub agent
skinparam agent {
BackgroundColor $WARNING
BorderColor $WARNING_LIGHT
FontColor $DARK
}
!endsub
!startsub note
skinparam note {
BorderThickness 1
BackgroundColor $INFO
BorderColor $INFO_DARK
FontColor $WHITE
}
!endsub
!startsub artifact
skinparam artifact {
BackgroundColor $DARK
BorderColor $DARK_DARK
FontColor $LIGHT
}
!endsub
!startsub component
skinparam component {
$primary_scheme()
}
!endsub
!startsub interface
skinparam interface {
BackgroundColor $DANGER_DARK
BorderColor $DANGER
FontColor $DARK
}
!endsub
!startsub storage
skinparam storage {
BackgroundColor $WARNING
BorderColor $WARNING_DARK
FontColor $WARNING_TEXT
}
!endsub
!startsub node
skinparam node {
BackgroundColor $BGCOLOR
BorderColor $PRIMARY_LIGHT
FontColor $PRIMARY_TEXT
}
!endsub
!startsub cloud
skinparam cloud {
BackgroundColor $DARK-black
BorderColor $DARK
FontColor $LIGHT
}
!endsub
!startsub database
skinparam database {
$primary_scheme()
BackgroundColor $BGCOLOR
}
!endsub
!startsub class
skinparam class {
$primary_scheme()
HeaderBackgroundColor $PRIMARY_LIGHT
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $LIGHT
AttributeFontSize 11
}
!endsub
!startsub object
skinparam object {
$primary_scheme()
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub usecase
skinparam usecase {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub rectangle
skinparam rectangle {
$primary_scheme()
BackgroundColor $BGCOLOR
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub package
skinparam package {
$primary_scheme()
BackgroundColor $BGCOLOR
BorderThickness 2
}
!endsub
!startsub folder
skinparam folder {
BackgroundColor $SECONDARY_LIGHT
BorderColor $WARNING
FontColor $WARNING
BorderThickness 2
}
!endsub
!startsub frame
skinparam frame {
BackgroundColor $SECONDARY_LIGHT
BorderColor $INFO
FontColor $INFO
BorderThickness 2
}
!endsub
!startsub state
skinparam state {
$primary_scheme()
StartColor $INFO
EndColor $INFO
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub queue
skinparam queue {
$primary_scheme()
}
!endsub
!startsub card
skinparam card {
BackgroundColor $INFO
BorderColor $INFO_DARK
FontColor $INFO_TEXT
}
!endsub
!startsub file
skinparam file {
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
BorderColor $INFO
FontColor $SECONDARY_TEXT
}
!endsub
!startsub stack
skinparam stack {
$primary_scheme()
}
!endsub
!if %variable_exists("NEWSTYLE")
<style>
wbsDiagram {
LineColor $PRIMARY
BorderThickness 3
BackgroundColor $LIGHT
FontColor $PRIMARY_TEXT
:depth(0) {
fontSize 16
fontStyle bold
fontColor $SECONDARY
}
:depth(1) {
fontSize 14
padding 5
fontStyle bold
}
:depth(2) {
fontSize 12
padding 4
}
:depth(3) {
fontSize 11
padding 3
fontColor $INFO
}
}
</style>
!endif

View File

@ -0,0 +1,434 @@
''
'' A blue gray theme
''
'' Author: Brett Schwarz
'' Copyright (c) 2019 by Brett Schwarz
!$THEME = "bluegray"
!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "transparent"
!endif
skinparam backgroundColor $BGCOLOR
skinparam useBetaStyle false
!$WHITE = "#fff"
!$GRAY_DARK = "#5a5a5a"
!$GRAY = "#959595"
!$PRIMARY = "#009fdb"
!$SECONDARY = "#f2f2f2"
!$SUCCESS = "#b5bd00"
!$INFO = "#0568ae"
!$WARNING = "#ea7400"
!$DANGER = "#cf2a2a"
!$LIGHT = "#d2d2d2"
!$DARK = "#5a5a5a"
!$FGCOLOR = $DARK
!$PRIMARY_LIGHT = "#33b2e2"
!$PRIMARY_DARK = "#007faf"
!$PRIMARY_TEXT = $WHITE
!$SECONDARY_LIGHT = "#f5f5f5"
!$SECONDARY_DARK = "#c2c2c2"
!$SECONDARY_TEXT = $DARK
!$INFO_LIGHT = "#3786be"
!$INFO_DARK = "#04538b"
!$INFO_TEXT = $WHITE
!$SUCCESS_LIGHT = "#c4ca33"
!$SUCCESS_DARK = "#919700"
!$SUCCESS_TEXT = $WHITE
!$WARNING_LIGHT = "#ee9033"
!$WARNING_DARK = "#bb5d00"
!$WARNING_TEXT = $WHITE
!$DANGER_LIGHT = "#d95555"
!$DANGER_DARK = "#a62222"
!$DANGER_TEXT = $WHITE
!procedure $success($msg)
<font color=$SUCCESS><b>$msg
!endprocedure
!procedure $failure($msg)
<font color=$DANGER><b>$msg
!endprocedure
!procedure $warning($msg)
<font color=$WARNING><b>$msg
!endprocedure
!procedure $primary_scheme()
FontColor $PRIMARY_TEXT
BorderColor $PRIMARY_LIGHT
BackgroundColor $PRIMARY_LIGHT-$PRIMARY
!endprocedure
!procedure $secondary_scheme()
FontColor $SECONDARY_TEXT
BorderColor $SECONDARY_DARK
BackgroundColor $WHITE-#fefefe
!endprocedure
''
'' Global Default Values
''
skinparam defaultFontName "Verdana"
skinparam defaultFontSize 12
skinparam dpi 100
skinparam shadowing false
skinparam roundcorner 20
skinparam ParticipantPadding 30
skinparam BoxPadding 40
skinparam Padding 8
skinparam ArrowColor $GRAY
skinparam stereotype {
CBackgroundColor $SECONDARY_LIGHT
CBorderColor $SECONDARY_DARK
ABackgroundColor $SUCCESS_LIGHT
ABorderColor $SUCCESS_DARK
IBackgroundColor $DANGER_LIGHT
IBorderColor $DANGER_DARK
EBackgroundColor $WARNING_LIGHT
EBorderColor $WARNING_DARK
NBackgroundColor $INFO_LIGHT
NBorderColor $INFO_DARK
}
skinparam title {
FontColor $PRIMARY
BorderColor $SECONDARY_DARK
FontSize 20
BorderRoundCorner 8
BorderThickness 1
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
}
skinparam legend {
BackgroundColor $SECONDARY
BorderColor $SECONDARY_DARK
FontColor $DARK
}
!startsub swimlane
skinparam swimlane {
BorderColor $INFO
BorderThickness 2
TitleBackgroundColor $SECONDARY_LIGHT-$SECONDARY
TitleFontColor $PRIMARY
}
!endsub
!startsub activity
skinparam activity {
FontColor $PRIMARY_TEXT
BorderColor $PRIMARY
BackgroundColor $PRIMARY_LIGHT-$PRIMARY
BarColor $SUCCESS
StartColor $INFO
EndColor $INFO
''
DiamondBackgroundColor $SECONDARY_LIGHT-$SECONDARY_DARK
DiamondBorderColor $SECONDARY_DARK
DiamondFontColor $SECONDARY_TEXT
}
!endsub
!startsub participant
skinparam participant {
$primary_scheme()
ParticipantBorderThickness 2
}
!endsub
!startsub actor
skinparam actor {
$primary_scheme()
FontColor $PRIMARY
}
!endsub
!startsub arrow
skinparam arrow {
Thickness 3
Color $PRIMARY
FontColor $FGCOLOR
}
!endsub
!startsub sequence
skinparam sequence {
BorderColor $PRIMARY
' For some reason sequence title font color does not pick up from global
TitleFontColor $PRIMARY
BackgroundColor $BGCOLOR
StartColor $PRIMARY
EndColor $PRIMARY
''
BoxBackgroundColor $LIGHT
BoxBorderColor $GRAY
BoxFontColor $DARK
''
LifeLineBorderColor $SECONDARY_DARK
LifeLineBorderThickness 2
LifeLineBackgroundColor $SECONDARY_LIGHT
''
GroupBorderColor $GRAY
GroupFontColor $DARK
GroupHeaderFontColor $INFO
''
DividerBackgroundColor $WHITE-$LIGHT
DividerBorderColor $GRAY
DividerBorderThickness 2
DividerFontColor $DARK
''
ReferenceBackgroundColor $BGCOLOR
ReferenceBorderColor $GRAY
ReferenceFontColor $DARK
ReferenceHeaderFontColor $INFO
}
!endsub
!startsub partition
skinparam partition {
BorderColor $PRIMARY
FontColor $PRIMARY
BackgroundColor $BGCOLOR
}
!endsub
!startsub collections
skinparam collections {
$primary_scheme()
}
!endsub
!startsub control
skinparam control {
$primary_scheme()
FontColor $PRIMARY
}
!endsub
!startsub entity
skinparam entity {
$primary_scheme()
FontColor $PRIMARY
}
!endsub
!startsub boundary
skinparam boundary {
$primary_scheme()
FontColor $PRIMARY
}
!endsub
!startsub agent
skinparam agent {
BackgroundColor #orange
BorderColor #999999
FontColor #333333
}
!endsub
!startsub note
skinparam note {
BorderThickness 1
BackgroundColor $INFO_LIGHT-$INFO
BorderColor $INFO
FontColor $WHITE
}
!endsub
!startsub artifact
skinparam artifact {
BackgroundColor $WHITE-$LIGHT
BorderColor $SECONDARY_DARK
FontColor $SECONDARY_TEXT
}
!endsub
!startsub component
skinparam component {
$primary_scheme()
}
!endsub
!startsub interface
skinparam interface {
BackgroundColor $DANGER_LIGHT
BorderColor $DANGER
FontColor $DARK
}
!endsub
!startsub storage
skinparam storage {
BackgroundColor $WARNING_LIGHT-$WARNING
BorderColor $WARNING
FontColor $WARNING_TEXT
}
!endsub
!startsub node
skinparam node {
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
BorderColor $SECONDARY_DARK
FontColor $PRIMARY
}
!endsub
!startsub cloud
skinparam cloud {
BackgroundColor #F2FCFE-#eeeeee
BorderColor #F2FCFE
FontColor $PRIMARY
}
!endsub
!startsub database
skinparam database {
$primary_scheme()
' FontColor $PRIMARY
BorderColor $PRIMARY_DARK
' BackgroundColor $BGCOLOR
}
!endsub
!startsub class
skinparam class {
$primary_scheme()
HeaderBackgroundColor $PRIMARY_LIGHT-$PRIMARY
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $LIGHT
AttributeFontSize 11
}
!endsub
!startsub object
skinparam object {
$primary_scheme()
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $LIGHT
AttributeFontSize 11
}
!endsub
!startsub usecase
skinparam usecase {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub rectangle
skinparam rectangle {
$secondary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub package
skinparam package {
FontColor $PRIMARY
BorderColor $PRIMARY_LIGHT
BackgroundColor $BGCOLOR
BorderThickness 2
}
!endsub
!startsub folder
skinparam folder {
BackgroundColor $WHITE-$SECONDARY_LIGHT
BorderColor $WARNING
FontColor $WARNING
BorderThickness 2
}
!endsub
!startsub frame
skinparam frame {
BackgroundColor $WHITE-$SECONDARY_LIGHT
BorderColor $INFO
FontColor $INFO
BorderThickness 2
}
!endsub
!startsub state
skinparam state {
$primary_scheme()
BorderColor $PRIMARY_DARK
StartColor $INFO
EndColor $INFO
AttributeFontColor $LIGHT
AttributeFontSize 11
}
!endsub
!startsub queue
skinparam queue {
$primary_scheme()
}
!endsub
!startsub card
skinparam card {
BackgroundColor $INFO_LIGHT-$INFO
BorderColor $INFO
FontColor $INFO_TEXT
}
!endsub
!startsub file
skinparam file {
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
BorderColor $INFO
FontColor $SECONDARY_TEXT
}
!endsub
!startsub stack
skinparam stack {
$primary_scheme()
}
!endsub

View File

@ -0,0 +1,467 @@
''
'' Cerulean theme based off of the bootstrap theme of the same name
'' https://bootswatch.com/cerulean/
''
'' Author: Brett Schwarz
'' Copyright (c) 2019 by Brett Schwarz
!$THEME = "cerulean-outline"
!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "transparent"
!endif
skinparam backgroundColor $BGCOLOR
skinparam useBetaStyle false
''
'' Colors taken from the css file of the BS theme
''
!$BLUE = "#033C73"
!$INDIGO = "#6610F2"
!$PURPLE = "#6F42C1"
!$PINK = "#E83E8C"
!$RED = "#C71C22"
!$ORANGE = "#FD7E14"
!$YELLOW = "#DD5600"
!$GREEN = "#73A839"
!$TEAL = "#20C997"
!$CYAN = "#2FA4E7"
!$WHITE = "#FFF"
!$GRAY_DARK = "#343A40"
!$GRAY = "#868E96"
!$PRIMARY = "#2FA4E7"
!$SECONDARY = "#E9ECEF"
!$SUCCESS = "#73A839"
!$INFO = "#033C73"
!$WARNING = "#DD5600"
!$DANGER = "#C71C22"
!$LIGHT = "#F8F9FA"
!$DARK = "#343A40"
'' *_LIGHT = tint (lighter) of the main color of 80%
'' where TINT is calculated by clr + (255-clr) * tint_factor
'' *_DARK = shade (darker) of the main color of 80%
'' and SHADE is calculated by clr * (1 - shade_factor)
''
!$FGCOLOR = $DARK
!$PRIMARY_LIGHT = "#59B6EC"
!$PRIMARY_DARK = "#2683B9"
!$PRIMARY_TEXT = $PRIMARY
!$SECONDARY_LIGHT = "#EDF0F2"
!$SECONDARY_DARK = "#BABDBF"
!$SECONDARY_TEXT = $SECONDARY_DARK
!$INFO_LIGHT = "#35638F"
!$INFO_TEXT = $INFO
!$SUCCESS_LIGHT = "#8FB961"
!$SUCCESS_TEXT = $SUCCESS
!$WARNING_LIGHT = "#E47833"
!$WARNING_TEXT = $WARNING
!$DANGER_LIGHT = "#D2494E"
!$DANGER_TEXT = $WHITE
!procedure $success($msg)
<font color=$SUCCESS><b>$msg
!endprocedure
!procedure $failure($msg)
<font color=$DANGER><b>$msg
!endprocedure
!procedure $warning($msg)
<font color=$WARNING><b>$msg
!endprocedure
!procedure $primary_scheme()
FontColor $PRIMARY_TEXT
BorderColor $PRIMARY
BackgroundColor $BGCOLOR
!endprocedure
''
'' Global Default Values
''
skinparam defaultFontName "Verdana"
skinparam defaultFontSize 12
skinparam dpi 100
skinparam shadowing false
skinparam roundcorner 8
skinparam ParticipantPadding 40
skinparam BoxPadding 40
skinparam Padding 5
skinparam ArrowColor $GRAY
skinparam stereotype {
CBackgroundColor $SECONDARY_LIGHT
CBorderColor $SECONDARY_DARK
ABackgroundColor $SUCCESS_LIGHT
ABorderColor $SUCCESS_DARK
IBackgroundColor $DANGER_LIGHT
IBorderColor $DANGER_DARK
EBackgroundColor $WARNING_LIGHT
EBorderColor $WARNING_DARK
NBackgroundColor $INFO_LIGHT
NBorderColor $INFO_DARK
}
skinparam title {
FontColor $PRIMARY
BorderColor $SECONDARY_DARK
FontSize 20
BorderRoundCorner 8
BorderThickness 1
BackgroundColor $BGCOLOR
}
skinparam legend {
BackgroundColor $BGCOLOR
BorderColor $SECONDARY_DARK
FontColor $DARK
}
!startsub swimlane
skinparam swimlane {
BorderColor $INFO
BorderThickness 2
TitleBackgroundColor $SECONDARY_LIGHT-$SECONDARY
TitleFontColor $PRIMARY
}
!endsub
!startsub activity
skinparam activity {
$primary_scheme()
BarColor $SUCCESS
StartColor $INFO
EndColor $INFO
''
DiamondBackgroundColor $BGCOLOR
DiamondBorderColor $SECONDARY_DARK
DiamondFontColor $SECONDARY_TEXT
}
!endsub
!startsub participant
skinparam participant {
$primary_scheme()
ParticipantBorderThickness 2
}
!endsub
!startsub actor
skinparam actor {
$primary_scheme()
}
!endsub
!startsub arrow
skinparam arrow {
Thickness 3
Color $PRIMARY
FontColor $FGCOLOR
}
!endsub
!startsub sequence
skinparam sequence {
BorderColor $PRIMARY
' For some reason sequence title font color does not pick up from global
TitleFontColor $PRIMARY
BackgroundColor $BGCOLOR
StartColor $PRIMARY
EndColor $PRIMARY
''
BoxBackgroundColor $BGCOLOR
BoxBorderColor $GRAY
BoxFontColor $DARK
''
LifeLineBorderColor $SECONDARY_DARK
LifeLineBorderThickness 2
LifeLineBackgroundColor $BGCOLOR
''
GroupBorderColor $GRAY
GroupFontColor $DARK
GroupHeaderFontColor $INFO_TEXT
''
DividerBackgroundColor $BGCOLOR
DividerBorderColor $GRAY
DividerBorderThickness 2
DividerFontColor $DARK
''
ReferenceBackgroundColor $BGCOLOR
ReferenceBorderColor $GRAY
ReferenceFontColor $DARK
ReferenceHeaderFontColor $INFO_TEXT
}
!endsub
!startsub partition
skinparam partition {
BorderColor $PRIMARY
FontColor $PRIMARY
BackgroundColor $BGCOLOR
}
!endsub
!startsub collections
skinparam collections {
$primary_scheme()
}
!endsub
!startsub control
skinparam control {
$primary_scheme()
}
!endsub
!startsub entity
skinparam entity {
$primary_scheme()
}
!endsub
!startsub boundary
skinparam boundary {
$primary_scheme()
}
!endsub
!startsub agent
skinparam agent {
BackgroundColor $BGCOLOR
BorderColor #999999
FontColor #333333
}
!endsub
!startsub note
skinparam note {
BorderThickness 1
BackgroundColor $BGCOLOR
BorderColor $INFO
FontColor $INFO_TEXT
}
!endsub
!startsub artifact
skinparam artifact {
BackgroundColor $BGCOLOR
BorderColor $GRAY
FontColor $GRAY
}
!endsub
!startsub component
skinparam component {
$primary_scheme()
' BackgroundColor $BGCOLOR
' BorderColor $SUCCESS
' FontColor $SUCCESS_TEXT
}
!endsub
!startsub interface
skinparam interface {
BackgroundColor $BGCOLOR
BorderColor $DANGER
FontColor $DARK
}
!endsub
!startsub storage
skinparam storage {
BackgroundColor $BGCOLOR
BorderColor $WARNING
FontColor $WARNING_TEXT
}
!endsub
!startsub node
skinparam node {
BackgroundColor $BGCOLOR
BorderColor $DARK
FontColor $DARK
}
!endsub
!startsub cloud
skinparam cloud {
BackgroundColor #F2FCFE-#eeeeee
BorderColor #F2FCFE
FontColor $DARK
}
!endsub
!startsub database
skinparam database {
$primary_scheme()
}
!endsub
!startsub class
skinparam class {
$primary_scheme()
FontColor $LIGHT
HeaderBackgroundColor $PRIMARY-$PRIMARY_DARK
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $DARK
AttributeFontSize 11
}
!endsub
!startsub object
skinparam object {
$primary_scheme()
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $SECONDARY_DARK
AttributeFontSize 11
}
!endsub
!startsub usecase
skinparam usecase {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub rectangle
skinparam rectangle {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub package
skinparam package {
BackgroundColor $BGCOLOR
BorderColor $PRIMARY
FontColor $PRIMARY
BorderThickness 2
}
!endsub
!startsub folder
skinparam folder {
BackgroundColor $BGCOLOR
BorderColor $WARNING
FontColor $WARNING
BorderThickness 2
}
!endsub
!startsub frame
skinparam frame {
BackgroundColor $BGCOLOR
BorderColor $INFO
FontColor $INFO_TEXT
BorderThickness 2
}
!endsub
!startsub state
skinparam state {
$primary_scheme()
StartColor $INFO
EndColor $INFO
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub queue
skinparam queue {
$primary_scheme()
}
!endsub
!startsub card
skinparam card {
BackgroundColor $BGCOLOR
BorderColor $INFO
FontColor $INFO_TEXT
}
!endsub
!startsub file
skinparam file {
BackgroundColor $BGCOLOR
BorderColor $GRAY
FontColor $GRAY
}
!endsub
!startsub stack
skinparam stack {
$primary_scheme()
}
!endsub
!if (%variable_exists("LEGACY"))
!$LEGACY = "true"
!endif
!if (%getenv("LEGACY") == "true")
!$LEGACY = "true"
!endif
!if (%variable_exists("$LEGACY"))
skinparam useBetaStyle true
!startsub mindmap
<style>
style mindmapDiagram {
'Padding 8
Margin 8
LineThickness 2.0
FontColor $PRIMARY_TEXT
LineColor $SECONDARY
BackGroundColor $PRIMARY_LIGHT-$PRIMARY
}
wbsDiagram {
'Padding 8
Margin 8
LineThickness 2.0
FontColor $PRIMARY_TEXT
LineColor $PRIMARY
BackGroundColor $PRIMARY_LIGHT-$PRIMARY
}
</style>
!endsub
!endif

View File

@ -0,0 +1,442 @@
''
'' Cerulean theme based off of the bootstrap theme of the same name
'' https://bootswatch.com/cerulean/
''
'' Author: Brett Schwarz
'' Copyright (c) 2019 by Brett Schwarz
!$THEME = "cerulean"
!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "transparent"
!endif
skinparam backgroundColor $BGCOLOR
skinparam useBetaStyle false
''
'' Colors taken from the css file of the BS theme
''
!$BLUE = "#033C73"
!$INDIGO = "#6610F2"
!$PURPLE = "#6F42C1"
!$PINK = "#E83E8C"
!$RED = "#C71C22"
!$ORANGE = "#FD7E14"
!$YELLOW = "#DD5600"
!$GREEN = "#73A839"
!$TEAL = "#20C997"
!$CYAN = "#2FA4E7"
!$WHITE = "#FFF"
!$GRAY_DARK = "#343A40"
!$GRAY = "#868E96"
!$PRIMARY = "#2FA4E7"
!$SECONDARY = "#E9ECEF"
!$SUCCESS = "#73A839"
!$INFO = "#033C73"
!$WARNING = "#DD5600"
!$DANGER = "#C71C22"
!$LIGHT = "#F8F9FA"
!$DARK = "#343A40"
'' *_LIGHT = tint (lighter) of the main color of 80%
'' where TINT is calculated by clr + (255-clr) * tint_factor
'' *_DARK = shade (darker) of the main color of 80%
'' and SHADE is calculated by clr * (1 - shade_factor)
''
!$FGCOLOR = $DARK
!$PRIMARY_LIGHT = "#59B6EC"
!$PRIMARY_DARK = "#2683B9"
!$PRIMARY_TEXT = $WHITE
!$SECONDARY_LIGHT = "#EDF0F2"
!$SECONDARY_DARK = "#BABDBF"
!$SECONDARY_TEXT = $DARK
!$INFO_LIGHT = "#35638F"
!$INFO_DARK = "#02305C"
!$INFO_TEXT = $WHITE
!$SUCCESS_LIGHT = "#8FB961"
!$SUCCESS_DARK = "#5C862E"
!$SUCCESS_TEXT = $WHITE
!$WARNING_LIGHT = "#E47833"
!$WARNING_DARK = "#B14500"
!$WARNING_TEXT = $WHITE
!$DANGER_LIGHT = "#D2494E"
!$DANGER_DARK = "#9F161B"
!$DANGER_TEXT = $WHITE
!procedure $success($msg)
<font color=$SUCCESS><b>$msg
!endprocedure
!procedure $failure($msg)
<font color=$DANGER><b>$msg
!endprocedure
!procedure $warning($msg)
<font color=$WARNING><b>$msg
!endprocedure
!procedure $primary_scheme()
FontColor $PRIMARY_TEXT
BorderColor $PRIMARY
BackgroundColor $PRIMARY_LIGHT-$PRIMARY
!endprocedure
''
'' Global Default Values
''
skinparam defaultFontName "Verdana"
skinparam defaultFontSize 12
skinparam dpi 100
skinparam shadowing false
skinparam roundcorner 8
skinparam ParticipantPadding 40
skinparam BoxPadding 40
skinparam Padding 5
skinparam ArrowColor $GRAY
skinparam stereotype {
CBackgroundColor $SECONDARY_LIGHT
CBorderColor $SECONDARY_DARK
ABackgroundColor $SUCCESS_LIGHT
ABorderColor $SUCCESS_DARK
IBackgroundColor $DANGER_LIGHT
IBorderColor $DANGER_DARK
EBackgroundColor $WARNING_LIGHT
EBorderColor $WARNING_DARK
NBackgroundColor $INFO_LIGHT
NBorderColor $INFO_DARK
}
skinparam title {
FontColor $PRIMARY
BorderColor $SECONDARY_DARK
FontSize 20
BorderRoundCorner 8
BorderThickness 1
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
}
skinparam legend {
BackgroundColor $SECONDARY
BorderColor $SECONDARY_DARK
FontColor $DARK
}
!startsub swimlane
skinparam swimlane {
BorderColor $INFO
BorderThickness 2
TitleBackgroundColor $SECONDARY_LIGHT-$SECONDARY
TitleFontColor $PRIMARY
}
!endsub
!startsub activity
skinparam activity {
$primary_scheme()
BarColor $SUCCESS
StartColor $INFO
EndColor $INFO
''
DiamondBackgroundColor $WHITE-$SECONDARY_LIGHT
DiamondBorderColor $SECONDARY_DARK
DiamondFontColor $SECONDARY_TEXT
}
!endsub
!startsub participant
skinparam participant {
$primary_scheme()
ParticipantBorderThickness 2
}
!endsub
!startsub actor
skinparam actor {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub arrow
skinparam arrow {
Thickness 3
Color $PRIMARY
FontColor $FGCOLOR
}
!endsub
!startsub sequence
skinparam sequence {
BorderColor $PRIMARY
' For some reason sequence title font color does not pick up from global
TitleFontColor $PRIMARY
BackgroundColor $BGCOLOR
StartColor $PRIMARY
EndColor $PRIMARY
''
BoxBackgroundColor $LIGHT
BoxBorderColor $GRAY
BoxFontColor $DARK
''
LifeLineBorderColor $SECONDARY_DARK
LifeLineBorderThickness 2
LifeLineBackgroundColor $SECONDARY_LIGHT
''
GroupBorderColor $GRAY
GroupFontColor $DARK
GroupHeaderFontColor $INFO
''
DividerBackgroundColor $WHITE-$LIGHT
DividerBorderColor $GRAY
DividerBorderThickness 2
DividerFontColor $DARK
''
ReferenceBackgroundColor $BGCOLOR
ReferenceBorderColor $GRAY
ReferenceFontColor $DARK
ReferenceHeaderFontColor $INFO
}
!endsub
!startsub partition
skinparam partition {
BorderColor $PRIMARY
FontColor $PRIMARY
BackgroundColor $BGCOLOR
}
!endsub
!startsub collections
skinparam collections {
$primary_scheme()
}
!endsub
!startsub control
skinparam control {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub entity
skinparam entity {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub boundary
skinparam boundary {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub agent
skinparam agent {
BackgroundColor #orange
BorderColor #999999
FontColor #333333
}
!endsub
!startsub note
skinparam note {
BorderThickness 1
BackgroundColor $INFO_LIGHT-$INFO
BorderColor $INFO
FontColor $WHITE
}
!endsub
!startsub artifact
skinparam artifact {
BackgroundColor $WHITE-$LIGHT
BorderColor $SECONDARY_DARK
FontColor $SECONDARY_TEXT
}
!endsub
!startsub component
skinparam component {
$primary_scheme()
}
!endsub
!startsub interface
skinparam interface {
BackgroundColor $DANGER_LIGHT
BorderColor $DANGER
FontColor $DARK
}
!endsub
!startsub storage
skinparam storage {
BackgroundColor $WARNING_LIGHT-$WARNING
BorderColor $WARNING
FontColor $WARNING_TEXT
}
!endsub
!startsub node
skinparam node {
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
BorderColor $SECONDARY
FontColor $SECONDARY_TEXT
}
!endsub
!startsub cloud
skinparam cloud {
BackgroundColor #F2FCFE-#eeeeee
BorderColor #F2FCFE
FontColor $PRIMARY
}
!endsub
!startsub database
skinparam database {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub class
skinparam class {
$primary_scheme()
HeaderBackgroundColor $PRIMARY-$PRIMARY_DARK
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $LIGHT
AttributeFontSize 11
}
!endsub
!startsub object
skinparam object {
$primary_scheme()
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub usecase
skinparam usecase {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub rectangle
skinparam rectangle {
FontColor $PRIMARY
BorderColor $PRIMARY_LIGHT
BackgroundColor $BGCOLOR
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub package
skinparam package {
FontColor $PRIMARY
BorderColor $PRIMARY_LIGHT
BackgroundColor $BGCOLOR
BorderThickness 2
}
!endsub
!startsub folder
skinparam folder {
BackgroundColor $WHITE-$SECONDARY_LIGHT
BorderColor $WARNING
FontColor $WARNING
BorderThickness 2
}
!endsub
!startsub frame
skinparam frame {
BackgroundColor $WHITE-$SECONDARY_LIGHT
BorderColor $INFO
FontColor $INFO
BorderThickness 2
}
!endsub
!startsub state
skinparam state {
$primary_scheme()
BorderColor $PRIMARY_DARK
StartColor $INFO
EndColor $INFO
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub queue
skinparam queue {
$primary_scheme()
}
!endsub
!startsub card
skinparam card {
BackgroundColor $INFO_LIGHT-$INFO
BorderColor $INFO
FontColor $INFO_TEXT
}
!endsub
!startsub file
skinparam file {
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
BorderColor $INFO
FontColor $GRAY
}
!endsub
!startsub stack
skinparam stack {
$primary_scheme()
}
!endsub

View File

@ -0,0 +1,446 @@
''
'' Cyborg theme based off of the bootstrap theme of the same name, with outline colors
'' https://bootswatch.com/cyborg/
''
'' Author: Brett Schwarz
'' Copyright (c) 2019 by Brett Schwarz
!$THEME = "cyborg-outline"
!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "transparent"
!endif
skinparam backgroundColor $BGCOLOR
skinparam useBetaStyle false
''
'' Colors taken from the css file of the BS theme
''
!$BLUE = "#2A9FD6"
!$INDIGO = "#6610f2"
!$PURPLE = "#6f42c1"
!$PINK = "#e83e8c"
!$RED = "#CC0000"
!$ORANGE = "#fd7e14"
!$YELLOW = "#FF8800"
!$GREEN = "#77B300"
!$TEAL = "#20c997"
!$CYAN = "#9933CC"
!$WHITE = "#FFF"
!$GRAY_LIGHT = "#222"
!$GRAY = "#555"
!$PRIMARY = "#2A9FD6"
!$SECONDARY = "#555"
!$SUCCESS = "#77B300"
!$INFO = "#9933CC"
!$WARNING = "#FF8800"
!$DANGER = "#CC0000"
!$LIGHT = "#222"
!$DARK = "#ADAFAE"
'' *_DARK = tint (lighter) of the main color of 80%
'' where TINT is calculated by clr + (255-clr) * tint_factor
'' *_LIGHT = shade (darker) of the main color of 80%
'' and SHADE is calculated by clr * (1 - shade_factor)
''
!$FGCOLOR = $WHITE
!$PRIMARY_DARK = "#55B2DE"
!$PRIMARY_LIGHT = "#227FAB"
!$PRIMARY_TEXT = $PRIMARY
!$SECONDARY_DARK = "#777777"
!$SECONDARY_LIGHT = "#444444"
!$SECONDARY_TEXT = $SECONDARY_DARK
!$INFO_DARK = "#AD5CD6"
!$INFO_LIGHT = "#7a29a3"
!$INFO_TEXT = $INFO
!$SUCCESS_DARK = "#92C233"
!$SUCCESS_LIGHT = "#5F8F00"
!$SUCCESS_TEXT = $SUCCESS
!$WARNING_DARK = "#FFA033"
!$WARNING_LIGHT = "#cc6d00"
!$WARNING_TEXT = $WARNING
!$DANGER_DARK = "#D63333"
!$DANGER_LIGHT = "#a30000"
!$DANGER_TEXT = $WHITE
!$DARK_DARK = "#BDBFBE"
!$DARK_LIGHT = "#8A8C8B"
!$LIGHT_DARK = "#4E4E4E"
!$LIGHT_LIGHT = "#1B1B1B"
!procedure $success($msg)
<font color=$SUCCESS><b>$msg
!endprocedure
!procedure $failure($msg)
<font color=$DANGER><b>$msg
!endprocedure
!procedure $warning($msg)
<font color=$WARNING><b>$msg
!endprocedure
!procedure $primary_scheme()
FontColor $PRIMARY_TEXT
BorderColor $PRIMARY_DARK
BackgroundColor $BGCOLOR
!endprocedure
''
'' Global Default Values
''
skinparam defaultFontName "Verdana"
skinparam defaultFontSize 12
skinparam dpi 100
skinparam shadowing false
skinparam roundcorner 8
skinparam ParticipantPadding 40
skinparam BoxPadding 40
skinparam Padding 5
skinparam ArrowColor $DARK
skinparam stereotype {
CBackgroundColor $SECONDARY_DARK
CBorderColor $SECONDARY_LIGHT
ABackgroundColor $SUCCESS_LIGHT
ABorderColor $SUCCESS_DARK
IBackgroundColor $DANGER_LIGHT
IBorderColor $DANGER_DARK
EBackgroundColor $WARNING_LIGHT
EBorderColor $WARNING_DARK
NBackgroundColor $INFO_LIGHT
NBorderColor $INFO_DARK
}
skinparam title {
FontColor $PRIMARY
BorderColor $SECONDARY_DARK
FontSize 20
BorderRoundCorner 8
BorderThickness 1
BackgroundColor $BGCOLOR
}
skinparam legend {
BackgroundColor $BGCOLOR
BorderColor $SECONDARY_DARK
FontColor $DARK
}
!startsub swimlane
skinparam swimlane {
BorderColor $INFO
BorderThickness 2
TitleBackgroundColor $SECONDARY_LIGHT-$SECONDARY
TitleFontColor $PRIMARY
}
!endsub
!startsub activity
skinparam activity {
$primary_scheme()
BarColor $SUCCESS
StartColor $INFO
EndColor $INFO
''
DiamondBackgroundColor $BGCOLOR
DiamondBorderColor $SECONDARY_DARK
DiamondFontColor $SECONDARY_TEXT
}
!endsub
!startsub participant
skinparam participant {
$primary_scheme()
ParticipantBorderThickness 2
}
!endsub
!startsub actor
skinparam actor {
$primary_scheme()
FontColor $PRIMARY
}
!endsub
!startsub arrow
skinparam arrow {
Thickness 3
Color $PRIMARY
FontColor $FGCOLOR
}
!endsub
!startsub sequence
skinparam sequence {
BorderColor $PRIMARY
' For some reason sequence title font color does not pick up from global
TitleFontColor $PRIMARY
BackgroundColor $BGCOLOR
StartColor $PRIMARY
EndColor $PRIMARY
''
BoxBackgroundColor $BGCOLOR
BoxBorderColor $DARK
BoxFontColor $DARk
''
LifeLineBorderColor $SECONDARY
LifeLineBorderThickness 2
LifeLineBackgroundColor $BGCOLOR
''
GroupBorderColor $DARK
GroupFontColor $DARK
GroupHeaderFontColor $INFO_TEXT
GroupBackgroundColor $BGCOLOR
GroupHeaderBackgroundColor $BGCOLOR
''
DividerBackgroundColor $BGCOLOR
DividerBorderColor $DARK
DividerBorderThickness 2
DividerFontColor $DARK
''
ReferenceBackgroundColor $BGCOLOR
ReferenceBorderColor $DARK
ReferenceFontColor $DARK
ReferenceHeaderFontColor $INFO_TEXT
ReferenceHeaderBackgroundColor $BGCOLOR
}
!endsub
!startsub partition
skinparam partition {
BorderColor $PRIMARY
FontColor $PRIMARY
BackgroundColor $BGCOLOR
}
!endsub
!startsub collections
skinparam collections {
$primary_scheme()
}
!endsub
!startsub control
skinparam control {
$primary_scheme()
FontColor $PRIMARY
}
!endsub
!startsub entity
skinparam entity {
$primary_scheme()
FontColor $PRIMARY
}
!endsub
!startsub boundary
skinparam boundary {
$primary_scheme()
FontColor $PRIMARY
}
!endsub
!startsub agent
skinparam agent {
BackgroundColor $BGCOLOR
BorderColor $WARNING_LIGHT
FontColor $DARK
}
!endsub
!startsub note
skinparam note {
BorderThickness 1
BackgroundColor $BGCOLOR
BorderColor $INFO_DARK
FontColor $INFO_DARK
}
!endsub
!startsub artifact
skinparam artifact {
BackgroundColor $BGCOLOR
BorderColor $DARK_DARK
FontColor $DARK_DARK
}
!endsub
!startsub component
skinparam component {
$primary_scheme()
}
!endsub
!startsub interface
skinparam interface {
BackgroundColor $BGCOLOR
BorderColor $DANGER
FontColor $DARK
}
!endsub
!startsub storage
skinparam storage {
BackgroundColor $BGCOLOR
BorderColor $WARNING_DARK
FontColor $WARNING_TEXT
}
!endsub
!startsub node
skinparam node {
BackgroundColor $BGCOLOR
BorderColor $DARK
FontColor $DARK
}
!endsub
!startsub cloud
skinparam cloud {
BackgroundColor $BGCOLOR
BorderColor #F2FCFE
FontColor $DARK
}
!endsub
!startsub database
skinparam database {
$primary_scheme()
FontColor $PRIMARY
}
!endsub
!startsub class
skinparam class {
$primary_scheme()
FontColor $LIGHT
HeaderBackgroundColor $PRIMARY_LIGHT
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $DARK
AttributeFontSize 11
}
!endsub
!startsub object
skinparam object {
$primary_scheme()
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $SECONDARY_DARK
AttributeFontSize 11
}
!endsub
!startsub usecase
skinparam usecase {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub rectangle
skinparam rectangle {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub package
skinparam package {
BackgroundColor $BGCOLOR
BorderColor $PRIMARY
FontColor $PRIMARY
BorderThickness 2
}
!endsub
!startsub folder
skinparam folder {
BackgroundColor $BGCOLOR
BorderColor $WARNING
FontColor $WARNING
BorderThickness 2
}
!endsub
!startsub frame
skinparam frame {
BackgroundColor $BGCOLOR
BorderColor $INFO
FontColor $INFO_TEXT
BorderThickness 2
}
!endsub
!startsub state
skinparam state {
$primary_scheme()
StartColor $INFO
EndColor $INFO
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub queue
skinparam queue {
$primary_scheme()
}
!endsub
!startsub card
skinparam card {
BackgroundColor $BGCOLOR
BorderColor $INFO
FontColor $INFO_TEXT
}
!endsub
!startsub file
skinparam file {
BackgroundColor $BGCOLOR
BorderColor $GRAY
FontColor $GRAY
}
!endsub
!startsub stack
skinparam stack {
$primary_scheme()
}
!endsub

View File

@ -0,0 +1,452 @@
''
'' Cyborg theme based off of the bootstrap theme of the same name
'' https://bootswatch.com/cyborg/
''
'' Author: Brett Schwarz
'' Copyright (c) 2019 by Brett Schwarz
!$THEME = "cyborg"
!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "transparent"
!endif
skinparam backgroundColor $BGCOLOR
skinparam useBetaStyle false
''
'' Colors taken from the css file of the BS theme
''
!$BLUE = "#2A9FD6"
!$INDIGO = "#6610f2"
!$PURPLE = "#6f42c1"
!$PINK = "#e83e8c"
!$RED = "#CC0000"
!$ORANGE = "#fd7e14"
!$YELLOW = "#FF8800"
!$GREEN = "#77B300"
!$TEAL = "#20c997"
!$CYAN = "#9933CC"
!$WHITE = "#FFF"
!$GRAY_LIGHT = "#222"
!$GRAY = "#555"
!$PRIMARY = "#2A9FD6"
!$SECONDARY = "#555"
!$SUCCESS = "#77B300"
!$INFO = "#9933CC"
!$WARNING = "#FF8800"
!$DANGER = "#CC0000"
!$LIGHT = "#222"
!$DARK = "#ADAFAE"
'' *_DARK = tint (lighter) of the main color of 80%
'' where TINT is calculated by clr + (255-clr) * tint_factor
'' *_LIGHT = shade (darker) of the main color of 80%
'' and SHADE is calculated by clr * (1 - shade_factor)
''
!$FGCOLOR = $WHITE
!$PRIMARY_DARK = "#55B2DE"
!$PRIMARY_LIGHT = "#227FAB"
!$PRIMARY_TEXT = $WHITE
!$SECONDARY_DARK = "#777777"
!$SECONDARY_LIGHT = "#444444"
!$SECONDARY_TEXT = $WHITE
!$INFO_DARK = "#AD5CD6"
!$INFO_LIGHT = "#9F161B"
!$INFO_TEXT = $WHITE
!$SUCCESS_DARK = "#92C233"
!$SUCCESS_LIGHT = "#5F8F00"
!$SUCCESS_TEXT = $WHITE
!$WARNING_DARK = "#FFA033"
!$WARNING_LIGHT = "#CC6D00"
!$WARNING_TEXT = $WHITE
!$DANGER_DARK = "#D63333"
!$DANGER_LIGHT = "#A30000"
!$DANGER_TEXT = $WHITE
!$DARK_DARK = "#BDBFBE"
!$DARK_LIGHT = "#8A8C8B"
!$LIGHT_DARK = "#4E4E4E"
!$LIGHT_LIGHT = "#1B1B1B"
!procedure $success($msg)
<font color=$SUCCESS><b>$msg
!endprocedure
!procedure $failure($msg)
<font color=$DANGER><b>$msg
!endprocedure
!procedure $warning($msg)
<font color=$WARNING><b>$msg
!endprocedure
!procedure $primary_scheme()
FontColor $PRIMARY_TEXT
BorderColor $PRIMARY_DARK
BackgroundColor $PRIMARY
!endprocedure
''
'' Global Default Values
''
skinparam defaultFontName "Verdana"
skinparam defaultFontSize 12
skinparam dpi 100
skinparam shadowing false
skinparam roundcorner 8
skinparam ParticipantPadding 40
skinparam BoxPadding 40
skinparam Padding 5
skinparam ArrowColor $DARK
skinparam stereotype {
CBackgroundColor $SECONDARY_DARK
CBorderColor $SECONDARY_LIGHT
ABackgroundColor $SUCCESS_LIGHT
ABorderColor $SUCCESS_DARK
IBackgroundColor $DANGER_LIGHT
IBorderColor $DANGER_DARK
EBackgroundColor $WARNING_LIGHT
EBorderColor $WARNING_DARK
NBackgroundColor $INFO_LIGHT
NBorderColor $INFO_DARK
}
skinparam title {
FontColor $PRIMARY
BorderColor $SECONDARY_DARK
FontSize 20
BorderRoundCorner 8
BorderThickness 1
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
}
skinparam legend {
BackgroundColor $SECONDARY
BorderColor $SECONDARY_DARK
FontColor $DARK
}
!startsub swimlane
skinparam swimlane {
BorderColor $INFO
BorderThickness 2
TitleBackgroundColor $SECONDARY_LIGHT-$SECONDARY
TitleFontColor $PRIMARY
}
!endsub
!startsub activity
skinparam activity {
$primary_scheme()
BarColor $SUCCESS
StartColor $INFO
EndColor $INFO
''
DiamondBackgroundColor $SECONDARY_LIGHT
DiamondBorderColor $SECONDARY_DARK
DiamondFontColor $SECONDARY_TEXT
}
!endsub
!startsub participant
skinparam participant {
$primary_scheme()
ParticipantBorderThickness 2
}
!endsub
!startsub actor
skinparam actor {
$primary_scheme()
FontColor $PRIMARY
}
!endsub
!startsub arrow
skinparam arrow {
Thickness 3
Color $PRIMARY
FontColor $FGCOLOR
}
!endsub
!startsub sequence
skinparam sequence {
BorderColor $PRIMARY
' For some reason sequence title font color does not pick up from global
TitleFontColor $PRIMARY
BackgroundColor $BGCOLOR
StartColor $PRIMARY
EndColor $PRIMARY
''
BoxBackgroundColor $BGCOLOR
BoxBorderColor $DARK
BoxFontColor $DARk
''
LifeLineBorderColor $SECONDARY
LifeLineBorderThickness 2
LifeLineBackgroundColor $SECONDARY_DARK
''
GroupBorderColor $SECONDARY
GroupFontColor $DARK
GroupHeaderFontColor $INFO
GroupBackgroundColor $SECONDARY
GroupHeaderBackgroundColor $BGCOLOR
''
DividerBackgroundColor $DARK
DividerBorderColor $DARK
DividerBorderThickness 2
DividerFontColor $LIGHT
''
ReferenceBackgroundColor $BGCOLOR
ReferenceBorderColor $SECONDARY
ReferenceFontColor $SECONDARY_TEXT
ReferenceHeaderBackgroundColor $SECONDARY
}
!endsub
!startsub partition
skinparam partition {
BorderColor $PRIMARY
FontColor $PRIMARY
BackgroundColor $BGCOLOR
}
!endsub
!startsub collections
skinparam collections {
$primary_scheme()
}
!endsub
!startsub control
skinparam control {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub entity
skinparam entity {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub boundary
skinparam boundary {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub agent
skinparam agent {
BackgroundColor $WARNING
BorderColor $WARNING_LIGHT
FontColor $DARK
}
!endsub
!startsub note
skinparam note {
BorderThickness 1
BackgroundColor $INFO
BorderColor $INFO_DARK
FontColor $WHITE
}
!endsub
!startsub artifact
skinparam artifact {
BackgroundColor $DARK
BorderColor $DARK_DARK
FontColor $LIGHT
}
!endsub
!startsub component
skinparam component {
$primary_scheme()
}
!endsub
!startsub interface
skinparam interface {
BackgroundColor $DANGER_DARK
BorderColor $DANGER
FontColor $DARK
}
!endsub
!startsub storage
skinparam storage {
BackgroundColor $WARNING
BorderColor $WARNING_DARK
FontColor $WARNING_TEXT
}
!endsub
!startsub node
skinparam node {
BackgroundColor $SECONDARY
BorderColor $DARK
FontColor $DARK
}
!endsub
!startsub cloud
skinparam cloud {
BackgroundColor $LIGHT-black
BorderColor $LIGHT
FontColor $DARK
}
!endsub
!startsub database
skinparam database {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub actor
skinparam actor {
FontColor $DARK
}
!endsub
!startsub class
skinparam class {
$primary_scheme()
HeaderBackgroundColor $PRIMARY_LIGHT
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $LIGHT
AttributeFontSize 11
}
!endsub
!startsub object
skinparam object {
$primary_scheme()
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub usecase
skinparam usecase {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub rectangle
skinparam rectangle {
$primary_scheme()
BackgroundColor $SECONDARY_LIGHT
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub package
skinparam package {
BackgroundColor $SECONDARY
BorderColor $PRIMARY
FontColor $PRIMARY
BorderThickness 2
}
!endsub
!startsub folder
skinparam folder {
BackgroundColor $SECONDARY_LIGHT
BorderColor $WARNING
FontColor $WARNING
BorderThickness 2
}
!endsub
!startsub frame
skinparam frame {
BackgroundColor $SECONDARY_LIGHT
BorderColor $INFO
FontColor $INFO
BorderThickness 2
}
!endsub
!startsub state
skinparam state {
$primary_scheme()
StartColor $INFO
EndColor $INFO
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub queue
skinparam queue {
$primary_scheme()
}
!endsub
!startsub card
skinparam card {
BackgroundColor $INFO
BorderColor $INFO_DARK
FontColor $INFO_TEXT
}
!endsub
!startsub file
skinparam file {
BackgroundColor $SECONDARY_DARK
BorderColor $DARK
FontColor $DARK
}
!endsub
!startsub stack
skinparam stack {
$primary_scheme()
}
!endsub

View File

@ -0,0 +1,479 @@
''
'' hacker theme based off of the Jekyll theme of the same name
'' https://github.com/pages-themes/hacker
''
'' Author: Brett Schwarz
'' Copyright (c) 2019 by Brett Schwarz
!$THEME = "hacker"
!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "transparent"
!endif
skinparam BackgroundColor $BGCOLOR
skinparam useBetaStyle false
''
'' Colors taken from the _default_colors.scss file for jekyll hacker theme
''
!$PRIMARY = "#b5e853"
!$PRIMARY_LIGHT = "#d3f198"
!$PRIMARY_DARK = "#6d8b32"
!$PRIMARY_TEXT = "#151515"
!$SECONDARY = "#6a9fb5"
!$SECONDARY_LIGHT = "#88b2c4"
!$SECONDARY_DARK = "#557f91"
!$SECONDARY_TEXT = "#fefefe"
!$SUCCESS = "#90a959"
!$SUCCESS_LIGHT = "#a6ba7a"
!$INFO = "#aa759f"
!$INFO_LIGHT = "#bb91b2"
!$INFO_DARK = "#885E7F"
!$WARNING = "#f4bf75"
!$WARNING_LIGHT = "#f6cc91"
!$WARNING_TEXT = "#151515"
!$DANGER = "#ac4142"
!$DANGER_LIGHT = "#bd6768"
!$LIGHT = "#151515"
!$DARK = "#eaeaea"
!procedure $success($msg)
<font color=$SUCCESS><b>$msg
!endprocedure
!procedure $failure($msg)
<font color=$DANGER><b>$msg
!endprocedure
!procedure $warning($msg)
<font color=$WARNING><b>$msg
!endprocedure
!procedure $primary_scheme()
FontColor $PRIMARY_TEXT
BorderColor $PRIMARY_LIGHT
BackgroundColor $PRIMARY_LIGHT-$PRIMARY
!endprocedure
''
'' Global Default Values
''
skinparam defaultFontName "Verdana"
skinparam defaultFontSize 12
skinparam dpi 100
skinparam shadowing false
skinparam roundcorner 40
skinparam ParticipantPadding 40
skinparam BoxPadding 40
skinparam Padding 5
skinparam ArrowColor $DARK
skinparam stereotype {
CBackgroundColor $SECONDARY_DARK
CBorderColor $SECONDARY_LIGHT
ABackgroundColor $SUCCESS_LIGHT
ABorderColor $SUCCESS_DARK
IBackgroundColor $DANGER_LIGHT
IBorderColor $DANGER_DARK
EBackgroundColor $WARNING_LIGHT
EBorderColor $WARNING_DARK
NBackgroundColor $INFO_LIGHT
NBorderColor $INFO_DARK
}
skinparam title {
FontColor $PRIMARY
BorderColor $PRIMARY
FontSize 20
BorderRoundCorner 8
BorderThickness 1
BackgroundColor $LIGHT-black
}
skinparam legend {
BackgroundColor $SECONDARY
BorderColor $SECONDARY_DARK
FontColor $DARK
}
!startsub swimlane
skinparam swimlane {
BorderColor $INFO
BorderThickness 2
TitleBackgroundColor $SECONDARY_LIGHT-$SECONDARY
TitleFontColor $PRIMARY
}
!endsub
!startsub activity
skinparam activity {
$primary_scheme()
BarColor $SUCCESS
StartColor $INFO
EndColor $INFO
''
DiamondBackgroundColor $SECONDARY_LIGHT-$SECONDARY
DiamondBorderColor $SECONDARY_LIGHT
DiamondFontColor $SECONDARY_TEXT
}
!endsub
!startsub participant
skinparam participant {
$primary_scheme()
BorderThickness 2
}
!endsub
!startsub actor
skinparam actor {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub arrow
skinparam arrow {
Thickness 3
Color $PRIMARY
FontColor $FGCOLOR
}
!endsub
!startsub sequence
skinparam sequence {
BorderColor $PRIMARY
' For some reason sequence title font color does not pick up from global
TitleFontColor $PRIMARY
BackgroundColor $BGCOLOR
StartColor $PRIMARY
EndColor $PRIMARY
''
BoxBackgroundColor $BGCOLOR
BoxBorderColor $DARK
BoxFontColor $DARk
''
LifeLineBorderColor $SECONDARY
LifeLineBorderThickness 2
LifeLineBackgroundColor $SECONDARY_DARK
''
GroupBackgroundColor $LIGHT
GroupBorderColor $DARK
GroupFontColor $DARK
GroupHeaderFontColor $INFO
GroupHeaderBackgroundColor $BGCOLOR
''
DividerBackgroundColor $DARK
DividerBorderColor $DARK
DividerBorderThickness 2
DividerFontColor $LIGHT
''
ReferenceBackgroundColor $BGCOLOR
ReferenceBorderColor $DARK
ReferenceFontColor $DARK
ReferenceHeaderBackgroundColor $LIGHT
}
!endsub
!startsub partition
skinparam partition {
BorderColor $PRIMARY
FontColor $PRIMARY
BackgroundColor $LIGHT-black
}
!endsub
!startsub collections
skinparam collections {
$primary_scheme()
}
!endsub
!startsub control
skinparam control {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub entity
skinparam entity {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub boundary
skinparam boundary {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub agent
skinparam agent {
BackgroundColor $WARNING_LIGHT-$WARNING
BorderColor $WARNING_LIGHT
FontColor $DARK
}
!endsub
!startsub note
skinparam note {
BorderThickness 1
BackgroundColor $INFO_LIGHT-$INFO_DARK
BorderColor $INFO_DARK
FontColor $WHITE
}
!endsub
!startsub artifact
skinparam artifact {
BackgroundColor $DARK
BorderColor white
FontColor $LIGHT
}
!endsub
!startsub component
skinparam component {
$primary_scheme()
}
!endsub
!startsub interface
skinparam interface {
BackgroundColor $DANGER_LIGHT-$DANGER
BorderColor $DANGER_LIGHT
FontColor $DARK
}
!endsub
!startsub storage
skinparam storage {
BackgroundColor $WARNING_LIGHT-$WARNING
BorderColor $WARNING_LIGHT
FontColor $WARNING_TEXT
}
!endsub
!startsub node
skinparam node {
BackgroundColor $LIGHT-black
BorderColor $PRIMARY_LIGHT
FontColor $DARK
}
!endsub
!startsub cloud
skinparam cloud {
BackgroundColor $BGCOLOR
BorderColor $DARK
FontColor $DARK
}
!endsub
!startsub database
skinparam database {
BackgroundColor $LIGHT-black
BorderColor $PRIMARY_LIGHT
FontColor $DARK
}
!endsub
!startsub class
skinparam class {
$primary_scheme()
HeaderBackgroundColor $PRIMARY_LIGHT-$PRIMARY
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $LIGHT
AttributeFontSize 11
}
!endsub
!startsub object
skinparam object {
$primary_scheme()
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $LIGHT
AttributeFontSize 11
}
!endsub
!startsub usecase
skinparam usecase {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub rectangle
skinparam rectangle {
BackgroundColor $BGCOLOR
BorderColor $PRIMARY
BorderThickness 2
FontColor $PRIMARY_DARK
StereotypeFontColor $PRIMARY
}
!endsub
!startsub package
skinparam package {
BackgroundColor $LIGHT
BorderColor $PRIMARY
FontColor $PRIMARY
BorderThickness 2
}
!endsub
!startsub folder
skinparam folder {
BackgroundColor $LIGHT-black
BorderColor $WARNING
FontColor $WARNING
BorderThickness 2
}
!endsub
!startsub frame
skinparam frame {
BackgroundColor $LIGHT-black
BorderColor $INFO
FontColor $INFO
BorderThickness 2
}
!endsub
!startsub state
skinparam state {
$primary_scheme()
StartColor $INFO
EndColor $INFO
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub queue
skinparam queue {
$primary_scheme()
}
!endsub
!startsub card
skinparam card {
BackgroundColor $INFO_LIGHT-$INFO
BorderColor $INFO_LIGHT
FontColor $INFO_TEXT
}
!endsub
!startsub file
skinparam file {
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
BorderColor $SECONDARY_LIGHT
FontColor $DARK
}
!endsub
!startsub stack
skinparam stack {
$primary_scheme()
}
!endsub
!if %variable_exists("NEWSTYLE")
<style>
wbsDiagram {
LineColor $PRIMARY
BorderThickness 3
BackgroundColor $LIGHT-black
FontColor $PRIMARY
:depth(0) {
fontSize 16
fontStyle bold
fontColor $SECONDARY
}
:depth(1) {
fontSize 14
padding 5
fontStyle bold
}
:depth(2) {
fontSize 12
padding 4
}
:depth(3) {
fontSize 11
padding 3
fontColor $INFO
}
}
</style>
<style>
mindmapDiagram {
LineColor $PRIMARY
BorderThickness 3
BackgroundColor $LIGHT-black
FontColor $PRIMARY
:depth(0) {
fontSize 16
fontStyle bold
fontColor $SECONDARY
}
:depth(1) {
fontSize 14
padding 5
fontStyle bold
}
:depth(2) {
fontSize 12
padding 4
}
:depth(3) {
fontSize 11
padding 3
fontColor $INFO
}
}
</style>
!endif

View File

@ -0,0 +1,36 @@
skinparam {
defaultTextAlignment center
shadowing false
RoundCorner 10
TitleFontSize 18
TitleFontColor #eaeaea
BackgroundColor transparent
}
<style>
wbsDiagram {
LineColor #b5e853
BorderThickness 3
BackgroundColor #151515
FontColor #eaeaea
:depth(0) {
fontSize 16
fontStyle bold
fontColor #6a9fb5
}
:depth(1) {
fontSize 14
padding 5
fontStyle bold
}
:depth(2) {
fontSize 12
padding 3
}
:depth(3) {
fontSize 10
padding 2
}
}
</style>

View File

@ -0,0 +1,423 @@
''
'' lightgray theme - mostly grays
''
'' Author: Brett Schwarz
'' Copyright (c) 2019 by Brett Schwarz
!$THEME = "lightgray"
!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "transparent"
!endif
skinparam backgroundColor $BGCOLOR
skinparam useBetaStyle false
!$WHITE = "#FFF"
!$GRAY_DARK = "#4d4d4d"
!$GRAY = "#737373"
!$LIGHT = "#fcfcfc"
!$DARK = "#303030"
'' *_LIGHT = tint (lighter) of the main color of 80%
'' where TINT is calculated by clr + (255-clr) * tint_factor
'' *_DARK = shade (darker) of the main color of 80%
'' and SHADE is calculated by clr * (1 - shade_factor)
''
!$FGCOLOR = $DARK
!$PRIMARY = "#e2e2e2"
!$PRIMARY_LIGHT = "#f3f3f3"
!$PRIMARY_DARK = "#888888"
!$PRIMARY_TEXT = "#336699"
!$SECONDARY = "#d2d2d2"
!$SECONDARY_LIGHT = "#dbdbdb"
!$SECONDARY_DARK = "#a8a8a8"
!$SECONDARY_TEXT = "white"
!$INFO = "#336699"
!$INFO_LIGHT = "#5c85ad"
!$INFO_DARK = "#29527a"
!$INFO_TEXT = $WHITE
!$SUCCESS = "#339933"
!$SUCCESS_LIGHT = "#5cad5c"
!$SUCCESS_DARK = "#297a29"
!$SUCCESS_TEXT = $WHITE
!$WARNING = "#ffae42"
!$WARNING_LIGHT = "#ffbe68"
!$WARNING_DARK = "#cc8b35"
!$WARNING_TEXT = $WHITE
!$DANGER = "#ff3333"
!$DANGER_LIGHT = "#ff5c5c"
!$DANGER_DARK = "#cc2929"
!$DANGER_TEXT = $WHITE
!procedure $success($msg)
<font color=$SUCCESS><b>$msg
!endprocedure
!procedure $failure($msg)
<font color=$DANGER><b>$msg
!endprocedure
!procedure $warning($msg)
<font color=$WARNING><b>$msg
!endprocedure
!procedure $primary_scheme()
FontColor $PRIMARY_TEXT
BorderColor $PRIMARY_LIGHT
BackgroundColor $PRIMARY_LIGHT-$PRIMARY
!endprocedure
''
'' Global Default Values
''
skinparam defaultFontName "Verdana"
skinparam defaultFontSize 12
skinparam dpi 100
skinparam shadowing false
skinparam roundcorner 15
skinparam ParticipantPadding 30
skinparam BoxPadding 30
skinparam Padding 10
skinparam ArrowColor $GRAY
skinparam stereotype {
CBackgroundColor $SECONDARY_LIGHT
CBorderColor $SECONDARY_DARK
ABackgroundColor $SUCCESS_LIGHT
ABorderColor $SUCCESS_DARK
IBackgroundColor $DANGER_LIGHT
IBorderColor $DANGER_DARK
EBackgroundColor $WARNING_LIGHT
EBorderColor $WARNING_DARK
NBackgroundColor $INFO_LIGHT
NBorderColor $INFO_DARK
}
skinparam title {
FontColor $SECONDARY_TEXT
BorderColor $SECONDARY
FontSize 20
BorderRoundCorner 8
BorderThickness 1
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
}
skinparam legend {
BackgroundColor $PRIMARY
BorderColor $PRIMARY_DARK
FontColor $PRIMARY_TEXT
}
!startsub swimlane
skinparam swimlane {
BorderColor $INFO
BorderThickness 2
TitleBackgroundColor $SECONDARY_LIGHT-$SECONDARY
TitleFontColor $PRIMARY
}
!endsub
!startsub activity
skinparam activity {
$primary_scheme()
BarColor $SUCCESS
StartColor $INFO
EndColor $INFO
''
DiamondBackgroundColor $SECONDARY-$SECONDARY_DARK
DiamondBorderColor $SECONDARY_DARK
DiamondFontColor $SECONDARY_TEXT
}
!endsub
!startsub participant
skinparam participant {
$primary_scheme()
ParticipantBorderThickness 2
}
!endsub
!startsub actor
skinparam actor {
$primary_scheme()
}
!endsub
!startsub arrow
skinparam arrow {
Thickness 3
Color $PRIMARY
FontColor $FGCOLOR
}
!endsub
!startsub sequence
skinparam sequence {
BorderColor $PRIMARY
' For some reason sequence title font color does not pick up from global
TitleFontColor $SECONDARY_TEXT
BackgroundColor $BGCOLOR
StartColor $PRIMARY
EndColor $PRIMARY
''
BoxBackgroundColor $LIGHT
BoxBorderColor $GRAY
BoxFontColor $DARK
''
LifeLineBorderColor $SECONDARY_DARK
LifeLineBorderThickness 2
LifeLineBackgroundColor $SECONDARY_LIGHT
''
GroupBorderColor $GRAY
GroupFontColor $DARK
GroupHeaderFontColor $INFO
''
DividerBackgroundColor $WHITE-$LIGHT
DividerBorderColor $GRAY
DividerBorderThickness 2
DividerFontColor $DARK
''
ReferenceBackgroundColor $BGCOLOR
ReferenceBorderColor $GRAY
ReferenceFontColor $DARK
ReferenceHeaderFontColor $INFO
}
!endsub
!startsub partition
skinparam partition {
BorderColor $PRIMARY
FontColor $PRIMARY_DARK
BackgroundColor $BGCOLOR
}
!endsub
!startsub collections
skinparam collections {
$primary_scheme()
}
!endsub
!startsub control
skinparam control {
$primary_scheme()
}
!endsub
!startsub entity
skinparam entity {
$primary_scheme()
}
!endsub
!startsub boundary
skinparam boundary {
$primary_scheme()
}
!endsub
!startsub agent
skinparam agent {
BackgroundColor #orange
BorderColor #999999
FontColor #333333
}
!endsub
!startsub note
skinparam note {
BorderThickness 1
BackgroundColor $INFO_LIGHT-$INFO
BorderColor $INFO
FontColor $WHITE
}
!endsub
!startsub artifact
skinparam artifact {
BackgroundColor white-$LIGHT
BorderColor $SECONDARY_DARK
FontColor $SECONDARY_DARK
}
!endsub
!startsub component
skinparam component {
$primary_scheme()
}
!endsub
!startsub interface
skinparam interface {
BackgroundColor $DANGER_LIGHT
BorderColor $DANGER
FontColor $DARK
}
!endsub
!startsub storage
skinparam storage {
BackgroundColor $WARNING_LIGHT-$WARNING
BorderColor $WARNING
FontColor $WARNING_TEXT
}
!endsub
!startsub node
skinparam node {
BackgroundColor $BGCOLOR
BorderColor $PRIMARY_LIGHT
FontColor $PRIMARY_TEXT
}
!endsub
!startsub cloud
skinparam cloud {
BackgroundColor #F2FCFE-#eeeeee
BorderColor $F2FCFE
FontColor $PRIMARY_TEXT
}
!endsub
!startsub database
skinparam database {
$primary_scheme()
BackgroundColor $BGCOLOR
}
!endsub
!startsub class
skinparam class {
$primary_scheme()
HeaderBackgroundColor $PRIMARY_LIGHT-$PRIMARY_DARK
StereotypeFontColor $DARK
StereotypeFontSize 9
BorderThickness 1
AttributeFontColor $DARK
AttributeFontSize 11
}
!endsub
!startsub object
skinparam object {
$primary_scheme()
StereotypeFontColor $LIGHT
BorderThickness 1
AttributeFontColor $DARK
AttributeFontSize 11
}
!endsub
!startsub usecase
skinparam usecase {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub rectangle
skinparam rectangle {
$primary_scheme()
BackgroundColor $BGCOLOR
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub package
skinparam package {
$primary_scheme()
BackgroundColor $BGCOLOR
BorderThickness 2
}
!endsub
!startsub folder
skinparam folder {
BackgroundColor $PRIMARY_LIGHT
BorderColor $WARNING
FontColor $WARNING
BorderThickness 2
}
!endsub
!startsub frame
skinparam frame {
BackgroundColor $PRIMARY_LIGHT
BorderColor $INFO
FontColor $INFO
BorderThickness 2
}
!endsub
!startsub state
skinparam state {
$primary_scheme()
BorderColor $PRIMARY_DARK
StartColor $INFO
EndColor $INFO
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub queue
skinparam queue {
$primary_scheme()
}
!endsub
!startsub card
skinparam card {
BackgroundColor $INFO_LIGHT-$INFO
BorderColor $INFO
FontColor $INFO_TEXT
}
!endsub
!startsub file
skinparam file {
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
BorderColor $SECONDARY_DARK
FontColor $SECONDARY_TEXT
}
!endsub
!startsub stack
skinparam stack {
$primary_scheme()
}
!endsub

View File

@ -0,0 +1,478 @@
''
'' materia theme based off of the bootstrap theme of the same name
'' https://bootswatch.com/materia/
''
'' Author: Brett Schwarz
'' Copyright (c) 2019 by Brett Schwarz
!$THEME = "materia-outline"
!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "transparent"
!endif
skinparam backgroundColor $BGCOLOR
skinparam useBetaStyle false
''
'' Colors taken from the css file of the BS theme
''
!$BLUE = "#2196F3"
!$INDIGO = "#6610f2"
!$PURPLE = "#6f42c1"
!$PINK = "#e83e8c"
!$RED = "#e51c23"
!$ORANGE = "#fd7e14"
!$YELLOW = "#ff9800"
!$GREEN = "#4CAF50"
!$TEAL = "#20c997"
!$CYAN = "#9C27B0"
!$WHITE = "#FFF"
!$GRAY_DARK = "#222"
!$GRAY = "#666"
!$PRIMARY = "#2196F3"
!$SECONDARY = "#fff"
!$SUCCESS = "#4CAF50"
!$INFO = "#9C27B0"
!$WARNING = "#ff9800"
!$DANGER = "#e51c23"
!$LIGHT = "#fff"
!$DARK = "#222"
'' *_LIGHT = tint (lighter) of the main color of 80%
'' where TINT is calculated by clr + (255-clr) * tint_factor
'' *_DARK = shade (darker) of the main color of 80%
'' and SHADE is calculated by clr * (1 - shade_factor)
''
!$FGCOLOR = $DARK
!$PRIMARY_LIGHT = "#4dabf5"
!$PRIMARY_DARK = "#1a78c2"
!$PRIMARY_TEXT = $PRIMARY
!$SECONDARY_LIGHT = "#fff"
!$SECONDARY_DARK = "#cccccc"
!$SECONDARY_TEXT = $SECONDARY_DARK
!$INFO_LIGHT = "#b052c0"
!$INFO_DARK = "#7D1F8D"
!$INFO_TEXT = $INFO
!$SUCCESS_LIGHT = "#70bf73"
!$SUCCESS_DARK = "#3D8C40"
!$SUCCESS_TEXT = $SUCCESS
!$WARNING_LIGHT = "#ffad33"
!$WARNING_DARK = "#CC7A00"
!$WARNING_TEXT = $WARNING
!$DANGER_LIGHT = "#B7161C"
!$DANGER_TEXT = $DANGER
!procedure $success($msg)
<font color=$SUCCESS><b>$msg
!endprocedure
!procedure $failure($msg)
<font color=$DANGER><b>$msg
!endprocedure
!procedure $warning($msg)
<font color=$WARNING><b>$msg
!endprocedure
!procedure $primary_scheme()
FontColor $PRIMARY_TEXT
BorderColor $PRIMARY
BackgroundColor $BGCOLOR
!endprocedure
''
'' Global Default Values
''
skinparam defaultFontName "Verdana"
skinparam defaultFontSize 12
skinparam dpi 100
skinparam shadowing true
skinparam roundcorner 8
skinparam ParticipantPadding 40
skinparam BoxPadding 40
skinparam Padding 10
skinparam TitleFontColor $DARK
skinparam TitleFontSize 20
skinparam TitleBorderThickness 0
skinparam ArrowColor $GRAY
skinparam stereotype {
CBackgroundColor $SECONDARY_LIGHT
CBorderColor $SECONDARY_DARK
ABackgroundColor $SUCCESS_LIGHT
ABorderColor $SUCCESS_DARK
IBackgroundColor $DANGER_LIGHT
IBorderColor $DANGER_DARK
EBackgroundColor $WARNING_LIGHT
EBorderColor $WARNING_DARK
NBackgroundColor $INFO_LIGHT
NBorderColor $INFO_DARK
}
skinparam title {
FontColor $PRIMARY
BorderColor $SECONDARY_DARK
FontSize 20
BorderRoundCorner 8
BorderThickness 1
BackgroundColor $BGCOLOR
}
skinparam legend {
BackgroundColor $BGCOLOR
BorderColor $SECONDARY_DARK
FontColor $DARK
}
!startsub swimlane
skinparam swimlane {
BorderColor $INFO
BorderThickness 2
TitleBackgroundColor $SECONDARY_LIGHT-$SECONDARY
TitleFontColor $PRIMARY
}
!endsub
!startsub activity
skinparam activity {
$primary_scheme()
' FontColor $PRIMARY_TEXT
' BorderColor $PRIMARY
' BackgroundColor $BGCOLOR
BarColor $SUCCESS
StartColor $INFO
EndColor $INFO
''
DiamondBackgroundColor $BGCOLOR
DiamondBorderColor $SECONDARY_DARK
DiamondFontColor $SECONDARY_TEXT
}
!endsub
!startsub participant
skinparam participant {
$primary_scheme()
ParticipantBorderThickness 2
}
!endsub
!startsub actor
skinparam actor {
$primary_scheme()
' FontColor $DARK
}
!endsub
!startsub arrow
skinparam arrow {
Thickness 3
Color $PRIMARY
FontColor $FGCOLOR
}
!endsub
!startsub sequence
skinparam sequence {
BorderColor $PRIMARY
' For some reason sequence title font color does not pick up from global
TitleFontColor $PRIMARY
BackgroundColor $BGCOLOR
StartColor $PRIMARY
EndColor $PRIMARY
''
BoxBackgroundColor $BGCOLOR
BoxBorderColor $GRAY
BoxFontColor $DARK
''
LifeLineBorderColor $SECONDARY_DARK
LifeLineBorderThickness 2
LifeLineBackgroundColor $BGCOLOR
''
GroupBorderColor $GRAY
GroupFontColor $DARK
GroupHeaderFontColor $INFO
''
DividerBackgroundColor $BGCOLOR
DividerBorderColor $GRAY
DividerBorderThickness 2
DividerFontColor $DARK
''
ReferenceBackgroundColor $BGCOLOR
ReferenceBorderColor $GRAY
ReferenceFontColor $DARK
ReferenceHeaderFontColor $INFO
}
!endsub
!startsub partition
skinparam partition {
BorderColor $PRIMARY
FontColor $PRIMARY
BackgroundColor $BGCOLOR
}
!endsub
!startsub collections
skinparam collections {
$primary_scheme()
' BackgroundColor $BGCOLOR
' BorderColor $PRIMARY
}
!endsub
!startsub control
skinparam control {
$primary_scheme()
' BackgroundColor $BGCOLOR
' BorderColor $PRIMARY_DARK
' FontColor $DARK
}
!endsub
!startsub entity
skinparam entity {
$primary_scheme()
' BackgroundColor $BGCOLOR
' BorderColor $PRIMARY_DARK
' FontColor $DARK
}
!endsub
!startsub boundary
skinparam boundary {
$primary_scheme()
' BackgroundColor $BGCOLOR
' BorderColor $PRIMARY_DARK
' FontColor $DARK
}
!endsub
!startsub agent
skinparam agent {
BackgroundColor $BGCOLOR
BorderColor #999999
FontColor #333333
}
!endsub
!startsub note
skinparam note {
BorderThickness 1
BackgroundColor $BGCOLOR
BorderColor $INFO
FontColor $INFO
}
!endsub
!startsub artifact
skinparam artifact {
BackgroundColor $BGCOLOR
BorderColor $GRAY
FontColor $GRAY
}
!endsub
!startsub component
skinparam component {
$primary_scheme()
' BackgroundColor $BGCOLOR
' BorderColor $SUCCESS
' FontColor $SUCCESS_TEXT
}
!endsub
!startsub interface
skinparam interface {
BackgroundColor $BGCOLOR
BorderColor $DANGER
FontColor $DARK
}
!endsub
!startsub storage
skinparam storage {
BackgroundColor $BGCOLOR
BorderColor $WARNING
FontColor $WARNING_TEXT
}
!endsub
!startsub node
skinparam node {
BackgroundColor $BGCOLOR
BorderColor $DARK
FontColor $DARK
}
!endsub
!startsub cloud
skinparam cloud {
BackgroundColor #F2FCFE-#eeeeee
BorderColor #F2FCFE
FontColor $DARK
}
!endsub
!startsub database
skinparam database {
$primary_scheme()
' BackgroundColor $BGCOLOR
' BorderColor $PRIMARY_DARK
' FontColor $DARK
}
!endsub
!startsub class
skinparam class {
$primary_scheme()
FontColor $LIGHT
HeaderBackgroundColor $PRIMARY-$PRIMARY_DARK
' FontColor $PRIMARY_TEXT
' BackgroundColor $BGCOLOR
' BorderColor $PRIMARY_DARK
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $DARK
AttributeFontSize 11
}
!endsub
!startsub object
skinparam object {
$primary_scheme()
' FontColor $SUCCESS
' BackgroundColor $BGCOLOR
' BorderColor $SECONDARY_DARK
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $SECONDARY_DARK
AttributeFontSize 11
}
!endsub
!startsub usecase
skinparam usecase {
$primary_scheme()
' BackgroundColor $BGCOLOR
' BorderColor $SECONDARY_DARK
BorderThickness 2
' FontColor $SECONDARY_TEXT
StereotypeFontColor $PRIMARY
}
!endsub
!startsub rectangle
skinparam rectangle {
$primary_scheme()
' BackgroundColor $BGCOLOR
' BorderColor $PRIMARY_DARK
BorderThickness 2
' FontColor $PRIMARY
StereotypeFontColor $PRIMARY
}
!endsub
!startsub package
skinparam package {
BackgroundColor $BGCOLOR
BorderColor $PRIMARY
FontColor $PRIMARY
BorderThickness 2
}
!endsub
!startsub folder
skinparam folder {
BackgroundColor $BGCOLOR
BorderColor $WARNING
FontColor $WARNING
BorderThickness 2
}
!endsub
!startsub frame
skinparam frame {
BackgroundColor $BGCOLOR
BorderColor $INFO
FontColor $INFO
BorderThickness 2
}
!endsub
!startsub state
skinparam state {
$primary_scheme()
StartColor $INFO
EndColor $INFO
' BackgroundColor $BGCOLOR
' BorderColor $SECONDARY_DARK
' FontColor $INFO
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub queue
skinparam queue {
$primary_scheme()
' BackgroundColor $BGCOLOR
' BorderColor $WARNING_DARK
' FontColor $WARNING_TEXT
}
!endsub
!startsub card
skinparam card {
BackgroundColor $BGCOLOR
BorderColor $INFO
FontColor $INFO_TEXT
}
!endsub
!startsub file
skinparam file {
BackgroundColor $BGCOLOR
BorderColor $GRAY
FontColor $GRAY
}
!endsub
!startsub stack
skinparam stack {
$primary_scheme()
' BackgroundColor $BGCOLOR
' BorderColor $PRIMARY
' FontColor $PRIMARY_TEXT
}
!endsub

View File

@ -0,0 +1,437 @@
''
'' materia theme based off of the bootstrap theme of the same name
'' https://bootswatch.com/materia/
''
'' Author: Brett Schwarz
'' Copyright (c) 2019 by Brett Schwarz
!$THEME = "materia"
!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "transparent"
!endif
skinparam backgroundColor $BGCOLOR
skinparam useBetaStyle false
''
'' Colors taken from the css file of the BS theme
''
!$BLUE = "#2196F3"
!$INDIGO = "#6610f2"
!$PURPLE = "#6f42c1"
!$PINK = "#e83e8c"
!$RED = "#e51c23"
!$ORANGE = "#fd7e14"
!$YELLOW = "#ff9800"
!$GREEN = "#4CAF50"
!$TEAL = "#20c997"
!$CYAN = "#9C27B0"
!$WHITE = "#FFF"
!$GRAY_DARK = "#222"
!$GRAY = "#666"
!$PRIMARY = "#2196F3"
!$SECONDARY = "#fff"
!$SUCCESS = "#4CAF50"
!$INFO = "#9C27B0"
!$WARNING = "#ff9800"
!$DANGER = "#e51c23"
!$LIGHT = "#fff"
!$DARK = "#222"
'' *_LIGHT = tint (lighter) of the main color of 80%
'' *_DARK = shade (darker) of the main color of 80%
''
!$FGCOLOR = $DARK
!$PRIMARY_LIGHT = "#4dabf5"
!$PRIMARY_DARK = "#1a78c2"
!$PRIMARY_TEXT = $WHITE
!$SECONDARY_LIGHT = "#fff"
!$SECONDARY_DARK = "#cccccc"
!$SECONDARY_TEXT = $DARK
!$INFO_LIGHT = "#b052c0"
!$INFO_DARK = "#7D1F8D"
!$INFO_TEXT = $WHITE
!$SUCCESS_LIGHT = "#70bf73"
!$SUCCESS_DARK = "#3D8C40"
!$SUCCESS_TEXT = $WHITE
!$WARNING_LIGHT = "#ffad33"
!$WARNING_DARK = "#CC7A00"
!$WARNING_TEXT = $WHITE
!$DANGER_DARK = "#b7161c"
!$DANGER_LIGHT = "#B7161C"
!$DANGER_TEXT = $WHITE
!procedure $success($msg)
<font color=$SUCCESS><b>$msg
!endprocedure
!procedure $failure($msg)
<font color=$DANGER><b>$msg
!endprocedure
!procedure $warning($msg)
<font color=$WARNING><b>$msg
!endprocedure
!procedure $primary_scheme()
FontColor $PRIMARY_TEXT
BorderColor $PRIMARY
BackgroundColor $PRIMARY_LIGHT-$PRIMARY
!endprocedure
''
'' Global Default Values
''
skinparam defaultFontName "Verdana"
skinparam defaultFontSize 12
skinparam dpi 100
skinparam shadowing true
skinparam roundcorner 8
skinparam ParticipantPadding 40
skinparam BoxPadding 40
skinparam Padding 10
skinparam ArrowColor $GRAY
skinparam stereotype {
CBackgroundColor $SECONDARY_LIGHT
CBorderColor $SECONDARY_DARK
ABackgroundColor $SUCCESS_LIGHT
ABorderColor $SUCCESS_DARK
IBackgroundColor $DANGER_LIGHT
IBorderColor $DANGER_DARK
EBackgroundColor $WARNING_LIGHT
EBorderColor $WARNING_DARK
NBackgroundColor $INFO_LIGHT
NBorderColor $INFO_DARK
}
skinparam title {
FontColor $PRIMARY
BorderColor $SECONDARY_DARK
FontSize 20
BorderRoundCorner 8
BorderThickness 1
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
}
skinparam legend {
BackgroundColor $SECONDARY
BorderColor $SECONDARY_DARK
FontColor $DARK
}
!startsub swimlane
skinparam swimlane {
BorderColor $INFO
BorderThickness 2
TitleBackgroundColor $SECONDARY_LIGHT-$SECONDARY
TitleFontColor $PRIMARY
}
!endsub
!startsub activity
skinparam activity {
$primary_scheme()
BarColor $SUCCESS
StartColor $INFO
EndColor $INFO
''
DiamondBackgroundColor $WHITE-$SECONDARY_LIGHT
DiamondBorderColor $SECONDARY_DARK
DiamondFontColor $SECONDARY_TEXT
}
!endsub
!startsub participant
skinparam participant {
$primary_scheme()
ParticipantBorderThickness 2
}
!endsub
!startsub actor
skinparam actor {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub arrow
skinparam arrow {
Thickness 3
Color $PRIMARY
FontColor $FGCOLOR
}
!endsub
!startsub sequence
skinparam sequence {
BorderColor $PRIMARY
' For some reason sequence title font color does not pick up from global
TitleFontColor $PRIMARY
BackgroundColor transparent
StartColor $PRIMARY
EndColor $PRIMARY
''
BoxBackgroundColor $LIGHT
BoxBorderColor $GRAY
BoxFontColor $DARK
''
LifeLineBorderColor $SECONDARY_DARK
LifeLineBorderThickness 2
LifeLineBackgroundColor $SECONDARY_LIGHT
''
GroupBorderColor $GRAY
GroupFontColor $DARK
GroupHeaderFontColor $INFO
''
DividerBackgroundColor $WHITE-$LIGHT
DividerBorderColor $GRAY
DividerBorderThickness 2
DividerFontColor $DARK
''
ReferenceBackgroundColor $BGCOLOR
ReferenceBorderColor $GRAY
ReferenceFontColor $DARK
ReferenceHeaderFontColor $INFO
}
!endsub
!startsub partition
skinparam partition {
BorderColor $PRIMARY
FontColor $PRIMARY
BackgroundColor transparent
}
!endsub
!startsub collections
skinparam collections {
$primary_scheme()
}
!endsub
!startsub control
skinparam control {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub entity
skinparam entity {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub boundary
skinparam boundary {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub agent
skinparam agent {
BackgroundColor #orange
BorderColor #999999
FontColor #333333
}
!endsub
!startsub note
skinparam note {
BorderThickness 1
BackgroundColor $INFO_LIGHT-$INFO
BorderColor $INFO
FontColor $WHITE
}
!endsub
!startsub artifact
skinparam artifact {
BackgroundColor $WHITE-$LIGHT
BorderColor $GRAY
FontColor $GRAY
}
!endsub
!startsub component
skinparam component {
$primary_scheme()
}
!endsub
!startsub interface
skinparam interface {
BackgroundColor $DANGER_LIGHT
BorderColor $DANGER
FontColor $DARK
}
!endsub
!startsub storage
skinparam storage {
BackgroundColor $WARNING_LIGHT-$WARNING
BorderColor $WARNING
FontColor $WARNING_TEXT
}
!endsub
!startsub node
skinparam node {
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
BorderColor $DARK
FontColor $DARK
}
!endsub
!startsub cloud
skinparam cloud {
BackgroundColor #F2FCFE-#eeeeee
BorderColor #F2FCFE
FontColor $DARK
}
!endsub
!startsub database
skinparam database {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub class
skinparam class {
$primary_scheme()
HeaderBackgroundColor $PRIMARY-$PRIMARY_DARK
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $LIGHT
AttributeFontSize 11
}
!endsub
!startsub object
skinparam object {
$primary_scheme()
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub usecase
skinparam usecase {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub rectangle
skinparam rectangle {
FontColor $PRIMARY
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub package
skinparam package {
$primary_scheme()
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
BorderThickness 2
}
!endsub
!startsub folder
skinparam folder {
BackgroundColor $WHITE-$SECONDARY_LIGHT
BorderColor $WARNING
FontColor $WARNING
BorderThickness 2
}
!endsub
!startsub frame
skinparam frame {
BackgroundColor $WHITE-$SECONDARY_LIGHT
BorderColor $INFO
FontColor $INFO
BorderThickness 2
}
!endsub
!startsub state
skinparam state {
$primary_scheme()
BorderColor $PRIMARY_DARK
StartColor $INFO
EndColor $INFO
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub queue
skinparam queue {
$primary_scheme()
}
!endsub
!startsub card
skinparam card {
BackgroundColor $INFO_LIGHT-$INFO
BorderColor $INFO
FontColor $INFO_TEXT
}
!endsub
!startsub file
skinparam file {
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
BorderColor $GRAY
FontColor $GRAY
}
!endsub
!startsub stack
skinparam stack {
$primary_scheme()
}
!endsub

View File

@ -0,0 +1,443 @@
''
'' Silver theme - mostly grays
''
'' Author: Brett Schwarz
'' Copyright (c) 2019 by Brett Schwarz
!$THEME = "metal"
!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "transparent"
!endif
skinparam backgroundColor $BGCOLOR
skinparam useBetaStyle false
!$WHITE = "#fdfdfd"
!$GRAY_DARK = "#4d4d4d"
!$GRAY = "#737373"
!$LIGHT = "#f2f2f2"
!$DARK = "#4d4d4d"
!$SILVER = "#c0c0c0"
!$COPPER = "#B87333c"
!$STEELBLUE = "#4682b4"
!$LIGHTSTEELBLUE = "#B0C4DE"
!$LIGHTSTEELBLUE_DARK = "#8d9db2"
!$LIGHTSTEELBLUE_LIGHT = "#c0d0e5"
!$ALUMINUM = "#c9ced0"
!$ALUMINUM_DARK = "#a1a5a6"
!$ALUMINUM_LIGHT = "#d4d8d9"
!$BRONZE = "#CD7F32"
!$BRONZE_DARK = "#a46628"
!$BRONZE_LIGHT = "#d7995b"
!$GOLD = "#FFD700"
!$PLATINUM = "#E5E4E2"
!$RUST = "#B7410E"
'' *_LIGHT = tint (lighter) of the main color of 80%
'' where TINT is calculated by clr + (255-clr) * tint_factor
'' *_DARK = shade (darker) of the main color of 80%
'' and SHADE is calculated by clr * (1 - shade_factor)
''
!$FGCOLOR = $DARK
!$PRIMARY = $PLATINUM
!$PRIMARY_LIGHT = "#eae9e8"
!$PRIMARY_DARK = "#b7b6b5"
!$PRIMARY_TEXT = $STEELBLUE
!$SECONDARY = $SILVER
!$SECONDARY_LIGHT = "#cdcdcd"
!$SECONDARY_DARK = "#9a9a9a"
!$SECONDARY_TEXT = $WHITE
!$INFO = $STEELBLUE
!$INFO_LIGHT = "#5c85ad"
!$INFO_DARK = "#29527a"
!$INFO_TEXT = $WHITE
!$SUCCESS = "#339933"
!$SUCCESS_LIGHT = "#5cad5c"
!$SUCCESS_DARK = "#297a29"
!$SUCCESS_TEXT = $WHITE
!$WARNING = $GOLD
!$WARNING_LIGHT = "#ffdf33"
!$WARNING_DARK = "#ccac00"
!$WARNING_TEXT = $WHITE
!$DANGER = $RUST
!$DANGER_LIGHT = "#c5673e"
!$DANGER_DARK = "#92340b"
!$DANGER_TEXT = $WHITE
!procedure $success($msg)
<font color=$SUCCESS><b>$msg
!endprocedure
!procedure $failure($msg)
<font color=$DANGER><b>$msg
!endprocedure
!procedure $warning($msg)
<font color=$WARNING><b>$msg
!endprocedure
!procedure $primary_scheme()
FontColor $PRIMARY_TEXT
BorderColor $PRIMARY_DARK
BackgroundColor $PRIMARY-$PRIMARY_DARK
!endprocedure
''
'' Global Default Values
''
skinparam defaultFontName "Verdana"
skinparam defaultFontSize 12
skinparam dpi 100
skinparam shadowing false
skinparam roundcorner 15
skinparam ParticipantPadding 30
skinparam BoxPadding 30
skinparam Padding 8
skinparam ArrowColor $GRAY
skinparam stereotype {
CBackgroundColor $SECONDARY_LIGHT
CBorderColor $SECONDARY_DARK
ABackgroundColor $SUCCESS_LIGHT
ABorderColor $SUCCESS_DARK
IBackgroundColor $DANGER_LIGHT
IBorderColor $DANGER_DARK
EBackgroundColor $WARNING_LIGHT
EBorderColor $WARNING_DARK
NBackgroundColor $INFO_LIGHT
NBorderColor $INFO_DARK
}
skinparam title {
FontColor $WHITE
BorderColor $SECONDARY_DARK
FontSize 20
BorderRoundCorner 8
BorderThickness 1
BackgroundColor $SECONDARY_LIGHT-$SECONDARY_DARK
}
skinparam legend {
BackgroundColor $PRIMARY_LIGHT-$PRIMARY
BorderColor $SECONDARY_DARK
FontColor $PRIMARY_TEXT
}
!startsub swimlane
skinparam swimlane {
BorderColor $INFO
BorderThickness 2
TitleBackgroundColor $SECONDARY_LIGHT-$SECONDARY
TitleFontColor $PRIMARY
}
!endsub
!startsub activity
skinparam activity {
$primary_scheme()
BarColor $BRONZE
StartColor $INFO
EndColor $INFO
''
DiamondBackgroundColor $SECONDARY-$SECONDARY_DARK
DiamondBorderColor $SECONDARY_DARK
DiamondFontColor $SECONDARY_TEXT
}
!endsub
!startsub participant
skinparam participant {
$primary_scheme()
ParticipantBorderThickness 2
}
!endsub
!startsub actor
skinparam actor {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub arrow
skinparam arrow {
Thickness 3
Color $PRIMARY
FontColor $FGCOLOR
}
!endsub
!startsub sequence
skinparam sequence {
BorderColor $PRIMARY
' For some reason sequence title font color does not pick up from global
TitleFontColor $WHITE
BackgroundColor $BGCOLOR
StartColor $PRIMARY
EndColor $PRIMARY
''
BoxBackgroundColor $LIGHT
BoxBorderColor $GRAY
BoxFontColor $DARK
''
LifeLineBorderColor $SECONDARY_DARK
LifeLineBorderThickness 3
LifeLineBackgroundColor $SECONDARY_LIGHT-$SECONDARY_DARK
''
GroupBorderColor $GRAY
GroupFontColor $DARK
GroupHeaderFontColor $INFO
''
DividerBackgroundColor $WHITE-$LIGHT
DividerBorderColor $GRAY
DividerBorderThickness 2
DividerFontColor $DARK
''
ReferenceBackgroundColor $BGCOLOR
ReferenceBorderColor $GRAY
ReferenceFontColor $DARK
ReferenceHeaderFontColor $INFO
}
!endsub
!startsub partition
skinparam partition {
BorderColor $PRIMARY
FontColor $PRIMARY_DARK
BackgroundColor $BGCOLOR
}
!endsub
!startsub collections
skinparam collections {
$primary_scheme()
}
!endsub
!startsub control
skinparam control {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub entity
skinparam entity {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub boundary
skinparam boundary {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub agent
skinparam agent {
BackgroundColor #orange
BorderColor #999999
FontColor #333333
}
!endsub
!startsub note
skinparam note {
BorderThickness 1
BackgroundColor $LIGHTSTEELBLUE_LIGHT-$LIGHTSTEELBLUE_DARK
BorderColor $LIGHTSTEELBLUE_DARK
FontColor $WHITE
}
!endsub
!startsub artifact
skinparam artifact {
BackgroundColor $SECONDARY_LIGHT-$SECONDARY_DARK
BorderColor $SECONDARY_DARK
FontColor $SECONDARY_TEXT
}
!endsub
!startsub component
skinparam component {
$primary_scheme()
}
!endsub
!startsub interface
skinparam interface {
BackgroundColor $DANGER_LIGHT
BorderColor $DANGER
FontColor $DARK
}
!endsub
!startsub storage
skinparam storage {
BackgroundColor $WARNING_LIGHT-$WARNING_DARK
BorderColor $WARNING_DARK
FontColor $WARNING_TEXT
}
!endsub
!startsub node
skinparam node {
BackgroundColor $PRIMARY_LIGHT-$PRIMARY
BorderColor $PRIMARY
FontColor $DARK
}
!endsub
!startsub cloud
skinparam cloud {
BackgroundColor #F2FCFE-#eeeeee
BorderColor #F2FCFE
FontColor $DARK
}
!endsub
!startsub database
skinparam database {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub class
skinparam class {
$primary_scheme()
HeaderBackgroundColor $PRIMARY_LIGHT-$PRIMARY_DARK
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $DARK
AttributeFontSize 11
}
!endsub
!startsub object
skinparam object {
$primary_scheme()
StereotypeFontColor $LIGHT
BorderThickness 1
AttributeFontColor $WHITE
AttributeFontSize 11
}
!endsub
!startsub usecase
skinparam usecase {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub rectangle
skinparam rectangle {
$primary_scheme()
BackgroundColor $WHITE-$LIGHT
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub package
skinparam package {
$primary_scheme()
BackgroundColor $PRIMARY_LIGHT-$PRIMARY
BorderThickness 2
}
!endsub
!startsub folder
skinparam folder {
BackgroundColor $PRIMARY_LIGHT-$PRIMARY
BorderColor $RUST
FontColor $RUST
BorderThickness 2
}
!endsub
!startsub frame
skinparam frame {
BackgroundColor $PRIMARY_LIGHT-$PRIMARY
BorderColor $INFO
FontColor $INFO
BorderThickness 2
}
!endsub
!startsub state
skinparam state {
$primary_scheme()
StartColor $INFO
EndColor $INFO
AttributeFontColor $SECONDARY
AttributeFontSize 11
}
!endsub
!startsub queue
skinparam queue {
$primary_scheme()
}
!endsub
!startsub card
skinparam card {
BackgroundColor $INFO_LIGHT-$INFO_DARK
BorderColor $INFO
FontColor $INFO_TEXT
}
!endsub
!startsub file
skinparam file {
BackgroundColor $SECONDARY_LIGHT-$SECONDARY_DARK
BorderColor $GRAY
FontColor $LIGHT
}
!endsub
!startsub stack
skinparam stack {
$primary_scheme()
}
!endsub

View File

@ -0,0 +1,440 @@
''
'' superhero theme based off of the bootstrap theme of the same name
'' https://bootswatch.com/minty/
''
'' Author = "Brett Schwarz
'' Copyright (c) 2020 by Brett Schwarz
!$THEME = "minty"
!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "transparent"
!endif
skinparam backgroundColor $BGCOLOR
skinparam useBetaStyle false
''
'' Colors taken from the css file of the BS theme
''
!$BLUE = "#007bff"
!$INDIGO = "#6610f2"
!$PURPLE = "#6f42c1"
!$PINK = "#e83e8c"
!$RED = "#ff7851"
!$ORANGE = "#fd7e14"
!$YELLOW = "#ffce67"
!$GREEN = "#56cc9d"
!$TEAL = "#20c997"
!$CYAN = "#6cc3d5"
!$WHITE = "#fff"
!$GRAY = "#888"
!$GRAYDARK = "#343a40"
!$PRIMARY = "#78c2ad"
!$SECONDARY = "#f3969a"
!$SUCCESS = "#56cc9d"
!$INFO = "#6cc3d5"
!$WARNING = "#ffce67"
!$DANGER = "#ff7851"
!$LIGHT = "#f8f9fa"
!$DARK = "#343a40"
'' *_DARK = tint (lighter) of the main color of 80%
'' where TINT is calculated by clr + (255-clr) * tint_factor
'' *_LIGHT = shade (darker) of the main color of 80%
'' and SHADE is calculated by clr * (1 - shade_factor)
''
!$FGCOLOR = $WHITE
!$PRIMARY_DARK = "#6caf9c"
!$PRIMARY_LIGHT = "#86c8b5"
!$PRIMARY_TEXT = $WHITE
!$SECONDARY_DARK = "#db878b"
!$SECONDARY_LIGHT = "#f4a1a4"
!$SECONDARY_TEXT = $WHITE
!$INFO_DARK = "#61b0c0"
!$INFO_LIGHT = "#7bc9d9"
!$INFO_TEXT = $WHITE
!$SUCCESS_DARK = "#4db88d"
!$SUCCESS_LIGHT = "#67d1a7"
!$SUCCESS_TEXT = $WHITE
!$WARNING_DARK = "#e6b95d"
!$WARNING_LIGHT = "#ffd376"
!$WARNING_TEXT = $WHITE
!$DANGER_DARK = "#e66c49"
!$DANGER_LIGHT = "#ff8662"
!$DANGER_TEXT = $WHITE
!$DARK_DARK = "#2f343a"
!$DARK_LIGHT = "#484e53"
!$LIGHT_DARK = "#dfe0e1"
!$LIGHT_LIGHT = "#f9fafb"
!procedure $success($msg)
<font color=$SUCCESS><b>$msg
!endprocedure
!procedure $failure($msg)
<font color=$DANGER><b>$msg
!endprocedure
!procedure $warning($msg)
<font color=$WARNING><b>$msg
!endprocedure
!procedure $primary_scheme()
FontColor $PRIMARY_TEXT
BorderColor $PRIMARY
BackgroundColor $PRIMARY_LIGHT
!endprocedure
''
'' Global Default Values
''
skinparam defaultFontName "Verdana"
skinparam defaultFontSize 12
skinparam dpi 100
skinparam shadowing false
skinparam roundcorner 8
skinparam ParticipantPadding 40
skinparam BoxPadding 40
skinparam Padding 5
skinparam ArrowColor $DARK
skinparam stereotype {
CBackgroundColor $SECONDARY_LIGHT
CBorderColor $SECONDARY_DARK
ABackgroundColor $SUCCESS_LIGHT
ABorderColor $SUCCESS_DARK
IBackgroundColor $DANGER_LIGHT
IBorderColor $DANGER_DARK
EBackgroundColor $WARNING_LIGHT
EBorderColor $WARNING_DARK
NBackgroundColor $INFO_LIGHT
NBorderColor $INFO_DARK
}
skinparam title {
FontColor $PRIMARY_DARK
BorderColor $SECONDARY_DARK
FontSize 20
BorderRoundCorner 8
BorderThickness 1
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
}
skinparam legend {
BackgroundColor $SECONDARY
BorderColor $SECONDARY_DARK
FontColor $LIGHT
}
!startsub swimlane
skinparam swimlane {
BorderColor $INFO
BorderThickness 2
TitleBackgroundColor $SECONDARY_LIGHT-$SECONDARY
TitleFontColor $PRIMARY
}
!endsub
!startsub activity
skinparam activity {
$primary_scheme()
BarColor $SUCCESS
StartColor $INFO
EndColor $INFO
''
DiamondBackgroundColor $SECONDARY_LIGHT
DiamondBorderColor $SECONDARY_DARK
DiamondFontColor $SECONDARY_TEXT
}
!endsub
!startsub participant
skinparam participant {
$primary_scheme()
ParticipantBorderThickness 2
}
!endsub
!startsub actor
skinparam actor {
$primary_scheme()
}
!endsub
!startsub arrow
skinparam arrow {
Thickness 3
Color $PRIMARY
FontColor $FGCOLOR
}
!endsub
!startsub sequence
skinparam sequence {
BorderColor $PRIMARY
' For some reason sequence title font color does not pick up from global
TitleFontColor $PRIMARY
BackgroundColor $BGCOLOR
StartColor $PRIMARY
EndColor $PRIMARY
''
BoxBackgroundColor $BGCOLOR
BoxBorderColor $DARK
BoxFontColor $DARk
''
LifeLineBorderColor $SECONDARY
LifeLineBorderThickness 2
LifeLineBackgroundColor $SECONDARY_DARK
''
GroupBorderColor $DARK
GroupFontColor $DARK
GroupHeaderFontColor $INFO
GroupBackgroundColor $SECONDARY
GroupHeaderBackgroundColor $BGCOLOR
''
DividerBackgroundColor $DARK
DividerBorderColor $DARK
DividerBorderThickness 2
DividerFontColor $LIGHT
''
ReferenceBackgroundColor $BGCOLOR
ReferenceBorderColor $DARK
ReferenceFontColor $DARK
ReferenceHeaderFontColor $INFO
ReferenceHeaderBackgroundColor $SECONDARY
}
!endsub
!startsub partition
skinparam partition {
BorderColor $PRIMARY
FontColor $PRIMARY
BackgroundColor $BGCOLOR
}
!endsub
!startsub collections
skinparam collections {
$primary_scheme()
}
!endsub
!startsub control
skinparam control {
$primary_scheme()
}
!endsub
!startsub entity
skinparam entity {
$primary_scheme()
}
!endsub
!startsub boundary
skinparam boundary {
$primary_scheme()
}
!endsub
!startsub agent
skinparam agent {
BackgroundColor $WARNING
BorderColor $WARNING_LIGHT
FontColor $DARK
}
!endsub
!startsub note
skinparam note {
BorderThickness 1
BackgroundColor $INFO
BorderColor $INFO_DARK
FontColor $WHITE
}
!endsub
!startsub artifact
skinparam artifact {
BackgroundColor $DARK
BorderColor $DARK_DARK
FontColor $LIGHT
}
!endsub
!startsub component
skinparam component {
$primary_scheme()
}
!endsub
!startsub interface
skinparam interface {
BackgroundColor $DANGER_DARK
BorderColor $DANGER
FontColor $DARK
}
!endsub
!startsub storage
skinparam storage {
BackgroundColor $WARNING
BorderColor $WARNING_DARK
FontColor $WARNING_TEXT
}
!endsub
!startsub node
skinparam node {
BackgroundColor $SECONDARY
BorderColor $LIGHT
FontColor $LIGHT
}
!endsub
!startsub cloud
skinparam cloud {
BackgroundColor #F2FCFE-#eeeeee
BorderColor #F2FCFE
FontColor $DARK
}
!endsub
!startsub database
skinparam database {
$primary_scheme()
}
!endsub
!startsub class
skinparam class {
$primary_scheme()
HeaderBackgroundColor $PRIMARY_LIGHT
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $DARK
AttributeFontSize 11
}
!endsub
!startsub object
skinparam object {
$primary_scheme()
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub usecase
skinparam usecase {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub rectangle
skinparam rectangle {
$primary_scheme()
BackgroundColor $SECONDARY_LIGHT
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub package
skinparam package {
BackgroundColor $SECONDARY
BorderColor $PRIMARY
FontColor $PRIMARY
BorderThickness 2
}
!endsub
!startsub folder
skinparam folder {
BackgroundColor $SECONDARY_LIGHT
BorderColor $WARNING
FontColor $WARNING
BorderThickness 2
}
!endsub
!startsub frame
skinparam frame {
BackgroundColor $SECONDARY_LIGHT
BorderColor $INFO
FontColor $INFO
BorderThickness 2
}
!endsub
!startsub state
skinparam state {
$primary_scheme()
StartColor $INFO
EndColor $INFO
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub queue
skinparam queue {
$primary_scheme()
}
!endsub
!startsub card
skinparam card {
BackgroundColor $INFO
BorderColor $INFO_DARK
FontColor $INFO_TEXT
}
!endsub
!startsub file
skinparam file {
BackgroundColor $SECONDARY_DARK
BorderColor $LIGHT
FontColor $LIGHT
}
!endsub
!startsub stack
skinparam stack {
$primary_scheme()
}
!endsub

View File

@ -0,0 +1,48 @@
''
'' Author: Brett Schwarz
''
!$THEME = "resume-light"
!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "transparent"
!endif
skinparam backgroundColor $BGCOLOR
skinparam useBetaStyle false
skinparam {
skinparam defaultFontName "Verdana"
skinparam defaultFontSize 12
defaultTextAlignment center
shadowing false
RoundCorner 10
TitleFontSize 18
}
<style>
wbsDiagram {
LineColor #f0f0f0
BorderThickness 3
BackgroundColor #f9f9f9
FontColor #6a9fb5
:depth(0) {
fontSize 16
fontStyle bold
}
:depth(1) {
fontSize 14
padding 5
fontStyle bold
}
:depth(2) {
fontSize 12
padding 3
}
:depth(3) {
fontSize 10
padding 2
}
}
</style>

View File

@ -0,0 +1,441 @@
''
'' superhero theme based off of the bootstrap theme of the same name
'' https://bootswatch.com/sandstone/
''
'' Author: Brett Schwarz
'' Copyright (c) 2020 by Brett Schwarz
!$THEME = "sandstone"
!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "transparent"
!endif
skinparam backgroundColor $BGCOLOR
skinparam useBetaStyle false
''
'' Colors taken from the css file of the BS theme
''
!$BLUE = "#325d88"
!$INDIGO = "#6610f2"
!$PURPLE = "#6f42c1"
!$PINK = "#e83e8c"
!$RED = "#d9534f"
!$ORANGE = "#f47c3c"
!$YELLOW = "#ffc107"
!$GREEN = "#93c54b"
!$TEAL = "#20c997"
!$CYAN = "#29abe0"
!$WHITE = "#fff"
!$GRAY = "#8e8c84"
!$GRAYDARK = "#3e3f3a"
!$PRIMARY = "#325d88"
!$SECONDARY = "#8e8c84"
!$SUCCESS = "#93c54b"
!$INFO = "#29abe0"
!$WARNING = "#f47c3c"
!$DANGER = "#d9534f"
!$LIGHT = "#f8f5f0"
!$DARK = "#3e3f3a"
'' *_DARK = tint (lighter) of the main color of 80%
'' where TINT is calculated by clr + (255-clr) * tint_factor
'' *_LIGHT = shade (darker) of the main color of 80%
'' and SHADE is calculated by clr * (1 - shade_factor)
''
!$FGCOLOR = $WHITE
!$PRIMARY_DARK = "#2d547a"
!$PRIMARY_LIGHT = "#476d94"
!$PRIMARY_TEXT = $WHITE
!$SECONDARY_DARK = "#807e77"
!$SECONDARY_LIGHT = "#999890"
!$SECONDARY_TEXT = $WHITE
!$INFO_DARK = "#259aca"
!$INFO_LIGHT = "#3eb3e3"
!$INFO_TEXT = $WHITE
!$SUCCESS_DARK = "#84b144"
!$SUCCESS_LIGHT = "#9ecb5d"
!$SUCCESS_TEXT = $WHITE
!$WARNING_DARK = "#dc7036"
!$WARNING_LIGHT = "#f58950"
!$WARNING_TEXT = $WHITE
!$DANGER_DARK = "#c34b47"
!$DANGER_LIGHT = "#AE423F"
!$DANGER_TEXT = $WHITE
!$DARK_DARK = "#383934"
!$DARK_LIGHT = "#51524e"
!$LIGHT_DARK = "#dfddd8"
!$LIGHT_LIGHT = "#f9f6f2"
!procedure $success($msg)
<font color=$SUCCESS><b>$msg
!endprocedure
!procedure $failure($msg)
<font color=$DANGER><b>$msg
!endprocedure
!procedure $warning($msg)
<font color=$WARNING><b>$msg
!endprocedure
!procedure $primary_scheme()
FontColor $PRIMARY_TEXT
BorderColor $PRIMARY_DARK
BackgroundColor $PRIMARY
!endprocedure
''
'' Global Default Values
''
skinparam defaultFontName "Verdana"
skinparam defaultFontSize 12
skinparam dpi 100
skinparam shadowing false
skinparam roundcorner 8
skinparam ParticipantPadding 40
skinparam BoxPadding 40
skinparam Padding 5
skinparam ArrowColor $DARK
skinparam stereotype {
CBackgroundColor $SECONDARY_LIGHT
CBorderColor $SECONDARY_DARK
ABackgroundColor $SUCCESS_LIGHT
ABorderColor $SUCCESS_DARK
IBackgroundColor $DANGER_LIGHT
IBorderColor $DANGER_DARK
EBackgroundColor $WARNING_LIGHT
EBorderColor $WARNING_DARK
NBackgroundColor $INFO_LIGHT
NBorderColor $INFO_DARK
}
skinparam title {
FontColor $PRIMARY
BorderColor $SECONDARY_DARK
FontSize 20
BorderRoundCorner 8
BorderThickness 1
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
}
skinparam legend {
BackgroundColor $SECONDARY
BorderColor $SECONDARY_DARK
FontColor $LIGHT
}
!startsub swimlane
skinparam swimlane {
BorderColor $INFO
BorderThickness 2
TitleBackgroundColor $SECONDARY_LIGHT-$SECONDARY
TitleFontColor $PRIMARY
}
!endsub
!startsub activity
skinparam activity {
$primary_scheme()
BarColor $SUCCESS
StartColor $INFO
EndColor $INFO
''
DiamondBackgroundColor $SECONDARY_LIGHT
DiamondBorderColor $SECONDARY_DARK
DiamondFontColor $SECONDARY_TEXT
}
!endsub
!startsub participant
skinparam participant {
$primary_scheme()
ParticipantBorderThickness 2
}
!endsub
!startsub actor
skinparam actor {
$primary_scheme()
}
!endsub
!startsub arrow
skinparam arrow {
Thickness 3
Color $PRIMARY
FontColor $FGCOLOR
}
!endsub
!startsub sequence
skinparam sequence {
BorderColor $PRIMARY
' For some reason sequence title font color does not pick up from global
TitleFontColor $PRIMARY
BackgroundColor $BGCOLOR
StartColor $PRIMARY
EndColor $PRIMARY
''
BoxBackgroundColor $BGCOLOR
BoxBorderColor $DARK
BoxFontColor $DARk
''
LifeLineBorderColor $SECONDARY
LifeLineBorderThickness 2
LifeLineBackgroundColor $SECONDARY_DARK
''
GroupBorderColor $DARK
GroupFontColor $DARK
GroupHeaderFontColor $INFO
GroupBackgroundColor $SECONDARY
GroupHeaderBackgroundColor $BGCOLOR
''
DividerBackgroundColor $DARK
DividerBorderColor $DARK
DividerBorderThickness 2
DividerFontColor $LIGHT
''
ReferenceBackgroundColor $BGCOLOR
ReferenceBorderColor $DARK
ReferenceFontColor $DARK
ReferenceHeaderFontColor $INFO
ReferenceHeaderBackgroundColor $SECONDARY
}
!endsub
!startsub partition
skinparam partition {
BorderColor $PRIMARY
FontColor $PRIMARY
BackgroundColor $BGCOLOR
}
!endsub
!startsub collections
skinparam collections {
$primary_scheme()
}
!endsub
!startsub control
skinparam control {
$primary_scheme()
}
!endsub
!startsub entity
skinparam entity {
$primary_scheme()
}
!endsub
!startsub boundary
skinparam boundary {
$primary_scheme()
}
!endsub
!startsub agent
skinparam agent {
BackgroundColor $WARNING
BorderColor $WARNING_LIGHT
FontColor $DARK
}
!endsub
!startsub note
skinparam note {
BorderThickness 1
BackgroundColor $INFO
BorderColor $INFO_DARK
FontColor $WHITE
}
!endsub
!startsub artifact
skinparam artifact {
BackgroundColor $DARK
BorderColor $DARK_DARK
FontColor $LIGHT
}
!endsub
!startsub component
skinparam component {
$primary_scheme()
}
!endsub
!startsub interface
skinparam interface {
BackgroundColor $DANGER_DARK
BorderColor $DANGER
FontColor $DARK
}
!endsub
!startsub storage
skinparam storage {
BackgroundColor $WARNING
BorderColor $WARNING_DARK
FontColor $WARNING_TEXT
}
!endsub
!startsub node
skinparam node {
BackgroundColor $SECONDARY
BorderColor $LIGHT
FontColor $LIGHT
}
!endsub
!startsub cloud
skinparam cloud {
BackgroundColor #F2FCFE-#eeeeee
BorderColor #F2FCFE
FontColor $DARK
}
!endsub
!startsub database
skinparam database {
$primary_scheme()
}
!endsub
!startsub class
skinparam class {
$primary_scheme()
HeaderBackgroundColor $PRIMARY_LIGHT
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $PRIMARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub object
skinparam object {
$primary_scheme()
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub usecase
skinparam usecase {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub rectangle
skinparam rectangle {
$primary_scheme()
BackgroundColor $SECONDARY_LIGHT
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub package
skinparam package {
BackgroundColor $SECONDARY
BorderColor $PRIMARY
FontColor $PRIMARY
BorderThickness 2
}
!endsub
!startsub folder
skinparam folder {
BackgroundColor $SECONDARY_LIGHT
BorderColor $WARNING
FontColor $WARNING
BorderThickness 2
}
!endsub
!startsub frame
skinparam frame {
BackgroundColor $SECONDARY_LIGHT
BorderColor $INFO
FontColor $INFO
BorderThickness 2
}
!endsub
!startsub state
skinparam state {
$primary_scheme()
BackgroundColor $PRIMARY_LIGHT
StartColor $INFO
EndColor $INFO
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub queue
skinparam queue {
$primary_scheme()
}
!endsub
!startsub card
skinparam card {
BackgroundColor $INFO
BorderColor $INFO_DARK
FontColor $INFO_TEXT
}
!endsub
!startsub file
skinparam file {
BackgroundColor $SECONDARY_DARK
BorderColor $LIGHT
FontColor $LIGHT
}
!endsub
!startsub stack
skinparam stack {
$primary_scheme()
}
!endsub

View File

@ -0,0 +1,452 @@
''
'' Silver theme - mostly grays
''
'' Author: Brett Schwarz
'' Copyright (c) 2019 by Brett Schwarz
!$THEME = "silver"
!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "transparent"
!endif
skinparam backgroundColor $BGCOLOR
skinparam useBetaStyle false
!$WHITE = "#FFF"
!$GRAY_DARK = "#4d4d4d"
!$GRAY = "#737373"
!$LIGHT = "#ffffff"
!$DARK = "#303030"
'' *_LIGHT = tint (lighter) of the main color of 80%
'' where TINT is calculated by clr + (255-clr) * tint_factor
'' *_DARK = shade (darker) of the main color of 80%
'' and SHADE is calculated by clr * (1 - shade_factor)
''
!$FGCOLOR = $DARK
!$PRIMARY = "#eeeeee"
!$PRIMARY_LIGHT = "#f1f1f1"
!$PRIMARY_DARK = "#bebebe"
!$PRIMARY_TEXT = "#336699"
!$SECONDARY = "#d6d6d6"
!$SECONDARY_LIGHT = "#dedede"
!$SECONDARY_DARK = "#ababab"
!$SECONDARY_TEXT = $LIGHT
!$INFO = "#336699"
!$INFO_LIGHT = "#5c85ad"
!$INFO_DARK = "#29527a"
!$INFO_TEXT = $WHITE
!$SUCCESS = "#339933"
!$SUCCESS_LIGHT = "#5cad5c"
!$SUCCESS_DARK = "#297a29"
!$SUCCESS_TEXT = $WHITE
!$WARNING = "#ffae42"
!$WARNING_LIGHT = "#ffbe68"
!$WARNING_DARK = "#cc8b35"
!$WARNING_TEXT = $WHITE
!$DANGER = "#ff3333"
!$DANGER_LIGHT = "#ff5c5c"
!$DANGER_DARK = "#cc2929"
!$DANGER_TEXT = $WHITE
!procedure $success($msg)
<font color=$SUCCESS><b>$msg
!endprocedure
!procedure $failure($msg)
<font color=$DANGER><b>$msg
!endprocedure
!procedure $warning($msg)
<font color=$WARNING><b>$msg
!endprocedure
!procedure $primary_scheme()
FontColor $PRIMARY_TEXT
BorderColor $PRIMARY_LIGHT
BackgroundColor $PRIMARY-$PRIMARY_DARK
!endprocedure
''
'' Global Default Values
''
skinparam defaultFontName "Verdana"
skinparam defaultFontSize 12
skinparam dpi 100
skinparam shadowing false
skinparam roundcorner 15
skinparam ParticipantPadding 30
skinparam BoxPadding 30
skinparam Padding 8
skinparam ArrowColor $GRAY
skinparam stereotype {
CBackgroundColor $SECONDARY_LIGHT
CBorderColor $SECONDARY_DARK
ABackgroundColor $SUCCESS_LIGHT
ABorderColor $SUCCESS_DARK
IBackgroundColor $DANGER_LIGHT
IBorderColor $DANGER_DARK
EBackgroundColor $WARNING_LIGHT
EBorderColor $WARNING_DARK
NBackgroundColor $INFO_LIGHT
NBorderColor $INFO_DARK
}
skinparam title {
FontColor $PRIMARY
BorderColor $SECONDARY_DARK
FontSize 20
BorderRoundCorner 8
BorderThickness 1
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
}
skinparam legend {
BackgroundColor $SECONDARY
BorderColor $SECONDARY_DARK
FontColor $SECONDARY_TEXT
}
!startsub swimlane
skinparam swimlane {
BorderColor $INFO
BorderThickness 2
TitleBackgroundColor $SECONDARY_LIGHT-$SECONDARY
TitleFontColor $PRIMARY
}
!endsub
!startsub activity
skinparam activity {
$primary_scheme()
BarColor $SUCCESS
StartColor $INFO
EndColor $INFO
''
DiamondBackgroundColor $SECONDARY-$SECONDARY_DARK
DiamondBorderColor $SECONDARY_DARK
DiamondFontColor $SECONDARY_TEXT
}
!endsub
!startsub participant
skinparam participant {
$primary_scheme()
ParticipantBorderThickness 2
}
!endsub
!startsub actor
skinparam actor {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub arrow
skinparam arrow {
Thickness 3
Color $PRIMARY
FontColor $FGCOLOR
}
!endsub
!startsub sequence
skinparam sequence {
BorderColor $PRIMARY
' For some reason sequence title font color does not pick up from global
TitleFontColor $PRIMARY
BackgroundColor $BGCOLOR
StartColor $PRIMARY
EndColor $PRIMARY
''
BoxBackgroundColor $LIGHT
BoxBorderColor $GRAY
BoxFontColor $DARK
''
LifeLineBorderColor $SECONDARY_DARK
LifeLineBorderThickness 2
LifeLineBackgroundColor $SECONDARY_LIGHT
''
GroupBorderColor $GRAY
GroupFontColor $DARK
GroupHeaderFontColor $INFO
''
DividerBackgroundColor $WHITE-$LIGHT
DividerBorderColor $GRAY
DividerBorderThickness 2
DividerFontColor $DARK
''
ReferenceBackgroundColor $BGCOLOR
ReferenceBorderColor $GRAY
ReferenceFontColor $DARK
ReferenceHeaderFontColor $INFO
}
!endsub
!startsub partition
skinparam partition {
BorderColor $PRIMARY
FontColor $PRIMARY_DARK
BackgroundColor $BGCOLOR
}
!endsub
!startsub collections
skinparam collections {
$primary_scheme()
}
!endsub
!startsub control
skinparam control {
$primary_scheme()
}
!endsub
!startsub entity
skinparam entity {
$primary_scheme()
}
!endsub
!startsub boundary
skinparam boundary {
$primary_scheme()
}
!endsub
!startsub agent
skinparam agent {
BackgroundColor #orange
BorderColor #999999
FontColor #333333
}
!endsub
!startsub note
skinparam note {
BorderThickness 1
BackgroundColor $INFO_LIGHT-$INFO
BorderColor $INFO
FontColor $WHITE
}
!endsub
!startsub artifact
skinparam artifact {
BackgroundColor $SECONDARY_LIGHT-$SECONDARY_DARK
BorderColor $SECONDARY_DARK
FontColor $SECONDARY_TEXT
}
!endsub
!startsub component
skinparam component {
$primary_scheme()
}
!endsub
!startsub interface
skinparam interface {
BackgroundColor $DANGER_LIGHT
BorderColor $DANGER
FontColor $DARK
}
!endsub
!startsub storage
skinparam storage {
BackgroundColor $WARNING_LIGHT-$WARNING
BorderColor $WARNING
FontColor $WARNING_TEXT
}
!endsub
!startsub node
skinparam node {
BackgroundColor $PRIMARY_LIGHT-$PRIMARY_DARK
BorderColor $PRIMARY_LIGHT
FontColor $PRIMARY_TEXT
}
!endsub
!startsub cloud
skinparam cloud {
BackgroundColor #F2FCFE-#eeeeee
BorderColor #F2FCFE
FontColor $DARK
}
!endsub
!startsub database
skinparam database {
$primary_scheme()
FontColor $DARK
}
!endsub
!startsub class
skinparam class {
$primary_scheme()
HeaderBackgroundColor $PRIMARY_LIGHT-$PRIMARY_DARK
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $DARK
AttributeFontSize 9
}
!endsub
!startsub object
skinparam object {
$primary_scheme()
StereotypeFontColor $LIGHT
BorderThickness 1
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub usecase
skinparam usecase {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub rectangle
skinparam rectangle {
$primary_scheme()
BackgroundColor $PRIMARY_LIGHT
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub package
skinparam package {
$primary_scheme()
BorderThickness 2
}
!endsub
!startsub folder
skinparam folder {
BackgroundColor $PRIMARY-$PRIMARY_DARK
BorderColor $WARNING
FontColor $WARNING
BorderThickness 2
}
!endsub
!startsub frame
skinparam frame {
BackgroundColor $PRIMARY-$PRIMARY_DARK
BorderColor $INFO
FontColor $INFO
BorderThickness 2
}
!endsub
!startsub state
skinparam state {
$primary_scheme()
StartColor $INFO
EndColor $INFO
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub queue
skinparam queue {
$primary_scheme()
}
!endsub
!startsub card
skinparam card {
BackgroundColor $INFO_LIGHT-$INFO
BorderColor $INFO
FontColor $INFO_TEXT
}
!endsub
!startsub file
skinparam file {
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
BorderColor $LIGHT
FontColor $LIGHT
}
!endsub
!startsub stack
skinparam stack {
$primary_scheme()
}
!endsub

View File

@ -0,0 +1,441 @@
''
'' sketchy-outline theme based off of the bootstrap theme of the same name
'' https://bootswatch.com/sketchy/
''
'' Author = "Brett Schwarz
'' Copyright (c) 2020 by Brett Schwarz
!$THEME = "sketchy-outline"
!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "transparent"
!endif
skinparam backgroundColor $BGCOLOR
skinparam useBetaStyle false
skinparam handwritten true
skinparam shadowing false
''
'' Colors taken from the css file of the BS theme
''
!$BLUE = "#007bff"
!$INDIGO = "#6610f2"
!$PURPLE = "#6f42c1"
!$PINK = "#e83e8c"
!$RED = "#dc3545"
!$ORANGE = "#fd7e14"
!$YELLOW = "#ffc107"
!$GREEN = "#28a745"
!$TEAL = "#20c997"
!$CYAN = "#17a2b8"
!$WHITE = "#ffffff"
!$GRAY = "#868e96"
!$GRAYDARK = "#333333"
!$PRIMARY = "#333333"
!$SECONDARY = "#555555"
!$SUCCESS = "#28a745"
!$INFO = "#17a2b8"
!$WARNING = "#ffc107"
!$DANGER = "#dc3545"
!$LIGHT = "#ffffff"
!$DARK = "#555555"
'' *_DARK = tint (lighter) of the main color of 80%
'' where TINT is calculated by clr + (255-clr) * tint_factor
'' *_LIGHT = shade (darker) of the main color of 80%
'' and SHADE is calculated by clr * (1 - shade_factor)
''
!$FGCOLOR = $WHITE
!$PRIMARY_DARK = "#2e2e2e"
!$PRIMARY_LIGHT = "#474747"
!$PRIMARY_TEXT = "#2e2e2e"
!$SECONDARY_DARK = "#4d4d4d"
!$SECONDARY_LIGHT = "#666666"
!$SECONDARY_TEXT = $WHITE
!$INFO_DARK = "#1592a6"
!$INFO_LIGHT = "#2eabbf"
!$INFO_TEXT = $WHITE
!$SUCCESS_DARK = "#24963e"
!$SUCCESS_LIGHT = "#3eb058"
!$SUCCESS_TEXT = $WHITE
!$WARNING_DARK = "#e6ae06"
!$WARNING_LIGHT = "#ffc720"
!$WARNING_TEXT = $WHITE
!$DANGER_DARK = "#c6303e"
!$DANGER_LIGHT = "#e04958"
!$DANGER_TEXT = $WHITE
!$DARK_DARK = "#4d4d4d"
!$DARK_LIGHT = "#666666"
!$LIGHT_DARK = "#e6e6e6"
!$LIGHT_LIGHT = "#ffffff"
!procedure $success($msg)
<font color=$SUCCESS><b>$msg
!endprocedure
!procedure $failure($msg)
<font color=$DANGER><b>$msg
!endprocedure
!procedure $warning($msg)
<font color=$WARNING><b>$msg
!endprocedure
!procedure $primary_scheme()
FontColor $PRIMARY_TEXT
BorderColor $PRIMARY
BackgroundColor $BGCOLOR
!endprocedure
''
'' Global Default Values
''
skinparam defaultFontName "Segoe Print"
skinparam defaultFontSize 12
skinparam dpi 100
skinparam shadowing false
skinparam roundcorner 8
skinparam ParticipantPadding 40
skinparam BoxPadding 40
skinparam Padding 5
skinparam ArrowColor $DARK
skinparam stereotype {
CBackgroundColor $BGCOLOR
CBorderColor $SECONDARY_DARK
ABackgroundColor $BGCOLOR
ABorderColor $SUCCESS_DARK
IBackgroundColor $BGCOLOR
IBorderColor $DANGER_DARK
EBackgroundColor $BGCOLOR
EBorderColor $WARNING_DARK
NBackgroundColor $BGCOLOR
NBorderColor $INFO_DARK
}
skinparam title {
FontColor $PRIMARY_TEXT
BorderColor $SECONDARY_DARK
FontSize 20
BorderRoundCorner 8
BorderThickness 1
BackgroundColor $BGCOLOR
}
skinparam legend {
BackgroundColor $BGCOLOR
BorderColor $SECONDARY_DARK
FontColor $PRIMARY_TEXT
}
!startsub swimlane
skinparam swimlane {
BorderColor $INFO
BorderThickness 2
TitleBackgroundColor $BGCOLOR
TitleFontColor $PRIMARY_TEXT
}
!endsub
!startsub activity
skinparam activity {
$primary_scheme()
BarColor $SUCCESS
StartColor $INFO
EndColor $INFO
''
DiamondBackgroundColor $BGCOLOR
DiamondBorderColor $SECONDARY_DARK
DiamondFontColor $PRIMARY_TEXT
}
!endsub
!startsub participant
skinparam participant {
$primary_scheme()
ParticipantBorderThickness 2
}
!endsub
!startsub actor
skinparam actor {
$primary_scheme()
}
!endsub
!startsub arrow
skinparam arrow {
Thickness 3
Color $PRIMARY
FontColor $PRIMARY_TEXT
}
!endsub
!startsub sequence
skinparam sequence {
BorderColor $PRIMARY
' For some reason sequence title font color does not pick up from global
TitleFontColor $PRIMARY_TEXT
BackgroundColor $BGCOLOR
StartColor $PRIMARY
EndColor $PRIMARY
''
BoxBackgroundColor $BGCOLOR
BoxBorderColor $DARK
BoxFontColor $DARK
''
LifeLineBorderColor $SECONDARY
LifeLineBorderThickness 2
LifeLineBackgroundColor $SECONDARY_DARK
''
GroupBorderColor $DARK
GroupFontColor $DARK
GroupHeaderFontColor $INFO
GroupBackgroundColor $SECONDARY
GroupHeaderBackgroundColor $BGCOLOR
''
DividerBackgroundColor $DARK
DividerBorderColor $DARK
DividerBorderThickness 2
DividerFontColor $LIGHT
''
ReferenceBackgroundColor $BGCOLOR
ReferenceBorderColor $DARK
ReferenceFontColor $DARK
ReferenceHeaderFontColor $INFO
ReferenceHeaderBackgroundColor $SECONDARY
}
!endsub
!startsub partition
skinparam partition {
BorderColor $PRIMARY
FontColor $PRIMARY
BackgroundColor $BGCOLOR
}
!endsub
!startsub collections
skinparam collections {
$primary_scheme()
}
!endsub
!startsub control
skinparam control {
$primary_scheme()
}
!endsub
!startsub entity
skinparam entity {
$primary_scheme()
}
!endsub
!startsub boundary
skinparam boundary {
$primary_scheme()
}
!endsub
!startsub agent
skinparam agent {
BackgroundColor $WARNING
BorderColor $WARNING_LIGHT
FontColor $DARK
}
!endsub
!startsub note
skinparam note {
BorderThickness 1
BackgroundColor $INFO
BorderColor $INFO_DARK
FontColor $WHITE
}
!endsub
!startsub artifact
skinparam artifact {
BackgroundColor $BGCOLOR
BorderColor $DARK_DARK
FontColor $DARK_DARK
}
!endsub
!startsub component
skinparam component {
$primary_scheme()
}
!endsub
!startsub interface
skinparam interface {
BackgroundColor $BGCOLOR
BorderColor $DANGER
FontColor $DARK
}
!endsub
!startsub storage
skinparam storage {
BackgroundColor $BGCOLOR
BorderColor $WARNING_DARK
FontColor $WARNING_DARK
}
!endsub
!startsub node
skinparam node {
BackgroundColor $BGCOLOR
BorderColor $LIGHT
FontColor $LIGHT
}
!endsub
!startsub cloud
skinparam cloud {
BackgroundColor $BGCOLOR
BorderColor #F2FCFE
FontColor $PRIMARY_TEXT
}
!endsub
!startsub database
skinparam database {
$primary_scheme()
}
!endsub
!startsub class
skinparam class {
$primary_scheme()
HeaderBackgroundColor $BGCOLOR
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $DARK
AttributeFontSize 11
}
!endsub
!startsub object
skinparam object {
$primary_scheme()
StereotypeFontColor $PRIMARY_TEXT
BorderThickness 1
AttributeFontColor $PRIMARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub usecase
skinparam usecase {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub rectangle
skinparam rectangle {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub package
skinparam package {
BackgroundColor $BGCOLOR
BorderColor $PRIMARY
FontColor $PRIMARY
BorderThickness 2
}
!endsub
!startsub folder
skinparam folder {
BackgroundColor $BGCOLOR
BorderColor $WARNING
FontColor $WARNING
BorderThickness 2
}
!endsub
!startsub frame
skinparam frame {
BackgroundColor $BGCOLOR
BorderColor $INFO
FontColor $INFO
BorderThickness 2
}
!endsub
!startsub state
skinparam state {
$primary_scheme()
StartColor $INFO
EndColor $INFO
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub queue
skinparam queue {
$primary_scheme()
}
!endsub
!startsub card
skinparam card {
BackgroundColor $BGCOLOR
BorderColor $INFO_DARK
FontColor $INFO_DARK
}
!endsub
!startsub file
skinparam file {
BackgroundColor $BGCOLOR
BorderColor $LIGHT
FontColor $LIGHT
}
!endsub
!startsub stack
skinparam stack {
$primary_scheme()
}
!endsub

View File

@ -0,0 +1,443 @@
''
'' superhero theme based off of the bootstrap theme of the same name
'' https://bootswatch.com/sketchy/
''
'' Author = "Brett Schwarz
'' Copyright (c) 2020 by Brett Schwarz
!$THEME = "sketchy"
!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "transparent"
!endif
skinparam backgroundColor $BGCOLOR
skinparam useBetaStyle false
skinparam handwritten true
skinparam shadowing false
''
'' Colors taken from the css file of the BS theme
''
!$BLUE = "#007bff"
!$INDIGO = "#6610f2"
!$PURPLE = "#6f42c1"
!$PINK = "#e83e8c"
!$RED = "#dc3545"
!$ORANGE = "#fd7e14"
!$YELLOW = "#ffc107"
!$GREEN = "#28a745"
!$TEAL = "#20c997"
!$CYAN = "#17a2b8"
!$WHITE = "#ffffff"
!$GRAY = "#868e96"
!$GRAYDARK = "#333333"
!$PRIMARY = "#333333"
!$SECONDARY = "#555555"
!$SUCCESS = "#28a745"
!$INFO = "#17a2b8"
!$WARNING = "#ffc107"
!$DANGER = "#dc3545"
!$LIGHT = "#ffffff"
!$DARK = "#555555"
'' *_DARK = tint (lighter) of the main color of 80%
'' where TINT is calculated by clr + (255-clr) * tint_factor
'' *_LIGHT = shade (darker) of the main color of 80%
'' and SHADE is calculated by clr * (1 - shade_factor)
''
!$FGCOLOR = $WHITE
!$PRIMARY_DARK = "#2e2e2e"
!$PRIMARY_LIGHT = "#474747"
!$PRIMARY_TEXT = $WHITE
!$SECONDARY_DARK = "#4d4d4d"
!$SECONDARY_LIGHT = "#666666"
!$SECONDARY_TEXT = $WHITE
!$INFO_DARK = "#1592a6"
!$INFO_LIGHT = "#2eabbf"
!$INFO_TEXT = $WHITE
!$SUCCESS_DARK = "#24963e"
!$SUCCESS_LIGHT = "#3eb058"
!$SUCCESS_TEXT = $WHITE
!$WARNING_DARK = "#e6ae06"
!$WARNING_LIGHT = "#ffc720"
!$WARNING_TEXT = $WHITE
!$DANGER_DARK = "#c6303e"
!$DANGER_LIGHT = "#e04958"
!$DANGER_TEXT = $WHITE
!$DARK_DARK = "#4d4d4d"
!$DARK_LIGHT = "#666666"
!$LIGHT_DARK = "#e6e6e6"
!$LIGHT_LIGHT = "#ffffff"
!procedure $success($msg)
<font color=$SUCCESS><b>$msg
!endprocedure
!procedure $failure($msg)
<font color=$DANGER><b>$msg
!endprocedure
!procedure $warning($msg)
<font color=$WARNING><b>$msg
!endprocedure
!procedure $primary_scheme()
FontColor $PRIMARY_TEXT
BorderColor $PRIMARY
BackgroundColor $PRIMARY_LIGHT
!endprocedure
''
'' Global Default Values
''
skinparam defaultFontName "Segoe Print"
skinparam defaultFontSize 12
skinparam dpi 100
skinparam shadowing false
skinparam roundcorner 8
skinparam ParticipantPadding 40
skinparam BoxPadding 40
skinparam Padding 5
skinparam ArrowColor $DARK
skinparam stereotype {
CBackgroundColor $SECONDARY_LIGHT
CBorderColor $SECONDARY_DARK
ABackgroundColor $SUCCESS_LIGHT
ABorderColor $SUCCESS_DARK
IBackgroundColor $DANGER_LIGHT
IBorderColor $DANGER_DARK
EBackgroundColor $WARNING_LIGHT
EBorderColor $WARNING_DARK
NBackgroundColor $INFO_LIGHT
NBorderColor $INFO_DARK
}
skinparam title {
FontColor $FGCOLOR
BorderColor $SECONDARY_DARK
FontSize 20
BorderRoundCorner 8
BorderThickness 1
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
}
skinparam legend {
BackgroundColor $SECONDARY
BorderColor $SECONDARY_DARK
FontColor $LIGHT
}
!startsub swimlane
skinparam swimlane {
BorderColor $INFO
BorderThickness 2
TitleBackgroundColor $SECONDARY_LIGHT-$SECONDARY
TitleFontColor $FGCOLOR
}
!endsub
!startsub activity
skinparam activity {
$primary_scheme()
BarColor $SUCCESS
StartColor $INFO
EndColor $INFO
''
DiamondBackgroundColor $SECONDARY_LIGHT
DiamondBorderColor $SECONDARY_DARK
DiamondFontColor $SECONDARY_TEXT
}
!endsub
!startsub participant
skinparam participant {
$primary_scheme()
ParticipantBorderThickness 2
}
!endsub
!startsub actor
skinparam actor {
$primary_scheme()
}
!endsub
!startsub arrow
skinparam arrow {
Thickness 3
Color $PRIMARY
FontColor $FGCOLOR
}
!endsub
!startsub sequence
skinparam sequence {
BorderColor $PRIMARY
' For some reason sequence title font color does not pick up from global
TitleFontColor $PRIMARY
BackgroundColor $BGCOLOR
StartColor $PRIMARY
EndColor $PRIMARY
''
BoxBackgroundColor $BGCOLOR
BoxBorderColor $DARK
BoxFontColor $DARk
''
LifeLineBorderColor $SECONDARY
LifeLineBorderThickness 2
LifeLineBackgroundColor $SECONDARY_DARK
''
GroupBorderColor $DARK
GroupFontColor $DARK
GroupHeaderFontColor $INFO
GroupBackgroundColor $SECONDARY
GroupHeaderBackgroundColor $BGCOLOR
''
DividerBackgroundColor $DARK
DividerBorderColor $DARK
DividerBorderThickness 2
DividerFontColor $LIGHT
''
ReferenceBackgroundColor $BGCOLOR
ReferenceBorderColor $DARK
ReferenceFontColor $DARK
ReferenceHeaderFontColor $INFO
ReferenceHeaderBackgroundColor $SECONDARY
}
!endsub
!startsub partition
skinparam partition {
BorderColor $PRIMARY
FontColor $PRIMARY
BackgroundColor $BGCOLOR
}
!endsub
!startsub collections
skinparam collections {
$primary_scheme()
}
!endsub
!startsub control
skinparam control {
$primary_scheme()
}
!endsub
!startsub entity
skinparam entity {
$primary_scheme()
}
!endsub
!startsub boundary
skinparam boundary {
$primary_scheme()
}
!endsub
!startsub agent
skinparam agent {
BackgroundColor $WARNING
BorderColor $WARNING_LIGHT
FontColor $DARK
}
!endsub
!startsub note
skinparam note {
BorderThickness 1
BackgroundColor $INFO
BorderColor $INFO_DARK
FontColor $WHITE
}
!endsub
!startsub artifact
skinparam artifact {
BackgroundColor $DARK
BorderColor $DARK_DARK
FontColor $LIGHT
}
!endsub
!startsub component
skinparam component {
$primary_scheme()
}
!endsub
!startsub interface
skinparam interface {
BackgroundColor $DANGER_DARK
BorderColor $DANGER
FontColor $DARK
}
!endsub
!startsub storage
skinparam storage {
BackgroundColor $WARNING
BorderColor $WARNING_DARK
FontColor $WARNING_TEXT
}
!endsub
!startsub node
skinparam node {
BackgroundColor $SECONDARY
BorderColor $LIGHT
FontColor $LIGHT
}
!endsub
!startsub cloud
skinparam cloud {
BackgroundColor #F2FCFE-#eeeeee
BorderColor #F2FCFE
FontColor $DARK
}
!endsub
!startsub database
skinparam database {
$primary_scheme()
}
!endsub
!startsub class
skinparam class {
$primary_scheme()
FontColor $FGCOLOR
HeaderBackgroundColor $PRIMARY_LIGHT
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $LIGHT
AttributeFontSize 11
}
!endsub
!startsub object
skinparam object {
$primary_scheme()
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub usecase
skinparam usecase {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub rectangle
skinparam rectangle {
$primary_scheme()
BackgroundColor $SECONDARY_LIGHT
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub package
skinparam package {
BackgroundColor $SECONDARY
BorderColor $PRIMARY
FontColor $PRIMARY
BorderThickness 2
}
!endsub
!startsub folder
skinparam folder {
BackgroundColor $SECONDARY_LIGHT
BorderColor $WARNING
FontColor $WARNING
BorderThickness 2
}
!endsub
!startsub frame
skinparam frame {
BackgroundColor $SECONDARY_LIGHT
BorderColor $INFO
FontColor $INFO
BorderThickness 2
}
!endsub
!startsub state
skinparam state {
$primary_scheme()
StartColor $INFO
EndColor $INFO
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub queue
skinparam queue {
$primary_scheme()
}
!endsub
!startsub card
skinparam card {
BackgroundColor $INFO
BorderColor $INFO_DARK
FontColor $INFO_TEXT
}
!endsub
!startsub file
skinparam file {
BackgroundColor $SECONDARY_DARK
BorderColor $LIGHT
FontColor $LIGHT
}
!endsub
!startsub stack
skinparam stack {
$primary_scheme()
}
!endsub

View File

@ -0,0 +1,441 @@
''
'' superhero theme based off of the bootstrap theme of the same name
'' https://bootswatch.com/spacelab/
''
'' Author = "Brett Schwarz
'' Copyright (c) 2020 by Brett Schwarz
!$THEME = "spacelab"
!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "transparent"
!endif
skinparam backgroundColor $BGCOLOR
skinparam useBetaStyle false
''
'' Colors taken from the css file of the BS theme
''
!$BLUE = "#446e9b"
!$INDIGO = "#6610f2"
!$PURPLE = "#6f42c1"
!$PINK = "#e83e8c"
!$RED = "#cd0200"
!$ORANGE = "#fd7e14"
!$YELLOW = "#d47500"
!$GREEN = "#3cb521"
!$TEAL = "#20c997"
!$CYAN = "#3399f3"
!$WHITE = "#ffffff"
!$GRAY = "#777777"
!$GRAYDARK = "#333333"
!$PRIMARY = "#446e9b"
!$SECONDARY = "#999999"
!$SUCCESS = "#3cb521"
!$INFO = "#3399f3"
!$WARNING = "#d47500"
!$DANGER = "#cd0200"
!$LIGHT = "#eeeeee"
!$DARK = "#333333"
'' *_DARK = tint (lighter) of the main color of 80%
'' where TINT is calculated by clr + (255-clr) * tint_factor
'' *_LIGHT = shade (darker) of the main color of 80%
'' and SHADE is calculated by clr * (1 - shade_factor)
''
!$FGCOLOR = $WHITE
!$PRIMARY_DARK = "#304d6d"
!$PRIMARY_LIGHT = "#7c9ab9"
!$PRIMARY_TEXT = $WHITE
!$SECONDARY_DARK = "#6b6b6b"
!$SECONDARY_LIGHT = "#b8b8b8"
!$SECONDARY_TEXT = $WHITE
!$INFO_DARK = "#246baa"
!$INFO_LIGHT = "#70b8f7"
!$INFO_TEXT = $WHITE
!$SUCCESS_DARK = "#32a243"
!$SUCCESS_LIGHT = "#4cbc5c"
!$SUCCESS_TEXT = $WHITE
!$WARNING_DARK = "#945200"
!$WARNING_LIGHT = "#e19e4d"
!$WARNING_TEXT = $WHITE
!$DANGER_DARK = "#900100"
!$DANGER_LIGHT = "#dc4e4d"
!$DANGER_TEXT = $WHITE
!$DARK_DARK = "#242424"
!$DARK_LIGHT = "#707070"
!$LIGHT_DARK = "#a7a7a7"
!$LIGHT_LIGHT = "#f3f3f3"
!procedure $success($msg)
<font color=$SUCCESS><b>$msg
!endprocedure
!procedure $failure($msg)
<font color=$DANGER><b>$msg
!endprocedure
!procedure $warning($msg)
<font color=$WARNING><b>$msg
!endprocedure
!procedure $primary_scheme()
FontColor $PRIMARY_TEXT
BorderColor $PRIMARY_DARK
BackgroundColor $PRIMARY_LIGHT-$PRIMARY_DARK
!endprocedure
''
'' Global Default Values
''
skinparam defaultFontName "Verdana"
skinparam defaultFontSize 12
skinparam dpi 100
skinparam shadowing false
skinparam roundcorner 8
skinparam ParticipantPadding 40
skinparam BoxPadding 40
skinparam Padding 5
skinparam ArrowColor $DARK
skinparam stereotype {
CBackgroundColor $SECONDARY_LIGHT
CBorderColor $SECONDARY_DARK
ABackgroundColor $SUCCESS_LIGHT
ABorderColor $SUCCESS_DARK
IBackgroundColor $DANGER_LIGHT
IBorderColor $DANGER_DARK
EBackgroundColor $WARNING_LIGHT
EBorderColor $WARNING_DARK
NBackgroundColor $INFO_LIGHT
NBorderColor $INFO_DARK
}
skinparam title {
FontColor $PRIMARY_DARK
BorderColor $SECONDARY_DARK
FontSize 20
BorderRoundCorner 8
BorderThickness 1
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
}
skinparam legend {
BackgroundColor $SECONDARY
BorderColor $SECONDARY_DARK
FontColor $LIGHT
}
!startsub swimlane
skinparam swimlane {
BorderColor $INFO
BorderThickness 2
TitleBackgroundColor $SECONDARY_LIGHT-$SECONDARY
TitleFontColor $PRIMARY_DARK
}
!endsub
!startsub activity
skinparam activity {
$primary_scheme()
BarColor $SUCCESS
StartColor $INFO
EndColor $INFO
''
DiamondBackgroundColor $SECONDARY_LIGHT-$SECONDARY_DARK
DiamondBorderColor $SECONDARY_DARK
DiamondFontColor $SECONDARY_TEXT
}
!endsub
!startsub participant
skinparam participant {
$primary_scheme()
ParticipantBorderThickness 2
}
!endsub
!startsub actor
skinparam actor {
$primary_scheme()
}
!endsub
!startsub arrow
skinparam arrow {
Thickness 3
Color $PRIMARY
FontColor $FGCOLOR
}
!endsub
!startsub sequence
skinparam sequence {
BorderColor $PRIMARY
' For some reason sequence title font color does not pick up from global
TitleFontColor $PRIMARY
BackgroundColor $BGCOLOR
StartColor $PRIMARY
EndColor $PRIMARY
''
BoxBackgroundColor $BGCOLOR
BoxBorderColor $DARK
BoxFontColor $DARk
''
LifeLineBorderColor $SECONDARY
LifeLineBorderThickness 2
LifeLineBackgroundColor $SECONDARY_DARK-$SECONDARY_DARK
''
GroupBorderColor $DARK
GroupFontColor $DARK
GroupHeaderFontColor $INFO
GroupBackgroundColor $SECONDARY_DARK-$SECONDARY_DARK
GroupHeaderBackgroundColor $BGCOLOR
''
DividerBackgroundColor $DARK_LIGHT-$DARK_DARK
DividerBorderColor $DARK
DividerBorderThickness 2
DividerFontColor $LIGHT
''
ReferenceBackgroundColor $BGCOLOR
ReferenceBorderColor $DARK
ReferenceFontColor $DARK
ReferenceHeaderFontColor $INFO
ReferenceHeaderBackgroundColor $SECONDARY_DARK-$SECONDARY_DARK
}
!endsub
!startsub partition
skinparam partition {
BorderColor $PRIMARY
FontColor $PRIMARY
BackgroundColor $BGCOLOR
}
!endsub
!startsub collections
skinparam collections {
$primary_scheme()
}
!endsub
!startsub control
skinparam control {
$primary_scheme()
}
!endsub
!startsub entity
skinparam entity {
$primary_scheme()
}
!endsub
!startsub boundary
skinparam boundary {
$primary_scheme()
}
!endsub
!startsub agent
skinparam agent {
BackgroundColor $WARNING
BorderColor $WARNING_LIGHT
FontColor $DARK
}
!endsub
!startsub note
skinparam note {
BorderThickness 1
BackgroundColor $INFO_LIGHT-$INFO_DARK
BorderColor $INFO_DARK
FontColor $WHITE
}
!endsub
!startsub artifact
skinparam artifact {
BackgroundColor $DARK
BorderColor $DARK_DARK
FontColor $LIGHT
}
!endsub
!startsub component
skinparam component {
$primary_scheme()
}
!endsub
!startsub interface
skinparam interface {
BackgroundColor $DANGER_DARK
BorderColor $DANGER
FontColor $DARK
}
!endsub
!startsub storage
skinparam storage {
BackgroundColor $WARNING
BorderColor $WARNING_DARK
FontColor $WARNING_TEXT
}
!endsub
!startsub node
skinparam node {
BackgroundColor $SECONDARY
BorderColor $LIGHT
FontColor $LIGHT
}
!endsub
!startsub cloud
skinparam cloud {
BackgroundColor #F2FCFE-#eeeeee
BorderColor #F2FCFE
FontColor $DARK
}
!endsub
!startsub database
skinparam database {
$primary_scheme()
}
!endsub
!startsub class
skinparam class {
$primary_scheme()
FontColor $WHITE
HeaderBackgroundColor $PRIMARY_LIGHT-$PRIMARY
StereotypeFontColor $LIGHT
BorderThickness 1
AttributeFontColor $LIGHT
AttributeFontSize 11
}
!endsub
!startsub object
skinparam object {
$primary_scheme()
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub usecase
skinparam usecase {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub rectangle
skinparam rectangle {
$primary_scheme()
BackgroundColor $SECONDARY_LIGHT-$SECONDARY_DARK
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub package
skinparam package {
BackgroundColor $SECONDARY_LIGHT-$SECONDARY_DARK
BorderColor $PRIMARY
FontColor $PRIMARY
BorderThickness 2
}
!endsub
!startsub folder
skinparam folder {
BackgroundColor $SECONDARY_LIGHT-$SECONDARY_DARK
BorderColor $WARNING
FontColor $WARNING
BorderThickness 2
}
!endsub
!startsub frame
skinparam frame {
BackgroundColor $SECONDARY_LIGHT-$SECONDARY_DARK
BorderColor $INFO
FontColor $INFO
BorderThickness 2
}
!endsub
!startsub state
skinparam state {
$primary_scheme()
StartColor $INFO
EndColor $INFO
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub queue
skinparam queue {
$primary_scheme()
}
!endsub
!startsub card
skinparam card {
BackgroundColor $INFO_LIGHT-$INFO_DARK
BorderColor $INFO_DARK
FontColor $INFO_TEXT
}
!endsub
!startsub file
skinparam file {
BackgroundColor $SECONDARY_DARK-$SECONDARY_DARK
BorderColor $LIGHT
FontColor $LIGHT
}
!endsub
!startsub stack
skinparam stack {
$primary_scheme()
}
!endsub

View File

@ -0,0 +1,446 @@
''
'' superhero theme based off of the bootstrap theme of the same name
'' https://bootswatch.com/superhero/
''
'' Author: Brett Schwarz
'' Copyright (c) 2019 by Brett Schwarz
!$THEME = "superhero-outline"
!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "transparent"
!endif
skinparam backgroundColor $BGCOLOR
skinparam useBetaStyle false
''
'' Colors taken from the css file of the BS theme
''
!$BLUE = "#DF691A"
!$INDIGO = "#6610f2"
!$PURPLE = "#6f42c1"
!$PINK = "#e83e8c"
!$RED = "#d9534f"
!$ORANGE = "#f0ad4e"
!$YELLOW = "#f0ad4e"
!$GREEN = "#5cb85c"
!$TEAL = "#20c997"
!$CYAN = "#5bc0de"
!$WHITE = "#FFF"
!$GRAY_LIGHT = "#222"
!$GRAY = "#868e96"
!$PRIMARY = "#DF691A"
!$SECONDARY = "#4E5D6C"
!$SUCCESS = "#5cb85c"
!$INFO = "#5bc0de"
!$WARNING = "#f0ad4e"
!$DANGER = "#d9534f"
!$LIGHT = "#abb6c2"
!$DARK = "#4E5D6C"
'' *_DARK = tint (lighter) of the main color of 80%
'' where TINT is calculated by clr + (255-clr) * tint_factor
'' *_LIGHT = shade (darker) of the main color of 80%
'' and SHADE is calculated by clr * (1 - shade_factor)
''
!$FGCOLOR = $WHITE
!$PRIMARY_DARK = "#e58748"
!$PRIMARY_LIGHT = "#b25415"
!$PRIMARY_TEXT = $PRIMARY
!$SECONDARY_DARK = "#717d89"
!$SECONDARY_LIGHT = "#3e4a56"
!$SECONDARY_TEXT = $SECONDARY_DARK
!$INFO_DARK = "#7ccde5"
!$INFO_LIGHT = "#499AB2"
!$INFO_TEXT = $INFO
!$SUCCESS_DARK = "#4a934a"
!$SUCCESS_LIGHT = "#5F8F00"
!$SUCCESS_TEXT = $SUCCESS
!$WARNING_DARK = "#f3bd71"
!$WARNING_LIGHT = "#C08A3E"
!$WARNING_TEXT = $WARNING
!$DANGER_DARK = "#e17572"
!$DANGER_LIGHT = "#AE423F"
!$DANGER_TEXT = $WHITE
!$DARK_DARK = "#717d89"
!$DARK_LIGHT = "#3e4a56"
!$LIGHT_DARK = "#bcc5ce"
!$LIGHT_LIGHT = "#89929b"
!procedure $success($msg)
<font color=$SUCCESS><b>$msg
!endprocedure
!procedure $failure($msg)
<font color=$DANGER><b>$msg
!endprocedure
!procedure $warning($msg)
<font color=$WARNING><b>$msg
!endprocedure
!procedure $primary_scheme()
FontColor $PRIMARY_TEXT
BorderColor $PRIMARY_DARK
BackgroundColor $BGCOLOR
!endprocedure
''
'' Global Default Values
''
skinparam defaultFontName "Verdana"
skinparam defaultFontSize 12
skinparam dpi 100
skinparam shadowing false
skinparam roundcorner 8
skinparam ParticipantPadding 40
skinparam BoxPadding 40
skinparam Padding 5
skinparam TitleFontColor $DARK
skinparam TitleFontSize 20
skinparam TitleBorderThickness 0
skinparam ArrowColor $DARK
skinparam stereotype {
CBackgroundColor $SECONDARY_DARK
CBorderColor $SECONDARY_LIGHT
ABackgroundColor $SUCCESS_LIGHT
ABorderColor $SUCCESS_DARK
IBackgroundColor $DANGER_LIGHT
IBorderColor $DANGER_DARK
EBackgroundColor $WARNING_LIGHT
EBorderColor $WARNING_DARK
NBackgroundColor $INFO_LIGHT
NBorderColor $INFO_DARK
}
skinparam title {
FontColor $PRIMARY
BorderColor $SECONDARY_DARK
FontSize 20
BorderRoundCorner 8
BorderThickness 1
BackgroundColor $BGCOLOR
}
skinparam legend {
BackgroundColor $BGCOLOR
BorderColor $SECONDARY_DARK
FontColor $LIGHT
}
!startsub swimlane
skinparam swimlane {
BorderColor $INFO
BorderThickness 2
TitleBackgroundColor $SECONDARY_LIGHT-$SECONDARY
TitleFontColor $PRIMARY
}
!endsub
!startsub activity
skinparam activity {
$primary_scheme()
BarColor $SUCCESS
StartColor $INFO
EndColor $INFO
''
DiamondBackgroundColor $BGCOLOR
DiamondBorderColor $SECONDARY_DARK
DiamondFontColor $SECONDARY_TEXT
}
!endsub
!startsub participant
skinparam participant {
$primary_scheme()
ParticipantBorderThickness 2
}
!endsub
!startsub actor
skinparam actor {
$primary_scheme()
FontColor $PRIMARY
}
!endsub
!startsub arrow
skinparam arrow {
Thickness 3
Color $PRIMARY
FontColor $FGCOLOR
}
!endsub
!startsub sequence
skinparam sequence {
BorderColor $PRIMARY
' For some reason sequence title font color does not pick up from global
TitleFontColor $PRIMARY
BackgroundColor $BGCOLOR
StartColor $PRIMARY
EndColor $PRIMARY
''
BoxBackgroundColor $BGCOLOR
BoxBorderColor $DARK
BoxFontColor $DARk
''
LifeLineBorderColor $SECONDARY
LifeLineBorderThickness 2
LifeLineBackgroundColor $BGCOLOR
''
GroupBorderColor $DARK
GroupFontColor $DARK
GroupHeaderFontColor $INFO
GroupBackgroundColor $BGCOLOR
GroupHeaderBackgroundColor $BGCOLOR
''
DividerBackgroundColor $BGCOLOR
DividerBorderColor $DARK
DividerBorderThickness 2
DividerFontColor $LIGHT
''
ReferenceBackgroundColor $BGCOLOR
ReferenceBorderColor $LIGHT
ReferenceFontColor $LIGHT
ReferenceHeaderFontColor $INFO
ReferenceHeaderBackgroundColor $BGCOLOR
}
!endsub
!startsub partition
skinparam partition {
BorderColor $PRIMARY
FontColor $PRIMARY
BackgroundColor $BGCOLOR
}
!endsub
!startsub collections
skinparam collections {
$primary_scheme()
}
!endsub
!startsub control
skinparam control {
$primary_scheme()
}
!endsub
!startsub entity
skinparam entity {
$primary_scheme()
}
!endsub
!startsub boundary
skinparam boundary {
$primary_scheme()
}
!endsub
!startsub agent
skinparam agent {
BackgroundColor $BGCOLOR
BorderColor $WARNING_LIGHT
FontColor $DARK
}
!endsub
!startsub note
skinparam note {
BorderThickness 1
BackgroundColor $BGCOLOR
BorderColor $INFO_DARK
FontColor $INFO_DARK
}
!endsub
!startsub artifact
skinparam artifact {
BackgroundColor $BGCOLOR
BorderColor $DARK_DARK
FontColor $LIGHT
}
!endsub
!startsub component
skinparam component {
$primary_scheme()
}
!endsub
!startsub interface
skinparam interface {
BackgroundColor $BGCOLOR
BorderColor $DANGER
FontColor $DARK
}
!endsub
!startsub storage
skinparam storage {
BackgroundColor $BGCOLOR
BorderColor $WARNING_DARK
FontColor $WARNING_TEXT
}
!endsub
!startsub node
skinparam node {
BackgroundColor $BGCOLOR
BorderColor $LIGHT
FontColor $LIGHT
}
!endsub
!startsub cloud
skinparam cloud {
BackgroundColor $BGCOLOR
BorderColor #F2FCFE
FontColor $DARK
}
!endsub
!startsub database
skinparam database {
$primary_scheme()
FontColor $PRIMARY
}
!endsub
!startsub class
skinparam class {
$primary_scheme()
FontColor $LIGHT
HeaderBackgroundColor $PRIMARY_LIGHT
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $DARK
AttributeFontSize 11
}
!endsub
!startsub object
skinparam object {
$primary_scheme()
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $SECONDARY_DARK
AttributeFontSize 11
}
!endsub
!startsub usecase
skinparam usecase {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub rectangle
skinparam rectangle {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub package
skinparam package {
BackgroundColor $BGCOLOR
BorderColor $PRIMARY
FontColor $PRIMARY
BorderThickness 2
}
!endsub
!startsub folder
skinparam folder {
BackgroundColor $BGCOLOR
BorderColor $WARNING
FontColor $WARNING
BorderThickness 2
}
!endsub
!startsub frame
skinparam frame {
BackgroundColor $BGCOLOR
BorderColor $INFO
FontColor $INFO
BorderThickness 2
}
!endsub
!startsub state
skinparam state {
$primary_scheme()
StartColor $INFO
EndColor $INFO
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub queue
skinparam queue {
$primary_scheme()
}
!endsub
!startsub card
skinparam card {
BackgroundColor $BGCOLOR
BorderColor $INFO
FontColor $INFO_TEXT
}
!endsub
!startsub file
skinparam file {
BackgroundColor $BGCOLOR
BorderColor $LIGHT
FontColor $LIGHT
}
!endsub
!startsub stack
skinparam stack {
$primary_scheme()
}
!endsub

View File

@ -0,0 +1,440 @@
''
'' superhero theme based off of the bootstrap theme of the same name
'' https://bootswatch.com/superhero/
''
'' Author: Brett Schwarz
'' Copyright (c) 2019 by Brett Schwarz
!$THEME = "superhero"
!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "transparent"
!endif
skinparam backgroundColor $BGCOLOR
skinparam useBetaStyle false
''
'' Colors taken from the css file of the BS theme
''
!$BLUE = "#DF691A"
!$INDIGO = "#6610f2"
!$PURPLE = "#6f42c1"
!$PINK = "#e83e8c"
!$RED = "#d9534f"
!$ORANGE = "#f0ad4e"
!$YELLOW = "#f0ad4e"
!$GREEN = "#5cb85c"
!$TEAL = "#20c997"
!$CYAN = "#5bc0de"
!$WHITE = "#FFF"
!$GRAY_LIGHT = "#222"
!$GRAY = "#868e96"
!$PRIMARY = "#DF691A"
!$SECONDARY = "#4E5D6C"
!$SUCCESS = "#5cb85c"
!$INFO = "#5bc0de"
!$WARNING = "#f0ad4e"
!$DANGER = "#d9534f"
!$LIGHT = "#abb6c2"
!$DARK = "#4E5D6C"
'' *_DARK = tint (lighter) of the main color of 80%
'' where TINT is calculated by clr + (255-clr) * tint_factor
'' *_LIGHT = shade (darker) of the main color of 80%
'' and SHADE is calculated by clr * (1 - shade_factor)
''
!$FGCOLOR = $WHITE
!$PRIMARY_DARK = "#e58748"
!$PRIMARY_LIGHT = "#b25415"
!$PRIMARY_TEXT = $WHITE
!$SECONDARY_DARK = "#717d89"
!$SECONDARY_LIGHT = "#3e4a56"
!$SECONDARY_TEXT = $WHITE
!$INFO_DARK = "#7ccde5"
!$INFO_LIGHT = "#499AB2"
!$INFO_TEXT = $WHITE
!$SUCCESS_DARK = "#4a934a"
!$SUCCESS_LIGHT = "#5F8F00"
!$SUCCESS_TEXT = $WHITE
!$WARNING_DARK = "#f3bd71"
!$WARNING_LIGHT = "#C08A3E"
!$WARNING_TEXT = $WHITE
!$DANGER_DARK = "#e17572"
!$DANGER_LIGHT = "#AE423F"
!$DANGER_TEXT = $WHITE
!$DARK_DARK = "#717d89"
!$DARK_LIGHT = "#3e4a56"
!$LIGHT_DARK = "#bcc5ce"
!$LIGHT_LIGHT = "#89929b"
!procedure $success($msg)
<font color=$SUCCESS><b>$msg
!endprocedure
!procedure $failure($msg)
<font color=$DANGER><b>$msg
!endprocedure
!procedure $warning($msg)
<font color=$WARNING><b>$msg
!endprocedure
!procedure $primary_scheme()
FontColor $PRIMARY_TEXT
BorderColor $PRIMARY_DARK
BackgroundColor $PRIMARY
!endprocedure
''
'' Global Default Values
''
skinparam defaultFontName "Verdana"
skinparam defaultFontSize 12
skinparam dpi 100
skinparam shadowing false
skinparam roundcorner 8
skinparam ParticipantPadding 40
skinparam BoxPadding 40
skinparam Padding 5
skinparam ArrowColor $DARK
skinparam stereotype {
CBackgroundColor $SECONDARY_LIGHT
CBorderColor $SECONDARY_DARK
ABackgroundColor $SUCCESS_LIGHT
ABorderColor $SUCCESS_DARK
IBackgroundColor $DANGER_LIGHT
IBorderColor $DANGER_DARK
EBackgroundColor $WARNING_LIGHT
EBorderColor $WARNING_DARK
NBackgroundColor $INFO_LIGHT
NBorderColor $INFO_DARK
}
skinparam title {
FontColor $PRIMARY
BorderColor $SECONDARY_DARK
FontSize 20
BorderRoundCorner 8
BorderThickness 1
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
}
skinparam legend {
BackgroundColor $SECONDARY
BorderColor $SECONDARY_DARK
FontColor $LIGHT
}
!startsub swimlane
skinparam swimlane {
BorderColor $INFO
BorderThickness 2
TitleBackgroundColor $SECONDARY_LIGHT-$SECONDARY
TitleFontColor $PRIMARY
}
!endsub
!startsub activity
skinparam activity {
$primary_scheme()
BarColor $SUCCESS
StartColor $INFO
EndColor $INFO
''
DiamondBackgroundColor $SECONDARY_LIGHT
DiamondBorderColor $SECONDARY_DARK
DiamondFontColor $SECONDARY_TEXT
}
!endsub
!startsub participant
skinparam participant {
$primary_scheme()
BorderThickness 2
}
!endsub
!startsub actor
skinparam actor {
$primary_scheme()
}
!endsub
!startsub arrow
skinparam arrow {
Thickness 3
Color $PRIMARY
FontColor $FGCOLOR
}
!endsub
!startsub sequence
skinparam sequence {
BorderColor $PRIMARY
' For some reason sequence title font color does not pick up from global
TitleFontColor $PRIMARY
BackgroundColor $BGCOLOR
StartColor $PRIMARY
EndColor $PRIMARY
''
BoxBackgroundColor $BGCOLOR
BoxBorderColor $DARK
BoxFontColor $DARk
''
LifeLineBorderColor $SECONDARY
LifeLineBorderThickness 2
LifeLineBackgroundColor $SECONDARY_DARK
''
GroupBackgroundColor $SECONDARY
GroupBorderColor $DARK
GroupFontColor $DARK
GroupHeaderFontColor $INFO
GroupHeaderBackgroundColor $BGCOLOR
''
DividerBackgroundColor $DARK
DividerBorderColor $DARK
DividerBorderThickness 2
DividerFontColor $LIGHT
''
ReferenceBackgroundColor $BGCOLOR
ReferenceBorderColor $DARK
ReferenceFontColor $DARK
ReferenceHeaderFontColor $INFO
ReferenceHeaderBackgroundColor $SECONDARY
}
!endsub
!startsub partition
skinparam partition {
BorderColor $PRIMARY
FontColor $PRIMARY
BackgroundColor $BGCOLOR
}
!endsub
!startsub collections
skinparam collections {
$primary_scheme()
}
!endsub
!startsub control
skinparam control {
$primary_scheme()
}
!endsub
!startsub entity
skinparam entity {
$primary_scheme()
}
!endsub
!startsub boundary
skinparam boundary {
$primary_scheme()
}
!endsub
!startsub agent
skinparam agent {
BackgroundColor $WARNING
BorderColor $WARNING_LIGHT
FontColor $DARK
}
!endsub
!startsub note
skinparam note {
BorderThickness 1
BackgroundColor $INFO
BorderColor $INFO_DARK
FontColor $WHITE
}
!endsub
!startsub artifact
skinparam artifact {
BackgroundColor $DARK
BorderColor $DARK_DARK
FontColor $LIGHT
}
!endsub
!startsub component
skinparam component {
$primary_scheme()
}
!endsub
!startsub interface
skinparam interface {
BackgroundColor $DANGER_DARK
BorderColor $DANGER
FontColor $DARK
}
!endsub
!startsub storage
skinparam storage {
BackgroundColor $WARNING
BorderColor $WARNING_DARK
FontColor $WARNING_TEXT
}
!endsub
!startsub node
skinparam node {
BackgroundColor $SECONDARY
BorderColor $LIGHT
FontColor $LIGHT
}
!endsub
!startsub cloud
skinparam cloud {
BackgroundColor $LIGHT-black
BorderColor $LIGHT
FontColor $DARK
}
!endsub
!startsub database
skinparam database {
$primary_scheme()
}
!endsub
!startsub class
skinparam class {
$primary_scheme()
HeaderBackgroundColor $PRIMARY_LIGHT
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $DARK
AttributeFontSize 11
}
!endsub
!startsub object
skinparam object {
$primary_scheme()
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub usecase
skinparam usecase {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub rectangle
skinparam rectangle {
$primary_scheme()
BackgroundColor $SECONDARY_LIGHT
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub package
skinparam package {
BackgroundColor $SECONDARY
BorderColor $PRIMARY
FontColor $PRIMARY
BorderThickness 2
}
!endsub
!startsub folder
skinparam folder {
BackgroundColor $SECONDARY_LIGHT
BorderColor $WARNING
FontColor $WARNING
BorderThickness 2
}
!endsub
!startsub frame
skinparam frame {
BackgroundColor $SECONDARY_LIGHT
BorderColor $INFO
FontColor $INFO
BorderThickness 2
}
!endsub
!startsub state
skinparam state {
$primary_scheme()
StartColor $INFO
EndColor $INFO
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub queue
skinparam queue {
$primary_scheme()
}
!endsub
!startsub card
skinparam card {
BackgroundColor $INFO
BorderColor $INFO_DARK
FontColor $INFO_TEXT
}
!endsub
!startsub file
skinparam file {
BackgroundColor $SECONDARY_DARK
BorderColor $LIGHT
FontColor $LIGHT
}
!endsub
!startsub stack
skinparam stack {
$primary_scheme()
}
!endsub

View File

@ -0,0 +1,441 @@
''
'' superhero theme based off of the bootstrap theme of the same name
'' https://bootswatch.com/united/
''
'' Author = "Brett Schwarz
'' Copyright (c) 2020 by Brett Schwarz
!$THEME = "united"
!if %not(%variable_exists("$BGCOLOR"))
!$BGCOLOR = "transparent"
!endif
skinparam backgroundColor $BGCOLOR
skinparam useBetaStyle false
''
'' Colors taken from the css file of the BS theme
''
!$BLUE = "#007bff"
!$INDIGO = "#6610f2"
!$PURPLE = "#772953"
!$PINK = "#e83e8c"
!$RED = "#df382c"
!$ORANGE = "#e95420"
!$YELLOW = "#efb73e"
!$GREEN = "#38b44a"
!$TEAL = "#20c997"
!$CYAN = "#17a2b8"
!$WHITE = "#fff"
!$GRAY = "#868e96"
!$GRAYDARK = "#333"
!$PRIMARY = "#e95420"
!$SECONDARY = "#aea79f"
!$SUCCESS = "#38b44a"
!$INFO = "#17a2b8"
!$WARNING = "#efb73e"
!$DANGER = "#df382c"
!$LIGHT = "#e9ecef"
!$DARK = "#772953"
'' *_DARK = tint (lighter) of the main color of 80%
'' where TINT is calculated by clr + (255-clr) * tint_factor
'' *_LIGHT = shade (darker) of the main color of 80%
'' and SHADE is calculated by clr * (1 - shade_factor)
''
!$FGCOLOR = $WHITE
!$PRIMARY_DARK = "#d24c1d"
!$PRIMARY_LIGHT = "#eb6536"
!$PRIMARY_TEXT = $WHITE
!$SECONDARY_DARK = "#9d968f"
!$SECONDARY_LIGHT = "#b6b0a9"
!$SECONDARY_TEXT = $WHITE
!$INFO_DARK = "#1592a6"
!$INFO_LIGHT = "#2eabbf"
!$INFO_TEXT = $WHITE
!$SUCCESS_DARK = "#32a243"
!$SUCCESS_LIGHT = "#4cbc5c"
!$SUCCESS_TEXT = $WHITE
!$WARNING_DARK = "#d7a538"
!$WARNING_LIGHT = "#f1be51"
!$WARNING_TEXT = $WHITE
!$DANGER_DARK = "#c93228"
!$DANGER_LIGHT = "#e24c41"
!$DANGER_TEXT = $WHITE
!$DARK_DARK = "#6b254b"
!$DARK_LIGHT = "#853e64"
!$LIGHT_DARK = "#d2d4d7"
!$LIGHT_LIGHT = "#ebeef1"
!procedure $success($msg)
<font color=$SUCCESS><b>$msg
!endprocedure
!procedure $failure($msg)
<font color=$DANGER><b>$msg
!endprocedure
!procedure $warning($msg)
<font color=$WARNING><b>$msg
!endprocedure
!procedure $primary_scheme()
FontColor $PRIMARY_TEXT
BorderColor $PRIMARY_DARK
BackgroundColor $PRIMARY
!endprocedure
''
'' Global Default Values
''
skinparam defaultFontName "Verdana"
skinparam defaultFontSize 12
skinparam dpi 100
skinparam shadowing false
skinparam roundcorner 8
skinparam ParticipantPadding 40
skinparam BoxPadding 40
skinparam Padding 5
skinparam ArrowColor $DARK
skinparam stereotype {
CBackgroundColor $SECONDARY_LIGHT
CBorderColor $SECONDARY_DARK
ABackgroundColor $SUCCESS_LIGHT
ABorderColor $SUCCESS_DARK
IBackgroundColor $DANGER_LIGHT
IBorderColor $DANGER_DARK
EBackgroundColor $WARNING_LIGHT
EBorderColor $WARNING_DARK
NBackgroundColor $INFO_LIGHT
NBorderColor $INFO_DARK
}
skinparam title {
FontColor $PRIMARY
BorderColor $SECONDARY_DARK
FontSize 20
BorderRoundCorner 8
BorderThickness 1
BackgroundColor $SECONDARY_LIGHT-$SECONDARY
}
skinparam legend {
BackgroundColor $SECONDARY
BorderColor $SECONDARY_DARK
FontColor $LIGHT
}
!startsub swimlane
skinparam swimlane {
BorderColor $INFO
BorderThickness 2
TitleBackgroundColor $SECONDARY_LIGHT-$SECONDARY
TitleFontColor $PRIMARY
}
!endsub
!startsub activity
skinparam activity {
$primary_scheme()
BarColor $SUCCESS
StartColor $INFO
EndColor $INFO
''
DiamondBackgroundColor $SECONDARY_LIGHT
DiamondBorderColor $SECONDARY_DARK
DiamondFontColor $SECONDARY_TEXT
}
!endsub
!startsub participant
skinparam participant {
$primary_scheme()
ParticipantBorderThickness 2
}
!endsub
!startsub actor
skinparam actor {
$primary_scheme()
}
!endsub
!startsub arrow
skinparam arrow {
Thickness 3
Color $PRIMARY
FontColor $FGCOLOR
}
!endsub
!startsub sequence
skinparam sequence {
BorderColor $PRIMARY
' For some reason sequence title font color does not pick up from global
TitleFontColor $PRIMARY
BackgroundColor $BGCOLOR
StartColor $PRIMARY
EndColor $PRIMARY
''
BoxBackgroundColor $BGCOLOR
BoxBorderColor $DARK
BoxFontColor $DARk
''
LifeLineBorderColor $SECONDARY
LifeLineBorderThickness 2
LifeLineBackgroundColor $SECONDARY_DARK
''
GroupBorderColor $DARK
GroupFontColor $DARK
GroupHeaderFontColor $INFO
GroupBackgroundColor $SECONDARY
GroupHeaderBackgroundColor $BGCOLOR
''
DividerBackgroundColor $DARK
DividerBorderColor $DARK
DividerBorderThickness 2
DividerFontColor $LIGHT
''
ReferenceBackgroundColor $BGCOLOR
ReferenceBorderColor $DARK
ReferenceFontColor $DARK
ReferenceHeaderFontColor $INFO
ReferenceHeaderBackgroundColor $SECONDARY
}
!endsub
!startsub partition
skinparam partition {
BorderColor $PRIMARY
FontColor $PRIMARY
BackgroundColor $BGCOLOR
}
!endsub
!startsub collections
skinparam collections {
$primary_scheme()
}
!endsub
!startsub control
skinparam control {
$primary_scheme()
}
!endsub
!startsub entity
skinparam entity {
$primary_scheme()
}
!endsub
!startsub boundary
skinparam boundary {
$primary_scheme()
}
!endsub
!startsub agent
skinparam agent {
BackgroundColor $WARNING
BorderColor $WARNING_LIGHT
FontColor $DARK
}
!endsub
!startsub note
skinparam note {
BorderThickness 1
BackgroundColor $INFO
BorderColor $INFO_DARK
FontColor $WHITE
}
!endsub
!startsub artifact
skinparam artifact {
BackgroundColor $DARK
BorderColor $DARK_DARK
FontColor $LIGHT
}
!endsub
!startsub component
skinparam component {
$primary_scheme()
}
!endsub
!startsub interface
skinparam interface {
BackgroundColor $DANGER_DARK
BorderColor $DANGER
FontColor $DARK
}
!endsub
!startsub storage
skinparam storage {
BackgroundColor $WARNING
BorderColor $WARNING_DARK
FontColor $WARNING_TEXT
}
!endsub
!startsub node
skinparam node {
BackgroundColor $SECONDARY
BorderColor $LIGHT
FontColor $LIGHT
}
!endsub
!startsub cloud
skinparam cloud {
BackgroundColor #F2FCFE-#eeeeee
BorderColor #F2FCFE
FontColor $DARK
}
!endsub
!startsub database
skinparam database {
$primary_scheme()
}
!endsub
!startsub class
skinparam class {
$primary_scheme()
HeaderBackgroundColor $PRIMARY_LIGHT
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $DARK
AttributeFontSize 11
}
!endsub
!startsub object
skinparam object {
$primary_scheme()
StereotypeFontColor $DARK
BorderThickness 1
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub usecase
skinparam usecase {
$primary_scheme()
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub rectangle
skinparam rectangle {
$primary_scheme()
BackgroundColor $SECONDARY_LIGHT
BorderThickness 2
StereotypeFontColor $PRIMARY
}
!endsub
!startsub package
skinparam package {
BackgroundColor $SECONDARY
BorderColor $PRIMARY
FontColor $PRIMARY
BorderThickness 2
}
!endsub
!startsub folder
skinparam folder {
BackgroundColor $SECONDARY_LIGHT
BorderColor $WARNING
FontColor $WARNING
BorderThickness 2
}
!endsub
!startsub frame
skinparam frame {
BackgroundColor $SECONDARY_LIGHT
BorderColor $INFO
FontColor $INFO
BorderThickness 2
}
!endsub
!startsub state
skinparam state {
$primary_scheme()
BackgroundColor $PRIMARY_LIGHT
StartColor $INFO
EndColor $INFO
AttributeFontColor $SECONDARY_TEXT
AttributeFontSize 11
}
!endsub
!startsub queue
skinparam queue {
$primary_scheme()
}
!endsub
!startsub card
skinparam card {
BackgroundColor $INFO
BorderColor $INFO_DARK
FontColor $INFO_TEXT
}
!endsub
!startsub file
skinparam file {
BackgroundColor $SECONDARY_DARK
BorderColor $LIGHT
FontColor $LIGHT
}
!endsub
!startsub stack
skinparam stack {
$primary_scheme()
}
!endsub