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

version 8053

This commit is contained in:
Arnaud Roques 2016-12-21 23:10:29 +01:00
parent 3100d49b54
commit ae4cf31832
20 changed files with 422 additions and 218 deletions

View File

@ -35,7 +35,7 @@
<groupId>net.sourceforge.plantuml</groupId> <groupId>net.sourceforge.plantuml</groupId>
<artifactId>plantuml</artifactId> <artifactId>plantuml</artifactId>
<version>8053-SNAPSHOT</version> <version>8054-SNAPSHOT</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>PlantUML</name> <name>PlantUML</name>

View File

@ -47,7 +47,8 @@ public enum LineParam {
swimlaneBorder, swimlaneBorder,
activityBorder, activityBorder,
titleBorder, titleBorder,
diagramBorder; diagramBorder,
rectangleBorder;
// sequenceBoxBorder(0.1); // sequenceBoxBorder(0.1);
} }

View File

@ -29,6 +29,7 @@
*/ */
package net.sourceforge.plantuml; package net.sourceforge.plantuml;
import java.awt.geom.Dimension2D;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.PrintStream; import java.io.PrintStream;
@ -44,10 +45,17 @@ import net.sourceforge.plantuml.core.DiagramDescription;
import net.sourceforge.plantuml.core.DiagramDescriptionImpl; import net.sourceforge.plantuml.core.DiagramDescriptionImpl;
import net.sourceforge.plantuml.core.ImageData; import net.sourceforge.plantuml.core.ImageData;
import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.core.UmlSource;
import net.sourceforge.plantuml.eggs.PSystemEmpty;
import net.sourceforge.plantuml.graphic.GraphicStrings; import net.sourceforge.plantuml.graphic.GraphicStrings;
import net.sourceforge.plantuml.graphic.UDrawable;
import net.sourceforge.plantuml.svek.TextBlockBackcolored; import net.sourceforge.plantuml.svek.TextBlockBackcolored;
import net.sourceforge.plantuml.ugraphic.ColorMapperIdentity; import net.sourceforge.plantuml.ugraphic.ColorMapperIdentity;
import net.sourceforge.plantuml.ugraphic.ImageBuilder; import net.sourceforge.plantuml.ugraphic.ImageBuilder;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.URectangle;
import net.sourceforge.plantuml.ugraphic.UTranslate;
import net.sourceforge.plantuml.ugraphic.txt.UGraphicTxt; import net.sourceforge.plantuml.ugraphic.txt.UGraphicTxt;
public class PSystemError extends AbstractPSystem { public class PSystemError extends AbstractPSystem {
@ -112,9 +120,28 @@ public class PSystemError extends AbstractPSystem {
} }
final boolean useRed = fileFormat.isUseRedForError(); final boolean useRed = fileFormat.isUseRedForError();
final TextBlockBackcolored result = GraphicStrings.createForError(getHtmlStrings(useRed), useRed); final TextBlockBackcolored result = GraphicStrings.createForError(getHtmlStrings(useRed), useRed);
final UDrawable udrawable;
final ImageBuilder imageBuilder = new ImageBuilder(new ColorMapperIdentity(), 1.0, result.getBackcolor(), final ImageBuilder imageBuilder = new ImageBuilder(new ColorMapperIdentity(), 1.0, result.getBackcolor(),
getMetadata(), null, 0, 0, null, false); getMetadata(), null, 0, 0, null, false);
imageBuilder.setUDrawable(result); if (getSource().getTotalLineCount() < 4) {
final TextBlockBackcolored welcome = new PSystemEmpty(false).getGraphicStrings();
udrawable = new UDrawable() {
public void drawU(UGraphic ug) {
final Dimension2D dim1 = welcome.calculateDimension(ug.getStringBounder());
final Dimension2D dim2 = result.calculateDimension(ug.getStringBounder());
final URectangle frame = new URectangle(Math.max(dim1.getWidth(), dim2.getWidth()),
dim1.getHeight());
ug.apply(new UChangeBackColor(welcome.getBackcolor())).apply(new UTranslate(1, 1)).draw(frame);
welcome.drawU(ug);
ug = ug.apply(new UTranslate(0, dim1.getHeight()));
result.drawU(ug);
}
};
} else {
udrawable = result;
}
imageBuilder.setUDrawable(udrawable);
return imageBuilder.writeImageTOBEMOVED(fileFormat, os); return imageBuilder.writeImageTOBEMOVED(fileFormat, os);
} }

View File

@ -61,6 +61,8 @@ import net.sourceforge.plantuml.svek.PackageStyle;
import net.sourceforge.plantuml.ugraphic.ColorMapper; import net.sourceforge.plantuml.ugraphic.ColorMapper;
import net.sourceforge.plantuml.ugraphic.ColorMapperIdentity; import net.sourceforge.plantuml.ugraphic.ColorMapperIdentity;
import net.sourceforge.plantuml.ugraphic.ColorMapperMonochrome; import net.sourceforge.plantuml.ugraphic.ColorMapperMonochrome;
import net.sourceforge.plantuml.ugraphic.ColorMapperReverse;
import net.sourceforge.plantuml.ugraphic.ColorOrder;
import net.sourceforge.plantuml.ugraphic.UFont; import net.sourceforge.plantuml.ugraphic.UFont;
import net.sourceforge.plantuml.ugraphic.UStroke; import net.sourceforge.plantuml.ugraphic.UStroke;
import net.sourceforge.plantuml.ugraphic.sprite.Sprite; import net.sourceforge.plantuml.ugraphic.sprite.Sprite;
@ -331,10 +333,6 @@ public class SkinParam implements ISkinParam {
return 10; return 10;
} }
private boolean isMonochrome() {
return "true".equals(getValue("monochrome"));
}
public static Collection<String> getPossibleValues() { public static Collection<String> getPossibleValues() {
final Set<String> result = new TreeSet<String>(); final Set<String> result = new TreeSet<String>();
result.add("Monochrome"); result.add("Monochrome");
@ -472,10 +470,22 @@ public class SkinParam implements ISkinParam {
} }
public ColorMapper getColorMapper() { public ColorMapper getColorMapper() {
if (isMonochrome()) { final String monochrome = getValue("monochrome");
return new ColorMapperMonochrome(); if ("true".equals(monochrome)) {
return new ColorMapperMonochrome(false);
} }
return new ColorMapperIdentity(); if ("reverse".equals(monochrome)) {
return new ColorMapperMonochrome(true);
}
final String value = getValue("reversecolor");
if (value == null) {
return new ColorMapperIdentity();
}
final ColorOrder order = ColorOrder.fromString(value);
if (order == null) {
return new ColorMapperIdentity();
}
return new ColorMapperReverse(order);
} }
public boolean shadowing() { public boolean shadowing() {

View File

@ -413,6 +413,20 @@ public class StringUtils {
return st; return st;
} }
public static String rot(String s) {
final StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if ((c >= 'a' && c <= 'm') || (c >= 'A' && c <= 'M')) {
c += 13;
} else if ((c >= 'n' && c <= 'z') || (c >= 'N' && c <= 'Z')) {
c -= 13;
}
sb.append(c);
}
return sb.toString();
}
public static String manageGuillemet(String st) { public static String manageGuillemet(String st) {
return st.replaceAll("\\<\\<\\s?((?:\\<&\\w+\\>|[^<>])+?)\\s?\\>\\>", "\u00AB$1\u00BB"); return st.replaceAll("\\<\\<\\s?((?:\\<&\\w+\\>|[^<>])+?)\\s?\\>\\>", "\u00AB$1\u00BB");
} }

View File

@ -90,7 +90,7 @@ public class FtileFactoryDelegatorRepeat extends FtileFactoryDelegator {
// printAllChild(repeat); // printAllChild(repeat);
final Ftile diamondBreak = new FtileDiamond(repeat.skinParam(), backColor, borderColor, swimlane); final Ftile diamondBreak = new FtileDiamond(repeat.skinParam(), backColor, borderColor, swimlane);
result = assembly(result, diamondBreak); result = assembly(FtileUtils.addHorizontalMargin(result, 10, 0), diamondBreak);
final Genealogy genealogy = new Genealogy(result); final Genealogy genealogy = new Genealogy(result);
final FtileBreak ftileBreak = (FtileBreak) weldingPoints.get(0); final FtileBreak ftileBreak = (FtileBreak) weldingPoints.get(0);

View File

@ -60,7 +60,7 @@ import net.sourceforge.plantuml.version.PSystemVersion;
public class PSystemDonors extends AbstractPSystem { public class PSystemDonors extends AbstractPSystem {
public static final String DONORS = "UDfTKqjosp0CtUCKN6lIGoXsxDQ_PEmqdSaEbc2BDaMu9ELKFaUlaaLdkki5VAH2RcNIuOeO0k1x3m-voVuVSl14WPpARM2hiO1dokBX6cOSG-SXxqjn3MCNdwY55QtH1urMBRYoaDkIdHepXHDrryr6Clfqj333v2CROAZxG1l8Osi-mgg945eOw-psM8P9ZxBni0fqgCYg0VD1-0txVyZ3jFvGoWu6RBHLIsuymQJvy9xjM8ZqmK73F46DTHhALxcX7sXBaNDGQUcwHTSAq-MLjjt28aKVJl1ez54AXhhO2_BhYxRmuA-jRG8YeoCCJxKEhbKphBX4c7IYlrOexPEyZ4mSbvnzAp9P398d-0JNv1zusj-migM4hX1DHhXsxPxV_5vB8oDbZoxe4toEsIN3N1SL6NMFshGf0tDAmNWF4qBxQOB5zuQy6ZPhXp9B4_c-y2vGKQcfGuyHqfR4eid4tZfdIOgQyb6dHhbOvMiah16MYNcxBrAUsKwg3ucjUDyfSyyEBPh3dNgbW7pmi1I2w4errTreOMJOTNhF__msvZBqQ0YJc5FiDBlQoM6lTZVrwfQHJnpI3Uq9UxCizGtyt6YrGYnbaToMr3UoMt9tQfu_VrdbqUWPMnZJpGAbEjX235Eh5-4m50jFOwQZRiwoEZCYU3YcUt14MCGcLFSWiuJKkD7YagOcDUA6GbIxy31AvtJX4hrXJwc80dUXj-AebQxZGWeWsUjDfplAZYUWCsFW_FFydhG_lvz_mQ2wMVGM_WAyB4jD"; public static final String DONORS = "UDfTL4josp0CtUCKN6lIGoXsxDQ_PEmqdSaEbc2BDaMu9ELKFaUlaaLdkki5VAH2RcNIuKeO0k1x3m_AJVR_a8Cd2kHKRWDRZGKyKnOFrp3Z63eFUL-AQnYxU4Kjh6YDFcYqQi6LXToMxDIOAPoe-zni9ADFHmipJ1wo0OQw3xI1FBRc8woQ2A65iSvkZsMOz2WR3wj0Xugi6Z0VXD-mVuSyJEiFfUnWm4PRjUJ64qoQ3_VPZeL87nmqp1FKMAUXF9KR-e6s53a7bPQkMtIjC5rUQTijB5BquGIFHX-bOAYBlI2_tcWB3_xQsYOWCZh2y5Jhu5ermufBX4ad-ck5qZx9oyZ4SSdPjoAJnI1vWazmJVw1f_qDArjAw0hHP8Hhr-xvpU-rD39IzkY2Fi7dc5qop7LHaL7tg4sRCZ2d58ptC26qdoPOV6_8gs6pTYYpD97l2-y25PMQElGO8Mr9B9fCxArpbgIeAHzrQfIBLRv6mXfXcPYtUoBbcUsa-f3OYlUTClViqA8vtAbN2iW73qiXYAvKKzsD5aQ6NQVt_CzlOov3ZuOmYJd5JhEhdHpsQdTJhsuPUNZ2tXvBVGCuDrgj44jP7RSbzOtibjoTckVFNrPvj7R65iPqip8fSrk8HMhr8gY7Ojffp7JKJLQMPKO43yVK-KU4HMn2TGyoIsYC6os-Q6fI8sueH7qB3wDqCXSkqGtsbCecS1TwAnvQwJgke02IJTvqIgDiTG8wCmREFy_lIVlp-_aN3AgRrMvbyPhrvKVWhEp2Nu66JIy0";
@Override @Override
final protected ImageData exportDiagramNow(OutputStream os, int num, FileFormatOption fileFormat) final protected ImageData exportDiagramNow(OutputStream os, int num, FileFormatOption fileFormat)

View File

@ -50,8 +50,10 @@ import net.sourceforge.plantuml.version.PSystemVersion;
public class PSystemEmpty extends AbstractPSystem { public class PSystemEmpty extends AbstractPSystem {
private final List<String> strings = new ArrayList<String>(); private final List<String> strings = new ArrayList<String>();
private final boolean withLogo;
public PSystemEmpty() { public PSystemEmpty(boolean withLogo) {
this.withLogo = withLogo;
strings.add("<b>Welcome to PlantUML!"); strings.add("<b>Welcome to PlantUML!");
strings.add(" "); strings.add(" ");
strings.add("If you use this software, you accept its license."); strings.add("If you use this software, you accept its license.");
@ -66,10 +68,12 @@ public class PSystemEmpty extends AbstractPSystem {
strings.add("\"\"class Example\"\""); strings.add("\"\"class Example\"\"");
strings.add(" "); strings.add(" ");
strings.add("You will find more information about PlantUML syntax on <u>http://plantuml.com</u>"); strings.add("You will find more information about PlantUML syntax on <u>http://plantuml.com</u>");
strings.add(" "); if (withLogo) {
strings.add(" "); strings.add(" ");
strings.add(" "); strings.add(" ");
strings.add(" "); strings.add(" ");
strings.add(" ");
}
} }
@Override @Override
@ -83,10 +87,12 @@ public class PSystemEmpty extends AbstractPSystem {
return imageBuilder.writeImageTOBEMOVED(fileFormat, os); return imageBuilder.writeImageTOBEMOVED(fileFormat, os);
} }
private TextBlockBackcolored getGraphicStrings() throws IOException { public TextBlockBackcolored getGraphicStrings() throws IOException {
final TextBlockBackcolored result = GraphicStrings.createBlackOnWhite(strings, if (withLogo) {
PSystemVersion.getPlantumlImage(), GraphicPosition.BACKGROUND_CORNER_BOTTOM_RIGHT); return GraphicStrings.createBlackOnWhite(strings, PSystemVersion.getPlantumlImage(),
return result; GraphicPosition.BACKGROUND_CORNER_BOTTOM_RIGHT);
}
return GraphicStrings.createBlackOnWhite(strings);
} }
public DiagramDescription getDescription() { public DiagramDescription getDescription() {

View File

@ -39,7 +39,7 @@ public class PSystemEmptyFactory implements PSystemFactory {
public Diagram createSystem(UmlSource source) { public Diagram createSystem(UmlSource source) {
if (source.getTotalLineCount() == 2) { if (source.getTotalLineCount() == 2) {
return new PSystemEmpty(); return new PSystemEmpty(true);
} }
return null; return null;
} }

View File

@ -35,175 +35,171 @@ import java.util.List;
public class QuoteUtils { public class QuoteUtils {
static final List<String> quotes = Arrays static private final List<String> quotes = Arrays
.asList(// .asList("Ur'f qrnq, Wvz.",
"He's dead, Jim.", // "Ol Tenogune'f unzzre, ol gur fbaf bs Jbeina, lbh funyy or niratrq.",
"By Grabthar's hammer, by the sons of Worvan, you shall be avenged.", // "Ebnqf? Jurer jr'er tbvat, jr qba'g arrq ebnqf.",
"Roads? Where we're going, we don't need roads.", // "Gur gvzr vf bhg bs wbvag.",
"The time is out of joint.", // "P'rfg phevrhk purm yrf znevaf pr orfbva qr snver qrf cuenfrf.",
"C'est curieux chez les marins ce besoin de faire des phrases.", // "V'z gnyxvat nobhg gur bgure Crgre, gur bar ba gur bgure fvqr.",
"I'm talking about the other Peter, the one on the other side.", // "Znl gur Sbepr or jvgu lbh!",
"May the Force be with you!", // "Arire tvir hc, arire fheeraqre...",
"Never give up, never surrender...", // "Unfgn yn ivfgn, onol.",
"Hasta la vista, baby.", // "Url, Qbp, jr orggre onpx hc. Jr qba'g unir rabhtu ebnq gb trg hc gb 88.",
"Hey, Doc, we better back up. We don't have enough road to get up to 88.", // "Terrgvatf, Cebsrffbe Snyxra. Funyy jr cynl n tnzr?",
"Greetings, Professor Falken. Shall we play a game?", // "V pna'g punatr gur ynj bs culfvpf!",
"I can't change the law of physics!", // "N fgenatr tnzr. Gur bayl jvaavat zbir vf abg gb cynl.",
"A strange game. The only winning move is not to play.", // "V'z gur Tngrxrrcre, ner lbh gur Xrlznfgre?",
"I'm the Gatekeeper, are you the Keymaster?", // "V nz gur Znfgre Pbageby Cebtenz. Ab bar Hfre jebgr zr.",
"I am the Master Control Program. No one User wrote me.", // "Yvsr? Qba'g gnyx gb zr nobhg yvsr.",
"Life? Don't talk to me about life.", // "V nyjnlf gubhtug fbzrguvat jnf shaqnzragnyyl jebat jvgu gur havirefr.",
"I always thought something was fundamentally wrong with the universe.", // "N ebobg znl abg vawher n uhzna orvat be, guebhtu vanpgvba, nyybj n uhzna orvat gb pbzr gb unez.",
"A robot may not injure a human being or, through inaction, allow a human being to come to harm.", // "Fheeraqre znl or bhe bayl bcgvba.",
"Surrender may be our only option.", // "Fvk ol avar. Sbegl gjb.",
"Six by nine. Forty two.", // "Vg'f yvsr, Wvz, ohg abg nf jr xabj vg.",
"It's life, Jim, but not as we know it.", // "Qba'g Cnavp!",
"Don't Panic!", // "Jung qb lbh zrna? Na Nsevpna be Rhebcrna fjnyybj?",
"What do you mean? An African or European swallow?", // "Lbh sbetbg gb fnl cyrnfr...",
"You forgot to say please...", // "Lbh unir qvrq bs qlfragrel.",
"You have died of dysentery.", // "Jbhyqa'g lbh cersre n avpr tnzr bs purff?",
"Wouldn't you prefer a nice game of chess?", // "Jura lbh unir ryvzvangrq gur vzcbffvoyr, jungrire erznvaf, ubjrire vzcebonoyr, zhfg or gur gehgu.",
"When you have eliminated the impossible, whatever remains, however improbable, must be the truth.", // "V xabj abj jul lbh pel. Ohg vg'f fbzrguvat V pna arire qb.",
"I know now why you cry. But it's something I can never do.", // "Erfvfgnapr vf shgvyr. Lbh jvyy or nffvzvyngrq.",
"Resistance is futile. You will be assimilated.", // "Nalguvat qvssrerag vf tbbq.",
"Anything different is good.", // "Penpxrq ol Nyqb Erfrg naq Ynherag Ehrvy.",
"Cracked by Aldo Reset and Laurent Rueil.", // "V'z obgu. V'z n pryroevgl va na rzretrapl.",
"I'm both. I'm a celebrity in an emergency.", // "Qb lbh xabj guvf terng terng cbyvfu npgbe, Wbfrcu Ghen?",
"Do you know this great great polish actor, Joseph Tura?", // "Gb vasvavgl naq orlbaq!",
"To infinity and beyond!", // "Fcnpr: gur svany sebagvre...",
"Space: the final frontier...", // "Fhe zba ovyyrg, grarm, l n rpevg Fnvag-Ynmner, p'rfg zrf lrhk bh dhbv ?",
"Sur mon billet, tenez, y a ecrit Saint-Lazare, c'est mes yeux ou quoi ?", // "Gur obl vf vzcbegnag. Ur unf gb yvir.",
"The boy is important. He has to live.", // "Bapr hcba n gvzr va n tnynkl sne, sne njnl...",
"Once upon a time in a galaxy far, far away...", // "Naq lbh xabj gurer'f n ybat ybat jnl nurnq bs lbh...",
"And you know there's a long long way ahead of you...", // "Na nyyretl gb bkltra? Ryz oyvtug?",
"An allergy to oxygen? Elm blight?", // "Ohg nybef lbh ner Serapu!",
"But alors you are French!", // "A'nv-wr qbap gnag irph dhr cbhe prggr vasnzvr?",
"N'ai-je donc tant vecu que pour cette infamie?", // "Fbzrguvat vf ebggra va gur Fgngr bs Qraznex.",
"Something is rotten in the State of Denmark.", // "Url, jung qb lbh jnag? Zvenpyrf?",
"Hey, what do you want? Miracles?", // "1.21 tvtnjnggf! 1.21 tvtnjnggf. Terng Fpbgg! ",
"1.21 gigawatts! 1.21 gigawatts. Great Scott! ", // "Jung gur uryy vf n tvtnjngg?",
"What the hell is a gigawatt?", // "V arrq n inpngvba.",
"I need a vacation.", // "Ba qrienvg wnznvf dhvggre Zbagnhona.",
"On devrait jamais quitter Montauban.", // "Zl sbepr vf n cyngsbez gung lbh pna pyvzo ba...",
"My force is a platform that you can climb on...", // "Gurer'f fbzrguvat jrveq, naq vg qba'g ybbx tbbq...",
"There's something weird, and it don't look good...", // "Rg evra ienvzrag ar punatr znvf gbhg rfg qvssrerag",
"Et rien vraiment ne change mais tout est different", // "Ornz zr hc, Fpbggl.",
"Beam me up, Scotty.", // "Gurer vf ab fcbba.",
"There is no spoon.", // "Sbyybj gur juvgr enoovg.",
"Follow the white rabbit.", // "Arire fraq n uhzna gb qb n znpuvar'f wbo.",
"Never send a human to do a machine's job.", // "Theh zrqvgngvba. Cerff yrsg zbhfr ohggba gb pbagvahr.",
"Guru meditation. Press left mouse button to continue.", // "V qba'g guvax jr'er va Xnafnf nalzber.",
"I don't think we're in Kansas anymore.", // "Yhxr, V nz lbhe sngure.",
"Luke, I am your father.", // "Oybbq, Fjrng naq Grnef",
"Blood, Sweat and Tears", // "Ubhfgba, jr unir n ceboyrz.",
"Houston, we have a problem.", // "Xrlobneq snvyher, cerff nal xrl gb pbagvahr",
"Keyboard failure, press any key to continue", // "Ovt zvfgnxr!",
"Big mistake!", // "Ubj znal HZY qrfvtaref qbrf vg gnxr gb punatr n yvtugohyo ?",
"How many UML designers does it take to change a lightbulb ?", // "Qb lbh yvxr zbivrf nobhg tynqvngbef ?",
"Do you like movies about gladiators ?", // "Gur fcvevg bs yrneavat vf n ynfgvat sebagvre.",
"The spirit of learning is a lasting frontier.", // "Vg vf phevbhf sbe fnvybef guvf arrq sbe znxvat fragraprf.",
"It is curious for sailors this need for making sentences.", // "Ubcvat sbe gur orfg, ohg rkcrpgvat gur jbefg",
"Hoping for the best, but expecting the worst", // "Gur jvyy gb tb ba jura V'z uheg qrrc vafvqr.",
"The will to go on when I'm hurt deep inside.", // "Vs vg oyrrqf, jr pna xvyy vg.",
"If it bleeds, we can kill it.", // "Ubhfgba, V unir n onq srryvat nobhg guvf zvffvba.",
"Houston, I have a bad feeling about this mission.", // "Znzn nyjnlf fnvq yvsr jnf yvxr n obk bs pubpbyngrf. Lbh arire xabj jung lbh'er tbaan trg.",
"Mama always said life was like a box of chocolates. You never know what you're gonna get.", // "Ol gur jnl, vf gurer nalbar ba obneq jub xabjf ubj gb syl n cynar?",
"By the way, is there anyone on board who knows how to fly a plane?", // "Qnir, guvf pbairefngvba pna freir ab checbfr nalzber. Tbbqolr.",
"Dave, this conversation can serve no purpose anymore. Goodbye.", // "Vg pna bayl or nggevohgnoyr gb uhzna reebe.",
"It can only be attributable to human error.", // "Ybbxf yvxr V cvpxrq gur jebat jrrx gb dhvg fzbxvat.",
"Looks like I picked the wrong week to quit smoking.", // "Lbh uhznaf npg fb fgenatr. Rirelguvat lbh perngr vf hfrq gb qrfgebl.",
"You humans act so strange. Everything you create is used to destroy.", // "Jurer qvq lbh yrnea ubj gb artbgvngr yvxr gung?",
"Where did you learn how to negotiate like that?", // "Fve, ner lbh pynffvsvrq nf uhzna?",
"Sir, are you classified as human?", // "Jr'er abg tbaan znxr vg, ner jr?",
"We're not gonna make it, are we?", // "Vg'f va lbhe angher gb qrfgebl lbhefryirf.",
"It's in your nature to destroy yourselves.", // "Gur zber pbagnpg V unir jvgu uhznaf, gur zber V yrnea.",
"The more contact I have with humans, the more I learn.", // "Jbhyq vg fnir lbh n ybg bs gvzr vs V whfg tnir hc naq jrag znq abj?",
"Would it save you a lot of time if I just gave up and went mad now?", // "Ernyvgl vf serdhragyl vanpphengr.",
"Reality is frequently inaccurate.", // "Qba'g oryvrir nalguvat lbh ernq ba gur arg. Rkprcg guvf. Jryy, vapyhqvat guvf, V fhccbfr.",
"Don't believe anything you read on the net. Except this. Well, including this, I suppose.", // "N phc bs grn jbhyq erfgber zl abeznyvgl.",
"A cup of tea would restore my normality.", // "Nalguvat gung guvaxf ybtvpnyyl pna or sbbyrq ol fbzrguvat ryfr gung guvaxf ng yrnfg nf ybtvpnyyl nf vg qbrf.",
"Anything that thinks logically can be fooled by something else that thinks at least as logically as it does.", // "Va na vasvavgr Havirefr nalguvat pna unccra.",
"In an infinite Universe anything can happen.", // "Fbzrgvzrf vs lbh erprvirq na nafjre, gur dhrfgvba zvtug or gnxra njnl.",
"Sometimes if you received an answer, the question might be taken away.", // "Cyrnfr pnyy zr Rqqvr vs vg jvyy uryc lbh gb erynk.",
"Please call me Eddie if it will help you to relax.", // "V qba'g oryvrir vg. Cebir vg gb zr naq V fgvyy jba'g oryvrir vg.",
"I don't believe it. Prove it to me and I still won't believe it.", // "Gbgnyyl znq, hggre abafrafr. Ohg jr'yy qb vg orpnhfr vg'f oevyyvnag abafrafr.",
"Totally mad, utter nonsense. But we'll do it because it's brilliant nonsense.", // "Guvf fragrapr vf abg gehr.",
"This sentence is not true.", // "V jbhyq engure qvr fgnaqvat guna yvir ba zl xarrf.",
"I would rather die standing than live on my knees.", // "Lbh ner orvat jngpurq.",
"You are being watched.", // "Qvq lbh srrq gurz nsgre zvqavtug?",
"Did you feed them after midnight?", // "Ubj qb lbh rkcynva fpubby gb uvture vagryyvtrapr?",
"How do you explain school to higher intelligence?", // "Crbcyr fbzrgvzrf znxr zvfgnxrf.",
"People sometimes make mistakes.", // "Ybbx, V qba'g unir gvzr sbe n pbairefngvba evtug abj.",
"Look, I don't have time for a conversation right now.", // "Nyy ceboyrzf va pbzchgre fpvrapr pna or fbyirq ol nabgure yriry bs vaqverpgvba",
"All problems in computer science can be solved by another level of indirection", // "...rkprcg sbe gur ceboyrz bs gbb znal yriryf bs vaqverpgvba",
"...except for the problem of too many levels of indirection", // "V xabj orpnhfr V ohvyg vg",
"I know because I built it", // "Rira gur fznyyrfg crefba pna punatr gur pbhefr bs gur shgher.",
"Even the smallest person can change the course of the future.", // "Vs lbh ner n sevraq, lbh fcrnx gur cnffjbeq, naq gur qbbef jvyy bcra.",
"If you are a friend, you speak the password, and the doors will open.", // "Lbh Funyy Abg Cnff",
"You Shall Not Pass", // "73.6% Bs Nyy Fgngvfgvpf Ner Znqr Hc",
"73.6% Of All Statistics Are Made Up", // "Jr pna arvgure pbasvez abe qral gung guvf vf penfuvat",
"We can neither confirm nor deny that this is crashing", // "Jura gur orngvat bs lbhe urneg rpubrf gur orngvat bs gur qehzf",
"When the beating of your heart echoes the beating of the drums", // "Arire gehfg n pbzchgre lbh pna'g guebj bhg n jvaqbj",
"Never trust a computer you can't throw out a window", // "Lrnu, V'z pnyz. V'z n pnyz crefba. Vf gurer fbzr ernfba V fubhyqa'g or pnyz?",
"Yeah, I'm calm. I'm a calm person. Is there some reason I shouldn't be calm?", // "Rirelobql whfg fgnl pnyz. Gur fvghngvba vf haqre pbageby.",
"Everybody just stay calm. The situation is under control.", // "Uvccl, lbh guvax rirelguvat vf n pbafcvenpl.",
"Hippy, you think everything is a conspiracy.", // "Gurfr thlf ner nobhg nf zhpu sha nf n gnk nhqvg.",
"These guys are about as much fun as a tax audit.", // "Gurer vf fbzrguvat qbja gurer! Fbzrguvat abg hf.",
"There is something down there! Something not us.", // "V fnj n tyvzcfr bs zl shgher naq rirelguvat'f punatrq sbe zr abj.",
"I saw a glimpse of my future and everything's changed for me now.", // "Va fcnpr ab bar pna urne lbh fpernz",
"In space no one can hear you scream", // "V pna'g yvr gb lbh nobhg lbhe punaprf, ohg... lbh unir zl flzcnguvrf.",
"I can't lie to you about your chances, but... you have my sympathies.", // "Gurer vf na rkcynangvba sbe guvf, lbh xabj.",
"There is an explanation for this, you know.", // "V'z nsenvq V unir fbzr onq arjf.",
"I'm afraid I have some bad news.", // "Qb zr n snibhe. Qvfpbaarpg zr. V pbhyq or erjbexrq, ohg V'yy arire or gbc bs gur yvar ntnva.",
"Do me a favour. Disconnect me. I could be reworked, but I'll never be top of the line again.", // "Gnxr vg rnfl, qba'g chfu gur yvggyr ohggba ba gur wblfgvpx!",
"Take it easy, don't push the little button on the joystick!", // "V'z n irel cevingr crefba.",
"I'm a very private person.", // "Gb fphycg na ryrcunag sebz n ovt oybpx bs zneoyr, whfg xabpx njnl nyy gur ovgf gung qba'g ybbx yvxr na ryrcunag.",
"To sculpt an elephant from a big block of marble, just knock away all the bits that don't look like an elephant.", // "Jub fnvq lbh pbhyq gnyx gb zr? Unir V tbg fbzrguvat ba zl snpr ?",
"Who said you could talk to me? Have I got something on my face ?", // "Jr'ir orra guebhtu jbefg",
"We've been through worst", // "Havgrq jr fgnaq",
"United we stand", // "Jr funyy arire fheeraqre",
"We shall never surrender", // "Nofbyhgr ubarfgl vfa'g nyjnlf gur zbfg qvcybzngvp abe gur fnsrfg sbez bs pbzzhavpngvba jvgu rzbgvbany orvatf.",
"Absolute honesty isn't always the most diplomatic nor the safest form of communication with emotional beings.", // "Vg'f... pbzcyvpngrq.",
// "Humor: seventy-five percent. [Confirmed] Self destruct sequence in T minus 10, 9... ", // "Qb abg bcra hagvy 1985",
"It's... complicated.", // "V fgvyy zrff hc ohg V'yy whfg fgneg ntnva",
"Do not open until 1985", // "V jba'g tvir hc, ab V jba'g tvir va; Gvyy V ernpu gur raq; Naq gura V'yy fgneg ntnva",
"I still mess up but I'll just start again", // "V jnaan gel rira gubhtu V pbhyq snvy",
"I won't give up, no I won't give in; Till I reach the end; And then I'll start again", // "Fbzrgvzrf jr pbzr ynfg ohg jr qvq bhe orfg",
"I wanna try even though I could fail", // "Vs lbh frr fbzrguvat, fnl fbzrguvat",
"Sometimes we come last but we did our best", // "Va gurbel gurer vf ab qvssrerapr orgjrra gurbel naq cenpgvpr. Ohg, va cenpgvpr, gurer vf.",
"If you see something, say something", // "Qnlyvtug, V zhfg jnvg sbe gur fhaevfr. V zhfg guvax bs n arj yvsr. Naq V zhfga'g tvir va.",
"In theory there is no difference between theory and practice. But, in practice, there is.", // "Vs V pnaabg oevat lbh pbzsbeg gura ng yrnfg V oevat lbh ubcr",
"Daylight, I must wait for the sunrise. I must think of a new life. And I mustn't give in.", // "Jr nyy zhfg yrnea sebz fznyy zvfsbeghar, pbhag gur oyrffvatf gung ner erny",
"If I cannot bring you comfort then at least I bring you hope", // "Cercner Guerr Frnyrq Rairybcrf...",
"We all must learn from small misfortune, count the blessings that are real", // "Lbh xabj gung guvat lbh whfg qvq? Qba'g qb gung",
"Prepare Three Sealed Envelopes...", // "Vg gbbx zr n ybat gvzr gb haqrefgnaq gung vs lbh jnag gb qb guvf wbo jryy lbh unir gb fgnl qrgnpurq.",
"You know that thing you just did? Don't do that", // "Qb lbh yvxr lbhe zbeavat grn jrnx be fgebat ?", "Jvagre vf pbzvat",
"It took me a long time to understand that if you want to do this job well you have to stay detached.", // "Jung sbbyf gurfr zbegnyf or!", "Fbzrguvat jvpxrq guvf jnl pbzrf.",
"Do you like your morning tea weak or strong ?", // "V guvax V trg vg, jung jnf vg? Cbxre Avtug? Onpurybe Cnegl?",
"Winter is coming", // "Vg'f nyevtug gb or fpnerq. Erzrzore, gurer vf ab pbhentr jvgubhg srne.",
"What fools these mortals be!", // "Guebhtu ernqvarff naq qvfpvcyvar jr ner znfgref bs bhe sngr.",
"Something wicked this way comes.", // "Jvgu terng cbjre pbzrf terng erfcbafvovyvgl",
"I think I get it, what was it? Poker Night? Bachelor Party?", // "Vs n znpuvar pna yrnea gur inyhr bs uhzna yvsr, znlor jr pna gbb ?",
"It's alright to be scared. Remember, there is no courage without fear.", // "Bayl tbvat sbejneq 'pnhfr jr pna'g svaq erirefr.",
"Through readiness and discipline we are masters of our fate.", // "Jr'er abg tbaan fvg va fvyrapr, jr'er abg tbaan yvir jvgu srne",
"With great power comes great responsibility", // "Oba, qnaf qvk zvahgrf wr abhf pbafvqrer pbzzr qrsvavgvirzrag creqhf.",
"If a machine can learn the value of human life, maybe we can too ?", // "Pn fren fherzrag ovra dhnaq pn fren svav.",
"Only going forward 'cause we can't find reverse.", // "Vg'f gur ynfg cvrpr bs gur chmmyr ohg lbh whfg pna'g znxr vg svg",
"We're not gonna sit in silence, we're not gonna live with fear", // "Qbpgbe fnlf lbh'er pherq ohg lbh fgvyy srry gur cnva",
"Bon, dans dix minutes je nous considere comme definitivement perdus.", // "Vf negvsvpvny vagryyvtrapr gur rknpg bccbfvgr bs angheny fghcvqvgl ?",
"Ca sera surement bien quand ca sera fini.", // "Sbeprzrag, pn qrcraq, pn qrcnffr...",
"It's the last piece of the puzzle but you just can't make it fit", // "Gurer'f orra n cnggrea bs vafhobeqvangr orunivbe erpragyl.", "Ab. Jr ner abg na rssrpgvir grnz.",
"Doctor says you're cured but you still feel the pain", // "Bhe wbo vf abg gb erzrzore... erzrzore?",
"Is artificial intelligence the exact opposite of natural stupidity ?", // "Guvf vf zvffvba pbageby. Ubj ner lbh nyy qbvat guvf ybiryl zbeavat?",
"Forcement, ca depend, ca depasse...", // "Vs lbh pbhyq frr lbhe jubyr yvsr ynvq bhg va sebag bs lbh, jbhyq lbh punatr guvatf?",
"There's been a pattern of insubordinate behavior recently.", // "Vf guvf n aba-mreb-fhz tnzr?", "Abj gung'f n cebcre vagebqhpgvba.",
"No. We are not an effective team.", // "Rirelguvat unf punatrq naq vg jba'g fgbc punatvat nalgvzr fbba.",
"Our job is not to remember... remember?", // "Jung znxrf lbh qvssrerag znxrf lbh qnatrebhf", "Qviretrapr vf rkgerzryl qnatrebhf",
"This is mission control. How are you all doing this lovely morning?", // "V'z Qviretrag. Naq V pna'g or pbagebyyrq", "Znl gur bqqf or rire va lbhe snibe");
"If you could see your whole life laid out in front of you, would you change things?", //
"Is this a non-zero-sum game?", //
"Now that's a proper introduction." //
);
private QuoteUtils() { private QuoteUtils() {
} }

View File

@ -33,7 +33,9 @@ package net.sourceforge.plantuml.graphic;
import net.sourceforge.plantuml.ColorParam; import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.FontParam; import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.ISkinParam; import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.LineParam;
import net.sourceforge.plantuml.cucadiagram.Stereotype; import net.sourceforge.plantuml.cucadiagram.Stereotype;
import net.sourceforge.plantuml.ugraphic.UStroke;
public class SkinParameter { public class SkinParameter {
@ -136,4 +138,15 @@ public class SkinParameter {
return skinParam.getRoundCorner(name.toLowerCase(), stereotype); return skinParam.getRoundCorner(name.toLowerCase(), stereotype);
} }
public UStroke getStroke(ISkinParam skinParam, Stereotype stereotype) {
UStroke result = null;
if (name.equals("RECTANGLE")) {
result = skinParam.getThickness(LineParam.rectangleBorder, stereotype);
}
if (result == null) {
result = new UStroke(1.5);
}
return result;
}
} }

View File

@ -62,6 +62,7 @@ import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.FileFormatOption;
import net.sourceforge.plantuml.FontParam; import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.ISkinParam; import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.StringUtils;
import net.sourceforge.plantuml.UmlDiagram; import net.sourceforge.plantuml.UmlDiagram;
import net.sourceforge.plantuml.api.ImageDataSimple; import net.sourceforge.plantuml.api.ImageDataSimple;
import net.sourceforge.plantuml.core.ImageData; import net.sourceforge.plantuml.core.ImageData;
@ -542,7 +543,7 @@ public class CucaDiagramFileMakerJDot implements CucaDiagramFileMaker {
exception.printStackTrace(); exception.printStackTrace();
final List<String> strings = new ArrayList<String>(); final List<String> strings = new ArrayList<String>();
strings.add("An error has occured : " + exception); strings.add("An error has occured : " + exception);
final String quote = QuoteUtils.getSomeQuote(); final String quote = StringUtils.rot(QuoteUtils.getSomeQuote());
strings.add("<i>" + quote); strings.add("<i>" + quote);
strings.add(" "); strings.add(" ");
GraphvizCrash.addProperties(strings); GraphvizCrash.addProperties(strings);

View File

@ -97,7 +97,10 @@ public class StatsUtils {
} }
prefs.putInt("VERSION", VERSION); prefs.putInt("VERSION", VERSION);
} }
reloadNow(); restoreNow();
if (historicalData != null) {
historicalData.reset();
}
Runtime.getRuntime().addShutdownHook(new Thread() { Runtime.getRuntime().addShutdownHook(new Thread() {
@Override @Override
@ -107,7 +110,7 @@ public class StatsUtils {
}); });
} }
public static void reloadNow() { private static void restoreNow() {
try { try {
prefs.sync(); prefs.sync();
fullEver = ParsedGenerated.loadDated(prefs, "full"); fullEver = ParsedGenerated.loadDated(prefs, "full");
@ -205,7 +208,7 @@ public class StatsUtils {
public static void loopStats() throws InterruptedException { public static void loopStats() throws InterruptedException {
int linesUsed = 0; int linesUsed = 0;
while (true) { while (true) {
StatsUtils.reloadNow(); restoreNow();
clearScreen(System.out, linesUsed); clearScreen(System.out, linesUsed);
final TextConverter textConverter = new TextConverter(getStats()); final TextConverter textConverter = new TextConverter(getStats());
textConverter.printMe(System.out); textConverter.printMe(System.out);

View File

@ -55,27 +55,18 @@ public class StatsUtilsIncrement {
final private static ConcurrentMap<String, ParsedGenerated> byTypeEver = StatsUtils.byTypeEver; final private static ConcurrentMap<String, ParsedGenerated> byTypeEver = StatsUtils.byTypeEver;
final private static ConcurrentMap<String, ParsedGenerated> byTypeCurrent = StatsUtils.byTypeCurrent; final private static ConcurrentMap<String, ParsedGenerated> byTypeCurrent = StatsUtils.byTypeCurrent;
final private static HistoricalData historicalData = StatsUtils.historicalData;
final private static ParsedGenerated fullEver = StatsUtils.fullEver;
final private static FormatCounter formatCounterCurrent = StatsUtils.formatCounterCurrent; final private static FormatCounter formatCounterCurrent = StatsUtils.formatCounterCurrent;
final private static FormatCounter formatCounterEver = StatsUtils.formatCounterEver; final private static FormatCounter formatCounterEver = StatsUtils.formatCounterEver;
static {
// StatsUtils.jvmCounting = prefs.getLong("JVMcounting", 0) + 1;
// prefs.putLong("JVMcounting", StatsUtils.jvmCounting);
historicalData.reset();
}
public static void onceMoreParse(long duration, Class<? extends Diagram> type) { public static void onceMoreParse(long duration, Class<? extends Diagram> type) {
getByTypeCurrent(type).parsed().addValue(duration); getByTypeCurrent(type).parsed().addValue(duration);
final ParsedGenerated byTypeEver = getByTypeEver(type); final ParsedGenerated byTypeEver = getByTypeEver(type);
byTypeEver.parsed().addValue(duration); byTypeEver.parsed().addValue(duration);
fullEver.parsed().addValue(duration); StatsUtils.fullEver.parsed().addValue(duration);
historicalData.current().parsed().addValue(duration); StatsUtils.historicalData.current().parsed().addValue(duration);
historicalData.current().parsed().save(prefs); StatsUtils.historicalData.current().parsed().save(prefs);
fullEver.parsed().save(prefs); StatsUtils.fullEver.parsed().save(prefs);
byTypeEver.parsed().save(prefs); byTypeEver.parsed().save(prefs);
realTimeExport(); realTimeExport();
} }
@ -84,14 +75,14 @@ public class StatsUtilsIncrement {
getByTypeCurrent(type).generated().addValue(duration); getByTypeCurrent(type).generated().addValue(duration);
final ParsedGenerated byTypeEver = getByTypeEver(type); final ParsedGenerated byTypeEver = getByTypeEver(type);
byTypeEver.generated().addValue(duration); byTypeEver.generated().addValue(duration);
fullEver.generated().addValue(duration); StatsUtils.fullEver.generated().addValue(duration);
historicalData.current().generated().addValue(duration); StatsUtils.historicalData.current().generated().addValue(duration);
formatCounterCurrent.plusOne(fileFormat, duration); formatCounterCurrent.plusOne(fileFormat, duration);
formatCounterEver.plusOne(fileFormat, duration); formatCounterEver.plusOne(fileFormat, duration);
formatCounterEver.save(prefs, fileFormat); formatCounterEver.save(prefs, fileFormat);
historicalData.current().generated().save(prefs); StatsUtils.historicalData.current().generated().save(prefs);
fullEver.generated().save(prefs); StatsUtils.fullEver.generated().save(prefs);
byTypeEver.generated().save(prefs); byTypeEver.generated().save(prefs);
realTimeExport(); realTimeExport();
} }

View File

@ -37,6 +37,7 @@ import java.util.List;
import net.sourceforge.plantuml.Dimension2DDouble; import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.OptionPrint; import net.sourceforge.plantuml.OptionPrint;
import net.sourceforge.plantuml.StringUtils;
import net.sourceforge.plantuml.cucadiagram.dot.GraphvizUtils; import net.sourceforge.plantuml.cucadiagram.dot.GraphvizUtils;
import net.sourceforge.plantuml.flashcode.FlashCodeFactory; import net.sourceforge.plantuml.flashcode.FlashCodeFactory;
import net.sourceforge.plantuml.flashcode.FlashCodeUtils; import net.sourceforge.plantuml.flashcode.FlashCodeUtils;
@ -72,7 +73,7 @@ public class GraphvizCrash extends AbstractTextBlock implements IEntityImage {
} else { } else {
strings.add("An error has occured : " + exception); strings.add("An error has occured : " + exception);
} }
final String quote = QuoteUtils.getSomeQuote(); final String quote = StringUtils.rot(QuoteUtils.getSomeQuote());
strings.add("<i>" + quote); strings.add("<i>" + quote);
strings.add(" "); strings.add(" ");
return strings; return strings;

View File

@ -91,9 +91,11 @@ public class EntityImageDescription extends AbstractEntityImage {
backcolor = SkinParamUtils.getColor(getSkinParam(), symbol.getColorParamBack(), getStereo()); backcolor = SkinParamUtils.getColor(getSkinParam(), symbol.getColorParamBack(), getStereo());
} }
// backcolor = HtmlColorUtils.BLUE; // backcolor = HtmlColorUtils.BLUE;
final HtmlColor forecolor = SkinParamUtils.getColor(getSkinParam(), symbol.getColorParamBorder(), getStereo()); assert getStereo() == stereotype;
final HtmlColor forecolor = SkinParamUtils.getColor(getSkinParam(), symbol.getColorParamBorder(), stereotype);
final double roundCorner = symbol.getSkinParameter().getRoundCorner(getSkinParam(), stereotype); final double roundCorner = symbol.getSkinParameter().getRoundCorner(getSkinParam(), stereotype);
final SymbolContext ctx = new SymbolContext(backcolor, forecolor).withStroke(new UStroke(1.5)) final UStroke stroke = symbol.getSkinParameter().getStroke(getSkinParam(), stereotype);
final SymbolContext ctx = new SymbolContext(backcolor, forecolor).withStroke(stroke)
.withShadow(getSkinParam().shadowing2(symbol.getSkinParameter())).withRoundCorner(roundCorner); .withShadow(getSkinParam().shadowing2(symbol.getSkinParameter())).withRoundCorner(roundCorner);
TextBlock stereo = TextBlockUtils.empty(0, 0); TextBlock stereo = TextBlockUtils.empty(0, 0);

View File

@ -36,12 +36,21 @@ import net.sourceforge.plantuml.graphic.HtmlColor;
public class ColorMapperMonochrome implements ColorMapper { public class ColorMapperMonochrome implements ColorMapper {
private final boolean reverse;
public ColorMapperMonochrome(boolean reverse) {
this.reverse = reverse;
}
public Color getMappedColor(HtmlColor htmlColor) { public Color getMappedColor(HtmlColor htmlColor) {
if (htmlColor == null) { if (htmlColor == null) {
return null; return null;
} }
final Color color = new ColorMapperIdentity().getMappedColor(htmlColor); final Color color = new ColorMapperIdentity().getMappedColor(htmlColor);
final int grayScale = (int) (color.getRed() * .3 + color.getGreen() * .59 + color.getBlue() * .11); int grayScale = (int) (color.getRed() * .3 + color.getGreen() * .59 + color.getBlue() * .11);
if (reverse) {
grayScale = 255 - grayScale;
}
return new Color(grayScale, grayScale, grayScale); return new Color(grayScale, grayScale, grayScale);
} }
} }

View File

@ -0,0 +1,57 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2017, Arnaud Roques
*
* Project Info: http://plantuml.com
*
* 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.ugraphic;
import java.awt.Color;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.HtmlColorSimple;
public class ColorMapperReverse implements ColorMapper {
private final ColorOrder order;
public ColorMapperReverse(ColorOrder order) {
this.order = order;
}
public Color getMappedColor(HtmlColor color) {
if (color == null) {
return null;
}
return getReverse(((HtmlColorSimple) color).getColor999());
}
private Color getReverse(Color color) {
return order.getReverse(color);
}
}

View File

@ -0,0 +1,73 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2017, Arnaud Roques
*
* Project Info: http://plantuml.com
*
* 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.ugraphic;
import java.awt.Color;
public enum ColorOrder {
RGB, RBG, GRB, GBR, BRG, BGR;
public Color getColor(Color color) {
if (this == RGB) {
return new Color(color.getRed(), color.getGreen(), color.getBlue());
}
if (this == RBG) {
return new Color(color.getRed(), color.getBlue(), color.getGreen());
}
if (this == GRB) {
return new Color(color.getGreen(), color.getRed(), color.getBlue());
}
if (this == GBR) {
return new Color(color.getGreen(), color.getBlue(), color.getRed());
}
if (this == BRG) {
return new Color(color.getBlue(), color.getRed(), color.getGreen());
}
if (this == BGR) {
return new Color(color.getBlue(), color.getGreen(), color.getRed());
}
throw new IllegalStateException();
}
public Color getReverse(Color color) {
color = this.getColor(color);
return new Color(255 - color.getRed(), 255 - color.getGreen(), 255 - color.getBlue());
}
public static ColorOrder fromString(String order) {
try {
return ColorOrder.valueOf(order.toUpperCase());
} catch (Exception e) {
return null;
}
}
}

View File

@ -36,7 +36,7 @@ import java.util.Date;
public class Version { public class Version {
public static int version() { public static int version() {
return 8052; return 8053;
} }
public static String versionString() { public static String versionString() {
@ -68,7 +68,7 @@ public class Version {
} }
public static long compileTime() { public static long compileTime() {
return 1481739310760L; return 1482342693198L;
} }
public static String compileTimeString() { public static String compileTimeString() {