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

version 8024

This commit is contained in:
Arnaud Roques 2015-05-03 17:36:36 +02:00
parent 36ce60c4c1
commit 136819ca48
101 changed files with 1114 additions and 874 deletions

View File

@ -30,13 +30,12 @@
Script Author: Julien Eluard
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.plantuml</groupId>
<artifactId>plantuml</artifactId>
<version>8023-SNAPSHOT</version>
<version>8025-SNAPSHOT</version>
<packaging>jar</packaging>
<name>PlantUML</name>

View File

@ -40,6 +40,7 @@ import net.sourceforge.plantuml.cucadiagram.dot.GraphvizLayoutStrategy;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.IHtmlColorSet;
import net.sourceforge.plantuml.graphic.SkinParameter;
import net.sourceforge.plantuml.svek.ConditionStyle;
import net.sourceforge.plantuml.svek.PackageStyle;
import net.sourceforge.plantuml.ugraphic.ColorMapper;
@ -80,6 +81,8 @@ public interface ISkinParam extends ISkinSimple {
public boolean shadowing();
public boolean shadowing2(SkinParameter skinParameter);
public PackageStyle getPackageStyle();
public boolean useUml2ForComponent();

View File

@ -28,7 +28,7 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15870 $
* Revision $Revision: 15982 $
*
*/
package net.sourceforge.plantuml;
@ -54,6 +54,7 @@ import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.HtmlColorSetSimple;
import net.sourceforge.plantuml.graphic.HtmlColorUtils;
import net.sourceforge.plantuml.graphic.IHtmlColorSet;
import net.sourceforge.plantuml.graphic.SkinParameter;
import net.sourceforge.plantuml.svek.ConditionStyle;
import net.sourceforge.plantuml.svek.PackageStyle;
import net.sourceforge.plantuml.ugraphic.ColorMapper;
@ -434,6 +435,27 @@ public class SkinParam implements ISkinParam {
return true;
}
public boolean shadowing2(SkinParameter skinParameter) {
if (skinParameter == null) {
throw new IllegalArgumentException();
}
final String name = skinParameter.getUpperCaseName();
final String value = getValue(name + "shadowing");
if (value == null) {
return shadowing();
}
if ("false".equalsIgnoreCase(value)) {
return false;
}
if ("true".equalsIgnoreCase(value)) {
return true;
}
if (strictUmlStyle()) {
return false;
}
return true;
}
public PackageStyle getPackageStyle() {
final String value = getValue("packageStyle");
final PackageStyle p = PackageStyle.fromString(value);

View File

@ -40,6 +40,7 @@ import net.sourceforge.plantuml.cucadiagram.dot.GraphvizLayoutStrategy;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.IHtmlColorSet;
import net.sourceforge.plantuml.graphic.SkinParameter;
import net.sourceforge.plantuml.svek.ConditionStyle;
import net.sourceforge.plantuml.svek.PackageStyle;
import net.sourceforge.plantuml.ugraphic.ColorMapper;
@ -111,6 +112,10 @@ public class SkinParamDelegator implements ISkinParam {
return skinParam.shadowing();
}
public boolean shadowing2(SkinParameter skinParameter) {
return skinParam.shadowing2(skinParameter);
}
public PackageStyle getPackageStyle() {
return skinParam.getPackageStyle();
}

View File

@ -61,13 +61,12 @@ public class BodyEnhanced2 implements TextBlock {
// private final List<Url> urls = new ArrayList<Url>();
public BodyEnhanced2(Display rawBody, FontParam fontParam, ISkinSimple spriteContainer,
HorizontalAlignment align, UFont fontNote, HtmlColor fontColor, HtmlColor hyperlinkColor, boolean useUnderlineForHyperlink) {
public BodyEnhanced2(Display rawBody, FontParam fontParam, ISkinSimple spriteContainer, HorizontalAlignment align,
FontConfiguration titleConfig) {
this.rawBody2 = rawBody;
// this.fontParam = fontParam;
this.spriteContainer = spriteContainer;
this.titleConfig = new FontConfiguration(fontNote, fontColor, hyperlinkColor, useUnderlineForHyperlink);
this.titleConfig = titleConfig;
this.align = align;
}

View File

@ -58,7 +58,7 @@ import net.sourceforge.plantuml.version.PSystemVersion;
public class PSystemDonors extends AbstractPSystem {
public static final String DONORS = "UDfTaajImp0CXlSwXTUPuH2XOSg4yfYMOS5EJKJZrfMAxHIIqwC2gTrgPOrUto-vTCM_aOSNYkHDoL7OOWElL2IJFImakJv0EPNY6kO-XMY05QqnH8jidgHZABaLR-P2SQJJy-D3CwPqP5XWDeWZL7Poh8CojPOZhFg4CC3S5fV60lL4sGTOHJfqn6OcSb1zrJI70Zpihqh5mqoSPREKFX3K_LMys8eAcPo3XSUC6lUvgwDAHz_8hQvprbdjka4_gDBbMJPlu2cdZoCyEtlKWiesEoK_Hop3NJYtvWoYe2DKuzv6FvW5Tj8YrAUbltUexREyWbmwbzfkq3KnHirJFkMg_-1fTw6Asmltjz9g8wTbppxQ4UvJk1Luj4r7pjoYTKEkm8qvJ0ZNQ3KXtzJOVFOKJDMlFUffNPB_9jj8JMSUF0PCI1lI7viTy0j-0FkXkCC0";
public static final String DONORS = "UDfTaikosZ0CXlTw2gypquT8IOTEu5pcqEcYEv7e41sCH6s7DddwYhR11gsiqUtx9TU--cyKu9KI1LTBKc7iu1jLsVG4MyrkY50lfRY7TSWXcc17Uuo9KTop3WArz1hSMYdDT7s-lrl6aeu2Mom6IOA65uSzrBcrNc0tPeG9rbpTcoYq2-KOOPVeF92ubUhPz3NB78gmEJsKQe2LUXRtfcCaQCU7UFMX9cHnpWnF1JMUIjT6rPv-e_IspjN0rlM0OJAbRpVPSe3daZxDyEBvOWKDTqSZlqLOu4kyjPO2eg8BDFE9KvZS5WVj4ThhqdyCQEsBl8fyFfVPSR8r2IRBCpxZQl_1q_5EbVHtxjzAjaRUobv2uXc-vd2lyCJTGDvzHlPJgS3F9KoCZsWjeNngiVivKdJDk0zef_LP_dVzIDGDRXCmOaOwaFtOue2_hX_DKjn6Bmn_0C5QlDy0";
// public ImageData exportDiagram(OutputStream os, int num, FileFormatOption
// fileFormat) throws IOException {

View File

@ -72,11 +72,7 @@ public class EpsGraphics {
public EpsGraphics() {
header.append("%!PS-Adobe-3.0 EPSF-3.0\n");
String v = Version.versionString();
if (v.endsWith("beta") == false) {
v += " ";
}
header.append("%%Creator: PlantUML v" + v + "\n");
header.append("%%Creator: PlantUML v" + Version.versionString(10) + "\n");
header.append("%%Title: noTitle\n");
// header.append("%%CreationDate: " + new Date() + "\n");
setcolorgradient.add(new PostScriptCommandRaw("3 index 7 index sub 1 index mul 7 index add", true));

View File

@ -28,7 +28,7 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15812 $
* Revision $Revision: 15932 $
*
*/
package net.sourceforge.plantuml.graphic;
@ -65,6 +65,18 @@ public class FontConfiguration {
this(SkinParamUtils.getFont(skinParam, fontParam, stereo), SkinParamUtils.getFontColor(skinParam, fontParam,
stereo), skinParam.getHyperlinkColor(), skinParam.useUnderlineForHyperlink());
}
//---
public final boolean useUnderlineForHyperlink() {
return useUnderlineForHyperlink;
}
public final HtmlColor getHyperlinkColor() {
return hyperlinkColor;
}
//---
private static EnumSet<FontStyle> getStyles(UFont font) {
final boolean bold = font.isBold();

View File

@ -146,6 +146,8 @@ public class QuoteUtils {
"You Shall Not Pass", //
"73.6% Of All Statistics Are Made Up", //
"We can neither confirm nor deny that this is crashing"
// When the beating of your heart echoes the beating of the drums
// Never trust a computer you can't throw out a window
);
private QuoteUtils() {
}

View File

@ -0,0 +1,130 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2014, Arnaud Roques
*
* Project Info: http://plantuml.sourceforge.net
*
* 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.
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc.
* in the United States and other countries.]
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 8066 $
*
*/
package net.sourceforge.plantuml.graphic;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.FontParam;
public class SkinParameter {
public static final SkinParameter DATABASE = new SkinParameter("DATABASE", ColorParam.databaseBackground,
ColorParam.databaseBorder, FontParam.DATABASE, FontParam.DATABASE_STEREOTYPE);
public static final SkinParameter ARTIFACT = new SkinParameter("ARTIFACT", ColorParam.artifactBackground,
ColorParam.artifactBorder, FontParam.ARTIFACT, FontParam.ARTIFACT_STEREOTYPE);
public static final SkinParameter COMPONENT1 = new SkinParameter("COMPONENT1", ColorParam.componentBackground,
ColorParam.componentBorder, FontParam.COMPONENT, FontParam.COMPONENT_STEREOTYPE);
public static final SkinParameter NODE = new SkinParameter("NODE", ColorParam.nodeBackground,
ColorParam.nodeBorder, FontParam.NODE, FontParam.NODE_STEREOTYPE);
public static final SkinParameter STORAGE = new SkinParameter("STORAGE", ColorParam.storageBackground,
ColorParam.storageBorder, FontParam.STORAGE, FontParam.STORAGE_STEREOTYPE);
public static final SkinParameter QUEUE = new SkinParameter("QUEUE", ColorParam.queueBackground,
ColorParam.queueBorder, FontParam.QUEUE, FontParam.QUEUE_STEREOTYPE);
public static final SkinParameter CLOUD = new SkinParameter("CLOUD", ColorParam.cloudBackground,
ColorParam.cloudBorder, FontParam.CLOUD, FontParam.CLOUD_STEREOTYPE);
public static final SkinParameter FRAME = new SkinParameter("FRAME", ColorParam.frameBackground,
ColorParam.frameBorder, FontParam.FRAME, FontParam.FRAME_STEREOTYPE);
public static final SkinParameter COMPONENT2 = new SkinParameter("COMPONENT2", ColorParam.componentBackground,
ColorParam.componentBorder, FontParam.COMPONENT, FontParam.COMPONENT_STEREOTYPE);
public static final SkinParameter AGENT = new SkinParameter("AGENT", ColorParam.agentBackground,
ColorParam.agentBorder, FontParam.AGENT, FontParam.AGENT_STEREOTYPE);
public static final SkinParameter FOLDER = new SkinParameter("FOLDER", ColorParam.folderBackground,
ColorParam.folderBorder, FontParam.FOLDER, FontParam.FOLDER_STEREOTYPE);
public static final SkinParameter PACKAGE = new SkinParameter("PACKAGE", ColorParam.packageBackground,
ColorParam.packageBorder, FontParam.FOLDER, FontParam.FOLDER_STEREOTYPE);
public static final SkinParameter CARD = new SkinParameter("CARD", ColorParam.rectangleBackground,
ColorParam.rectangleBorder, FontParam.RECTANGLE, FontParam.RECTANGLE_STEREOTYPE);
public static final SkinParameter ACTOR = new SkinParameter("ACTOR", ColorParam.actorBackground,
ColorParam.actorBorder, FontParam.ACTOR, FontParam.ACTOR_STEREOTYPE);
public static final SkinParameter BOUNDARY = new SkinParameter("BOUNDARY", ColorParam.boundaryBackground,
ColorParam.boundaryBorder, FontParam.BOUNDARY, FontParam.BOUNDARY_STEREOTYPE);
public static final SkinParameter CONTROL = new SkinParameter("CONTROL", ColorParam.controlBackground,
ColorParam.controlBorder, FontParam.CONTROL, FontParam.CONTROL_STEREOTYPE);
public static final SkinParameter ENTITY_DOMAIN = new SkinParameter("ENTITY_DOMAIN", ColorParam.entityBackground,
ColorParam.entityBorder, FontParam.ENTITY, FontParam.ENTITY_STEREOTYPE);
public static final SkinParameter INTERFACE = new SkinParameter("INTERFACE", ColorParam.interfaceBackground,
ColorParam.interfaceBorder, FontParam.INTERFACE, FontParam.INTERFACE_STEREOTYPE);
private final ColorParam colorParamBorder;
private final ColorParam colorParamBack;
private final FontParam fontParam;
private final FontParam fontParamStereotype;
private final String name;
private SkinParameter(String name, ColorParam colorParamBack, ColorParam colorParamBorder, FontParam fontParam,
FontParam fontParamStereotype) {
this.name = name;
this.colorParamBack = colorParamBack;
this.colorParamBorder = colorParamBorder;
this.fontParam = fontParam;
this.fontParamStereotype = fontParamStereotype;
}
public String getUpperCaseName() {
return name;
}
public ColorParam getColorParamBorder() {
return colorParamBorder;
}
public ColorParam getColorParamBack() {
return colorParamBack;
}
public FontParam getFontParam() {
return fontParam;
}
public FontParam getFontParamStereotype() {
return fontParamStereotype;
}
}

View File

@ -44,31 +44,55 @@ public class SymbolContext {
private final HtmlColor foreColor;
private final UStroke stroke;
private final boolean shadowing;
private final double deltaShadow;
private SymbolContext(HtmlColor backColor, HtmlColor foreColor, UStroke stroke, boolean shadowing) {
private SymbolContext(HtmlColor backColor, HtmlColor foreColor, UStroke stroke, boolean shadowing,
double deltaShadow) {
this.backColor = backColor;
this.foreColor = foreColor;
this.stroke = stroke;
this.shadowing = shadowing;
// if (backColor instanceof HtmlColorTransparent) {
// throw new UnsupportedOperationException();
// }
this.deltaShadow = deltaShadow;
// if (backColor instanceof HtmlColorTransparent) {
// throw new UnsupportedOperationException();
// }
}
@Override
public String toString() {
return super.toString() + " backColor=" + backColor + " foreColor=" + foreColor;
}
final public UGraphic apply(UGraphic ug) {
return ug.apply(new UChangeColor(foreColor)).apply(new UChangeBackColor(backColor)).apply(stroke);
return applyStroke(applyColors(ug));
}
public UGraphic applyColors(UGraphic ug) {
return ug.apply(new UChangeColor(foreColor)).apply(new UChangeBackColor(backColor));
}
public UGraphic applyStroke(UGraphic ug) {
return ug.apply(stroke);
}
public SymbolContext(HtmlColor backColor, HtmlColor foreColor) {
this(backColor, foreColor, new UStroke(), false);
this(backColor, foreColor, new UStroke(), false, 0);
}
public SymbolContext withShadow(boolean newShadow) {
return new SymbolContext(backColor, foreColor, stroke, newShadow);
return new SymbolContext(backColor, foreColor, stroke, newShadow, deltaShadow);
}
public SymbolContext withDeltaShadow(double deltaShadow) {
return new SymbolContext(backColor, foreColor, stroke, shadowing, deltaShadow);
}
public SymbolContext withStroke(UStroke newStroke) {
return new SymbolContext(backColor, foreColor, newStroke, shadowing);
return new SymbolContext(backColor, foreColor, newStroke, shadowing, deltaShadow);
}
public SymbolContext withBackColor(HtmlColor backColor) {
return new SymbolContext(backColor, foreColor, stroke, shadowing, deltaShadow);
}
public HtmlColor getBackColor() {
@ -84,7 +108,11 @@ public class SymbolContext {
}
public boolean isShadowing() {
return shadowing;
return shadowing || deltaShadow > 0;
}
public double getDeltaShadow() {
return deltaShadow;
}
}

View File

@ -46,61 +46,46 @@ public abstract class USymbol {
private static final Map<String, USymbol> all = new HashMap<String, USymbol>();
public final static USymbol STORAGE = record("STORAGE", new USymbolStorage());
public final static USymbol DATABASE = record("DATABASE", new USymbolDatabase());
public final static USymbol CLOUD = record("CLOUD", new USymbolCloud());
public final static USymbol CARD = record("CARD", new USymbolCard(ColorParam.rectangleBackground,
ColorParam.rectangleBorder, FontParam.RECTANGLE, FontParam.RECTANGLE_STEREOTYPE));
public final static USymbol FRAME = record("FRAME", new USymbolFrame());
public final static USymbol NODE = record("NODE", new USymbolNode());
public final static USymbol ARTIFACT = record("ARTIFACT", new USymbolArtifact());
public final static USymbol PACKAGE = record("PACKAGE", new USymbolFolder(ColorParam.packageBackground,
ColorParam.packageBorder));
public final static USymbol FOLDER = record("FOLDER", new USymbolFolder(ColorParam.folderBackground,
ColorParam.folderBorder));
public final static USymbol RECTANGLE = record("RECTANGLE", new USymbolRect(ColorParam.rectangleBackground,
ColorParam.rectangleBorder, FontParam.RECTANGLE, FontParam.RECTANGLE_STEREOTYPE));
public final static USymbol AGENT = record("AGENT", new USymbolRect(ColorParam.agentBackground,
ColorParam.agentBorder, FontParam.AGENT, FontParam.AGENT_STEREOTYPE));
public final static USymbol ACTOR = record("ACTOR", new USymbolActor());
public final static USymbol STORAGE = record("STORAGE", SkinParameter.STORAGE, new USymbolStorage());
public final static USymbol DATABASE = record("DATABASE", SkinParameter.DATABASE, new USymbolDatabase());
public final static USymbol CLOUD = record("CLOUD", SkinParameter.CLOUD, new USymbolCloud());
public final static USymbol CARD = record("CARD", SkinParameter.CARD, new USymbolCard(SkinParameter.CARD));
public final static USymbol FRAME = record("FRAME", SkinParameter.FRAME, new USymbolFrame());
public final static USymbol NODE = record("NODE", SkinParameter.NODE, new USymbolNode());
public final static USymbol ARTIFACT = record("ARTIFACT", SkinParameter.ARTIFACT, new USymbolArtifact());
public final static USymbol PACKAGE = record("PACKAGE", SkinParameter.PACKAGE, new USymbolFolder(
SkinParameter.PACKAGE));
public final static USymbol FOLDER = record("FOLDER", SkinParameter.FOLDER, new USymbolFolder(SkinParameter.FOLDER));
public final static USymbol RECTANGLE = record("RECTANGLE", SkinParameter.CARD, new USymbolRect(SkinParameter.CARD));
public final static USymbol AGENT = record("AGENT", SkinParameter.AGENT, new USymbolRect(SkinParameter.AGENT));
public final static USymbol ACTOR = record("ACTOR", SkinParameter.ACTOR, new USymbolActor());
public final static USymbol USECASE = null;
public final static USymbol COMPONENT1 = record("COMPONENT1", new USymbolComponent1());
public final static USymbol COMPONENT2 = record("COMPONENT2", new USymbolComponent2());
public final static USymbol BOUNDARY = record("BOUNDARY", new USymbolBoundary());
public final static USymbol ENTITY_DOMAIN = record("ENTITY_DOMAIN", new USymbolEntityDomain(2));
public final static USymbol CONTROL = record("CONTROL", new USymbolControl(2));
public final static USymbol INTERFACE = record("INTERFACE", new USymbolInterface());
public final static USymbol QUEUE = record("QUEUE", new USymbolQueue());
public final static USymbol COMPONENT1 = record("COMPONENT1", SkinParameter.COMPONENT1, new USymbolComponent1());
public final static USymbol COMPONENT2 = record("COMPONENT2", SkinParameter.COMPONENT2, new USymbolComponent2());
public final static USymbol BOUNDARY = record("BOUNDARY", SkinParameter.BOUNDARY, new USymbolBoundary());
public final static USymbol ENTITY_DOMAIN = record("ENTITY_DOMAIN", SkinParameter.ENTITY_DOMAIN,
new USymbolEntityDomain(2));
public final static USymbol CONTROL = record("CONTROL", SkinParameter.CONTROL, new USymbolControl(2));
public final static USymbol INTERFACE = record("INTERFACE", SkinParameter.INTERFACE, new USymbolInterface());
public final static USymbol QUEUE = record("QUEUE", SkinParameter.QUEUE, new USymbolQueue());
private final ColorParam colorParamBorder;
private final ColorParam colorParamBack;
private final FontParam fontParam;
private final FontParam fontParamStereotype;
public USymbol(ColorParam colorParamBack, ColorParam colorParamBorder, FontParam fontParam,
FontParam fontParamStereotype) {
this.colorParamBack = colorParamBack;
this.colorParamBorder = colorParamBorder;
this.fontParam = fontParam;
this.fontParamStereotype = fontParamStereotype;
}
abstract public SkinParameter getSkinParameter();
public FontParam getFontParam() {
return fontParam;
return getSkinParameter().getFontParam();
}
public FontParam getFontParamStereotype() {
return fontParamStereotype;
return getSkinParameter().getFontParamStereotype();
}
public ColorParam getColorParamBack() {
return colorParamBack;
return getSkinParameter().getColorParamBack();
}
public ColorParam getColorParamBorder() {
return colorParamBorder;
return getSkinParameter().getColorParamBorder();
}
public static USymbol getFromString(String s) {
@ -114,7 +99,7 @@ public abstract class USymbol {
return result;
}
private static USymbol record(String code, USymbol symbol) {
private static USymbol record(String code, SkinParameter skinParameter, USymbol symbol) {
all.put(StringUtils.goUpperCase(code), symbol);
return symbol;
}
@ -161,7 +146,7 @@ public abstract class USymbol {
public boolean manageHorizontalLine() {
return false;
}
public int suppHeightBecauseOfShape() {
return 0;
}

View File

@ -33,20 +33,21 @@
*/
package net.sourceforge.plantuml.graphic;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.skin.StickMan;
import net.sourceforge.plantuml.ugraphic.UStroke;
class USymbolActor extends USymbolSimpleAbstract {
public USymbolActor() {
super(ColorParam.actorBackground, ColorParam.actorBorder, FontParam.ACTOR, FontParam.ACTOR_STEREOTYPE);
@Override
public SkinParameter getSkinParameter() {
return SkinParameter.ACTOR;
}
@Override
protected TextBlock getDrawing(SymbolContext symbolContext) {
return new StickMan(symbolContext.getBackColor(), symbolContext.getForeColor(),
symbolContext.isShadowing() ? 4.0 : 0.0);
final double deltaShadow = symbolContext.isShadowing() ? 4.0 : 0.0;
return new StickMan(symbolContext.withDeltaShadow(deltaShadow).withStroke(new UStroke(2)));
}
}

View File

@ -35,9 +35,7 @@ package net.sourceforge.plantuml.graphic;
import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.ULine;
import net.sourceforge.plantuml.ugraphic.UPolygon;
@ -46,11 +44,12 @@ import net.sourceforge.plantuml.ugraphic.UTranslate;
class USymbolArtifact extends USymbol {
public USymbolArtifact() {
super(ColorParam.artifactBackground, ColorParam.artifactBorder, FontParam.ARTIFACT,
FontParam.ARTIFACT_STEREOTYPE);
@Override
public SkinParameter getSkinParameter() {
return SkinParameter.ARTIFACT;
}
private void drawArtifact(UGraphic ug, double widthTotal, double heightTotal, boolean shadowing) {
final URectangle form = new URectangle(widthTotal, heightTotal);

View File

@ -33,20 +33,20 @@
*/
package net.sourceforge.plantuml.graphic;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.svek.Boundary;
import net.sourceforge.plantuml.ugraphic.UStroke;
class USymbolBoundary extends USymbolSimpleAbstract {
public USymbolBoundary() {
super(ColorParam.boundaryBackground, ColorParam.boundaryBorder, FontParam.BOUNDARY, FontParam.BOUNDARY_STEREOTYPE);
@Override
public SkinParameter getSkinParameter() {
return SkinParameter.BOUNDARY;
}
@Override
protected TextBlock getDrawing(final SymbolContext symbolContext) {
return new Boundary(symbolContext.getBackColor(), symbolContext.getForeColor(),
symbolContext.isShadowing() ? 4.0 : 0.0, 2);
return new Boundary(symbolContext.withDeltaShadow(symbolContext.isShadowing() ? 4.0 : 0.0).withStroke(
new UStroke(2)));
}
}

View File

@ -35,20 +35,25 @@ package net.sourceforge.plantuml.graphic;
import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.ULine;
import net.sourceforge.plantuml.ugraphic.URectangle;
import net.sourceforge.plantuml.ugraphic.UTranslate;
class USymbolCard extends USymbol {
private final SkinParameter skinParameter;
public USymbolCard(ColorParam colorParamBack, ColorParam colorParamBorder, FontParam fontParam,
FontParam fontParamStereotype) {
super(colorParamBack, colorParamBorder, fontParam, fontParamStereotype);
public USymbolCard(SkinParameter skinParameter) {
this.skinParameter = skinParameter;
}
@Override
public SkinParameter getSkinParameter() {
return skinParameter;
}
private void drawRect(UGraphic ug, double width, double height, boolean shadowing, double top) {
final URectangle shape = new URectangle(width, height);

View File

@ -35,19 +35,19 @@ package net.sourceforge.plantuml.graphic;
import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UPath;
import net.sourceforge.plantuml.ugraphic.UTranslate;
class USymbolCloud extends USymbol {
public USymbolCloud() {
super(ColorParam.cloudBackground, ColorParam.cloudBorder, FontParam.CLOUD, FontParam.CLOUD_STEREOTYPE);
@Override
public SkinParameter getSkinParameter() {
return SkinParameter.CLOUD;
}
private void drawCloud(UGraphic ug, double width, double height, boolean shadowing) {
final UPath shape = getSpecificFrontierForCloud(width, height);
if (shadowing) {

View File

@ -35,18 +35,17 @@ package net.sourceforge.plantuml.graphic;
import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.URectangle;
import net.sourceforge.plantuml.ugraphic.UShape;
import net.sourceforge.plantuml.ugraphic.UTranslate;
class USymbolComponent1 extends USymbol {
public USymbolComponent1() {
super(ColorParam.componentBackground, ColorParam.componentBorder, FontParam.COMPONENT, FontParam.COMPONENT_STEREOTYPE);
@Override
public SkinParameter getSkinParameter() {
return SkinParameter.COMPONENT1;
}

View File

@ -44,9 +44,10 @@ import net.sourceforge.plantuml.ugraphic.UShape;
import net.sourceforge.plantuml.ugraphic.UTranslate;
class USymbolComponent2 extends USymbol {
public USymbolComponent2() {
super(ColorParam.componentBackground, ColorParam.componentBorder, FontParam.COMPONENT, FontParam.COMPONENT_STEREOTYPE);
@Override
public SkinParameter getSkinParameter() {
return SkinParameter.COMPONENT2;
}

View File

@ -33,23 +33,27 @@
*/
package net.sourceforge.plantuml.graphic;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.svek.Control;
import net.sourceforge.plantuml.ugraphic.UStroke;
class USymbolControl extends USymbolSimpleAbstract {
private final double thickness;
public USymbolControl(double thickness) {
super(ColorParam.controlBackground, ColorParam.controlBorder, FontParam.CONTROL, FontParam.CONTROL_STEREOTYPE);
this.thickness = thickness;
}
@Override
public SkinParameter getSkinParameter() {
return SkinParameter.CONTROL;
}
@Override
protected TextBlock getDrawing(final SymbolContext symbolContext) {
return new Control(symbolContext.getBackColor(), symbolContext.getForeColor(),
symbolContext.isShadowing() ? 4.0 : 0.0, thickness);
return new Control(symbolContext.withDeltaShadow(symbolContext.isShadowing() ? 4.0 : 0.0).withStroke(
new UStroke(thickness)));
}
}

View File

@ -35,9 +35,7 @@ package net.sourceforge.plantuml.graphic;
import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.ugraphic.AbstractUGraphicHorizontalLine;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UGraphic;
@ -47,11 +45,13 @@ import net.sourceforge.plantuml.ugraphic.UTranslate;
class USymbolDatabase extends USymbol {
public USymbolDatabase() {
super(ColorParam.databaseBackground, ColorParam.databaseBorder, FontParam.DATABASE,
FontParam.DATABASE_STEREOTYPE);
@Override
public SkinParameter getSkinParameter() {
return SkinParameter.DATABASE;
}
private void drawDatabase(UGraphic ug, double width, double height, boolean shadowing) {
final UPath shape = new UPath();
if (shadowing) {

View File

@ -33,23 +33,26 @@
*/
package net.sourceforge.plantuml.graphic;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.svek.EntityDomain;
import net.sourceforge.plantuml.ugraphic.UStroke;
class USymbolEntityDomain extends USymbolSimpleAbstract {
private final double thickness;
public USymbolEntityDomain(double thickness) {
super(ColorParam.entityBackground, ColorParam.entityBorder, FontParam.ENTITY, FontParam.ENTITY_STEREOTYPE);
this.thickness = thickness;
}
@Override
public SkinParameter getSkinParameter() {
return SkinParameter.ENTITY_DOMAIN;
}
@Override
protected TextBlock getDrawing(final SymbolContext symbolContext) {
return new EntityDomain(symbolContext.getBackColor(), symbolContext.getForeColor(),
symbolContext.isShadowing() ? 4.0 : 0.0, thickness);
return new EntityDomain(symbolContext.withDeltaShadow(symbolContext.isShadowing() ? 4.0 : 0.0).withStroke(
new UStroke(thickness)));
}
}

View File

@ -35,9 +35,7 @@ package net.sourceforge.plantuml.graphic;
import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.ULine;
import net.sourceforge.plantuml.ugraphic.UPolygon;
@ -52,8 +50,15 @@ public class USymbolFolder extends USymbol {
private final static int marginTitleY1 = 3;
private final static int marginTitleY2 = 3;
public USymbolFolder(ColorParam colorParamBack, ColorParam colorParamBorder) {
super(colorParamBack, colorParamBorder, FontParam.FOLDER, FontParam.FOLDER_STEREOTYPE);
private final SkinParameter skinParameter;
public USymbolFolder(SkinParameter skinParameter) {
this.skinParameter = skinParameter;
}
@Override
public SkinParameter getSkinParameter() {
return skinParameter;
}
private void drawFolder(UGraphic ug, double width, double height, Dimension2D dimTitle, boolean shadowing) {

View File

@ -35,9 +35,7 @@ package net.sourceforge.plantuml.graphic;
import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UPath;
import net.sourceforge.plantuml.ugraphic.URectangle;
@ -45,10 +43,12 @@ import net.sourceforge.plantuml.ugraphic.UTranslate;
class USymbolFrame extends USymbol {
public USymbolFrame() {
super(ColorParam.frameBackground, ColorParam.frameBorder, FontParam.FRAME, FontParam.FRAME_STEREOTYPE);
@Override
public SkinParameter getSkinParameter() {
return SkinParameter.FRAME;
}
private void drawFrame(UGraphic ug, double width, double height, Dimension2D dimTitle, boolean shadowing) {
final URectangle shape = new URectangle(width, height);
if (shadowing) {

View File

@ -33,17 +33,15 @@
*/
package net.sourceforge.plantuml.graphic;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.svek.CircleInterface2;
public class USymbolInterface extends USymbolSimpleAbstract {
public USymbolInterface() {
super(ColorParam.interfaceBackground, ColorParam.interfaceBorder, FontParam.INTERFACE,
FontParam.INTERFACE_STEREOTYPE);
@Override
public SkinParameter getSkinParameter() {
return SkinParameter.INTERFACE;
}
@Override
protected TextBlock getDrawing(SymbolContext symbolContext) {
return new CircleInterface2(symbolContext.getBackColor(), symbolContext.getForeColor(),

View File

@ -35,9 +35,7 @@ package net.sourceforge.plantuml.graphic;
import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.ULine;
import net.sourceforge.plantuml.ugraphic.UPolygon;
@ -45,10 +43,12 @@ import net.sourceforge.plantuml.ugraphic.UTranslate;
class USymbolNode extends USymbol {
public USymbolNode() {
super(ColorParam.nodeBackground, ColorParam.nodeBorder, FontParam.NODE, FontParam.NODE_STEREOTYPE);
@Override
public SkinParameter getSkinParameter() {
return SkinParameter.NODE;
}
private void drawNode(UGraphic ug, double width, double height, boolean shadowing) {
final UPolygon shape = new UPolygon();
shape.addPoint(0, 10);
@ -102,7 +102,7 @@ class USymbolNode extends USymbol {
ug = symbolContext.apply(ug);
drawNode(ug, dim.getWidth(), dim.getHeight(), symbolContext.isShadowing());
ug = ug.apply(new UTranslate(-4, 11));
final Dimension2D dimStereo = stereotype.calculateDimension(ug.getStringBounder());
final double posStereo = (width - dimStereo.getWidth()) / 2;
stereotype.drawU(ug.apply(new UTranslate(posStereo, 2)));
@ -117,7 +117,7 @@ class USymbolNode extends USymbol {
}
};
}
@Override
public int suppHeightBecauseOfShape() {
return 5;
@ -128,5 +128,4 @@ class USymbolNode extends USymbol {
return 60;
}
}

View File

@ -35,9 +35,7 @@ package net.sourceforge.plantuml.graphic;
import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.ugraphic.AbstractUGraphicHorizontalLine;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UGraphic;
@ -47,10 +45,12 @@ import net.sourceforge.plantuml.ugraphic.UTranslate;
class USymbolQueue extends USymbol {
public USymbolQueue() {
super(ColorParam.queueBackground, ColorParam.queueBorder, FontParam.QUEUE, FontParam.QUEUE_STEREOTYPE);
@Override
public SkinParameter getSkinParameter() {
return SkinParameter.QUEUE;
}
private final double dx = 5;
private void drawDatabase(UGraphic ug, double width, double height, boolean shadowing) {

View File

@ -35,19 +35,25 @@ package net.sourceforge.plantuml.graphic;
import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.URectangle;
import net.sourceforge.plantuml.ugraphic.UTranslate;
class USymbolRect extends USymbol {
private final SkinParameter skinParameter;
public USymbolRect(ColorParam colorParamBack, ColorParam colorParamBorder, FontParam fontParam,
FontParam fontParamStereotype) {
super(colorParamBack, colorParamBorder, fontParam, fontParamStereotype);
public USymbolRect(SkinParameter skinParameter) {
this.skinParameter = skinParameter;
}
@Override
public SkinParameter getSkinParameter() {
return skinParameter;
}
private void drawRect(UGraphic ug, double width, double height, boolean shadowing) {
final URectangle shape = new URectangle(width, height);

View File

@ -35,23 +35,12 @@ package net.sourceforge.plantuml.graphic;
import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UTranslate;
abstract class USymbolSimpleAbstract extends USymbol {
// public USymbolSimpleAbstract(ColorParam colorParamBack, ColorParam colorParamBorder) {
// super(colorParamBack, colorParamBorder);
// }
public USymbolSimpleAbstract(ColorParam colorParamBack, ColorParam colorParamBorder, FontParam fontParam,
FontParam fontParamStereotype) {
super(colorParamBack, colorParamBorder, fontParam, fontParamStereotype);
}
public TextBlock asSmall(final TextBlock label, final TextBlock stereotype, final SymbolContext symbolContext) {
if (stereotype == null) {
throw new IllegalArgumentException();

View File

@ -35,17 +35,16 @@ package net.sourceforge.plantuml.graphic;
import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.URectangle;
import net.sourceforge.plantuml.ugraphic.UTranslate;
class USymbolStorage extends USymbol {
public USymbolStorage() {
super(ColorParam.storageBackground, ColorParam.storageBorder, FontParam.STORAGE, FontParam.STORAGE_STEREOTYPE);
@Override
public SkinParameter getSkinParameter() {
return SkinParameter.STORAGE;
}
private void drawStorage(UGraphic ug, double width, double height, boolean shadowing) {

View File

@ -28,7 +28,7 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 14708 $
* Revision $Revision: 15991 $
*
*/
package net.sourceforge.plantuml.png;
@ -85,7 +85,7 @@ public class PngTitler {
new SpriteContainerEmpty());
}
public double getOffsetX(double imWidth, StringBounder stringBounder) {
private double getOffsetX(double imWidth, StringBounder stringBounder) {
final TextBlock textBloc = getTextBlock();
if (textBloc == null) {
return 0;
@ -98,7 +98,7 @@ public class PngTitler {
return (dimText.getWidth() - imWidth) / 2;
}
public double getOffsetY(StringBounder stringBounder) {
private double getOffsetY(StringBounder stringBounder) {
final TextBlock textBloc = getTextBlock();
if (textBloc == null) {
return 0;

View File

@ -44,8 +44,8 @@ import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.HtmlColorSetSimple;
import net.sourceforge.plantuml.graphic.HtmlColorUtils;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.SymbolContext;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.skin.BiColor;
import net.sourceforge.plantuml.skin.Component;
import net.sourceforge.plantuml.skin.SimpleContext2D;
import net.sourceforge.plantuml.skin.rose.ComponentRoseNote;
@ -111,8 +111,9 @@ public class PostIt {
final SkinParam param = SkinParam.noShadowing();
final UFont fontNote = param.getFont(FontParam.NOTE, null, false);
final ComponentRoseNote note = new ComponentRoseNote(new BiColor(noteBackgroundColor, borderColor), fontNote.toFont2(HtmlColorUtils.BLACK, true, HtmlColorUtils.BLUE),
text, 0, 0, new SpriteContainerEmpty(), 0, new UStroke());
final ComponentRoseNote note = new ComponentRoseNote(
new SymbolContext(noteBackgroundColor, borderColor).withStroke(new UStroke()), fontNote.toFont2(
HtmlColorUtils.BLACK, true, HtmlColorUtils.BLUE), text, 0, 0, new SpriteContainerEmpty());
return note;
}
}

View File

@ -29,7 +29,7 @@
* Original Author: Arnaud Roques
* Modified by: Nicolas Jouanin
*
* Revision $Revision: 15613 $
* Revision $Revision: 15993 $
*
*/
package net.sourceforge.plantuml.preproc;
@ -51,6 +51,7 @@ import net.sourceforge.plantuml.Log;
import net.sourceforge.plantuml.OptionFlags;
import net.sourceforge.plantuml.StringUtils;
import net.sourceforge.plantuml.command.regex.MyPattern;
import net.sourceforge.plantuml.utils.StartUtils;
class PreprocessorInclude implements ReadLine {
@ -88,6 +89,15 @@ class PreprocessorInclude implements ReadLine {
}
public String readLine() throws IOException {
final String result = readLineInternal();
if (result != null && (StartUtils.isArobaseEndDiagram(result) || StartUtils.isArobaseStartDiagram(result))) {
// http://plantuml.sourceforge.net/qa/?qa=3389/error-generating-when-same-file-included-different-diagram
filesUsed.clear();
}
return result;
}
private String readLineInternal() throws IOException {
if (included != null) {
final String s = included.readLine();
if (s != null) {
@ -113,9 +123,7 @@ class PreprocessorInclude implements ReadLine {
if (mUrl.find()) {
return manageUrlInclude(mUrl);
}
return s;
}
private String manageUrlInclude(Matcher m) throws IOException {

View File

@ -37,6 +37,8 @@ import java.util.EnumSet;
import java.util.HashSet;
import java.util.Set;
import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.SkinParamBackcolored;
import net.sourceforge.plantuml.Url;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.HtmlColor;
@ -68,12 +70,11 @@ public abstract class AbstractMessage implements EventWithDeactivate {
public void goParallel() {
this.parallel = true;
}
public boolean isParallel() {
return parallel;
}
final public Url getUrl() {
if (url == null) {
return urlNote;
@ -163,10 +164,14 @@ public abstract class AbstractMessage implements EventWithDeactivate {
return notePosition;
}
public final HtmlColor getSpecificBackColor() {
private final HtmlColor getSpecificBackColor() {
return noteBackColor;
}
public SkinParamBackcolored getSkinParamNoteBackcolored(ISkinParam skinParam) {
return new SkinParamBackcolored(skinParam, getSpecificBackColor());
}
public final NotePosition getNotePosition() {
return notePosition;
}

View File

@ -28,11 +28,13 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15048 $
* Revision $Revision: 16005 $
*
*/
package net.sourceforge.plantuml.sequencediagram;
import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.SkinParamBackcolored;
import net.sourceforge.plantuml.SpecificBackcolorable;
import net.sourceforge.plantuml.Url;
import net.sourceforge.plantuml.UrlBuilder;
@ -124,4 +126,8 @@ public class Note extends AbstractEvent implements Event, SpecificBackcolorable
this.style = style;
}
public SkinParamBackcolored getSkinParamBackcolored(ISkinParam skinParam) {
return new SkinParamBackcolored(skinParam, getSpecificBackColor());
}
}

View File

@ -28,12 +28,14 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 12299 $
* Revision $Revision: 15995 $
*
*/
package net.sourceforge.plantuml.sequencediagram;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.SkinParamBackcolored;
import net.sourceforge.plantuml.SpecificBackcolorable;
import net.sourceforge.plantuml.Url;
import net.sourceforge.plantuml.cucadiagram.Display;
@ -146,4 +148,14 @@ public class Participant implements SpecificBackcolorable {
return type.getBackgroundColorParam();
}
public SkinParamBackcolored getSkinParamBackcolored(ISkinParam skinParam) {
HtmlColor specificBackColor = getSpecificBackColor();
final boolean clickable = getUrl() != null;
final HtmlColor stereoBackColor = skinParam.getHtmlColor(getBackgroundColorParam(), getStereotype(), clickable);
if (stereoBackColor != null && specificBackColor == null) {
specificBackColor = stereoBackColor;
}
return new SkinParamBackcolored(skinParam, specificBackColor, clickable);
}
}

View File

@ -28,7 +28,7 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 14860 $
* Revision $Revision: 16005 $
*
*/
package net.sourceforge.plantuml.sequencediagram.graphic;
@ -42,7 +42,6 @@ import net.sourceforge.plantuml.OptionFlags;
import net.sourceforge.plantuml.SkinParamBackcolored;
import net.sourceforge.plantuml.SkinParamBackcoloredReference;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.sequencediagram.AbstractMessage;
import net.sourceforge.plantuml.sequencediagram.Delay;
@ -431,7 +430,7 @@ class DrawableSetInitializer {
p2 = tmp;
}
}
final ISkinParam skinParam = new SkinParamBackcolored(drawableSet.getSkinParam(), n.getSpecificBackColor());
final ISkinParam skinParam = n.getSkinParamBackcolored(drawableSet.getSkinParam());
final ComponentType type = getNoteComponentType(n.getStyle());
final NoteBox noteBox = new NoteBox(freeY2.getFreeY(range), drawableSet.getSkin().createComponent(type, null,
skinParam, n.getStrings()), p1, p2, n.getPosition(), n.getUrl());
@ -581,15 +580,8 @@ class DrawableSetInitializer {
} else {
throw new IllegalArgumentException();
}
HtmlColor specificBackColor = p.getSpecificBackColor();
final boolean clickable = p.getUrl() != null;
final HtmlColor stereoBackColor = drawableSet.getSkinParam().getHtmlColor(p.getBackgroundColorParam(),
p.getStereotype(), clickable);
if (stereoBackColor != null && specificBackColor == null) {
specificBackColor = stereoBackColor;
}
final ISkinParam skinParam = new SkinParamBackcolored(drawableSet.getSkinParam(), specificBackColor, clickable);
final ISkinParam skinParam = p.getSkinParamBackcolored(drawableSet.getSkinParam());
final Display participantDisplay = p.getDisplay(skinParam.forceSequenceParticipantUnderlined());
final Component head = drawableSet.getSkin().createComponent(headType, null, skinParam, participantDisplay);
final Component tail = drawableSet.getSkin().createComponent(tailType, null, skinParam, participantDisplay);

View File

@ -173,7 +173,8 @@ public class SequenceDiagramFileMakerPuma2 implements FileMaker {
// System.err.println("scale=" + scale);
final ImageBuilder imageBuilder = new ImageBuilder(diagram.getSkinParam().getColorMapper(), oneOf(scale,
dpiFactor), diagram.getSkinParam().getBackgroundColor(), null, null, 3, 10, diagram.getAnimation(), diagram.getSkinParam().handwritten());
dpiFactor), diagram.getSkinParam().getBackgroundColor(), null, null, 3, 10, diagram.getAnimation(),
diagram.getSkinParam().handwritten());
imageBuilder.addUDrawable(new UDrawable() {
public void drawU(UGraphic ug) {

View File

@ -28,7 +28,7 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15524 $
* Revision $Revision: 16005 $
*
*/
package net.sourceforge.plantuml.sequencediagram.graphic;
@ -72,8 +72,7 @@ class Step1Message extends Step1Abstract {
}
if (message.getNote() != null) {
final ISkinParam skinParam = new SkinParamBackcolored(drawingSet.getSkinParam(),
message.getSpecificBackColor());
final ISkinParam skinParam = message.getSkinParamNoteBackcolored(drawingSet.getSkinParam());
setNote(drawingSet.getSkin().createComponent(ComponentType.NOTE, null, skinParam, message.getNote()));
}

View File

@ -60,8 +60,7 @@ class Step1MessageExo extends Step1Abstract {
message.isShortArrow(), message.getArrowConfiguration());
if (message.getNote() != null) {
final ISkinParam skinParam = new SkinParamBackcolored(drawingSet.getSkinParam(),
message.getSpecificBackColor());
final ISkinParam skinParam = message.getSkinParamNoteBackcolored(drawingSet.getSkinParam());
setNote(drawingSet.getSkin().createComponent(ComponentType.NOTE, null, skinParam, message.getNote()));
// throw new UnsupportedOperationException();
}

View File

@ -41,16 +41,16 @@ import net.sourceforge.plantuml.real.Real;
import net.sourceforge.plantuml.sequencediagram.Event;
import net.sourceforge.plantuml.sequencediagram.MessageExo;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.skin.ArrowComponent;
import net.sourceforge.plantuml.skin.ArrowConfiguration;
import net.sourceforge.plantuml.skin.Component;
import net.sourceforge.plantuml.skin.ComponentType;
import net.sourceforge.plantuml.skin.Context2D;
import net.sourceforge.plantuml.skin.SimpleContext2D;
import net.sourceforge.plantuml.skin.Skin;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UTranslate;
public class CommunicationExoTile implements Tile {
public class CommunicationExoTile implements TileWithUpdateStairs {
private final LivingSpace livingSpace;
private final MessageExo message;
@ -58,12 +58,11 @@ public class CommunicationExoTile implements Tile {
private final ISkinParam skinParam;
private final Real alpha;
private final Real omega;
public Event getEvent() {
return message;
}
public CommunicationExoTile(LivingSpace livingSpace, MessageExo message, Skin skin, ISkinParam skinParam,
Real alpha, Real omega) {
this.livingSpace = livingSpace;
@ -115,6 +114,15 @@ public class CommunicationExoTile implements Tile {
}
}
public void updateStairs(StringBounder stringBounder, double y) {
final ArrowComponent comp = (ArrowComponent) getComponent(stringBounder);
final Dimension2D dim = comp.getPreferredDimension(stringBounder);
final double arrowY = comp.getStartPoint(stringBounder, dim).getY();
livingSpace.addStepForLivebox(getEvent(), y + arrowY);
}
private Real getPoint1(final StringBounder stringBounder) {
if (message.getType().isRightBorder()) {
return livingSpace.getPosC(stringBounder);

View File

@ -39,14 +39,12 @@ import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.real.Real;
import net.sourceforge.plantuml.sequencediagram.AbstractMessage;
import net.sourceforge.plantuml.sequencediagram.Event;
import net.sourceforge.plantuml.sequencediagram.Message;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.skin.ArrowComponent;
import net.sourceforge.plantuml.skin.Component;
import net.sourceforge.plantuml.skin.ComponentType;
import net.sourceforge.plantuml.skin.Context2D;
import net.sourceforge.plantuml.skin.SimpleContext2D;
import net.sourceforge.plantuml.skin.Skin;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UTranslate;
@ -54,7 +52,7 @@ import net.sourceforge.plantuml.ugraphic.UTranslate;
public class CommunicationTileNoteLeft implements TileWithUpdateStairs {
private final TileWithUpdateStairs tile;
private final Message message;
private final AbstractMessage message;
private final Skin skin;
private final ISkinParam skinParam;
private final Display notes;
@ -66,7 +64,7 @@ public class CommunicationTileNoteLeft implements TileWithUpdateStairs {
}
public CommunicationTileNoteLeft(TileWithUpdateStairs tile, Message message, Skin skin, ISkinParam skinParam,
public CommunicationTileNoteLeft(TileWithUpdateStairs tile, AbstractMessage message, Skin skin, ISkinParam skinParam,
LivingSpace livingSpace) {
this.tile = tile;
this.message = message;
@ -83,7 +81,7 @@ public class CommunicationTileNoteLeft implements TileWithUpdateStairs {
private Component getComponent(StringBounder stringBounder) {
final Component comp = skin.createComponent(ComponentType.NOTE, null, skinParam, notes);
final Component comp = skin.createComponent(ComponentType.NOTE, null, message.getSkinParamNoteBackcolored(skinParam), notes);
return comp;
}

View File

@ -39,13 +39,12 @@ import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.real.Real;
import net.sourceforge.plantuml.sequencediagram.AbstractMessage;
import net.sourceforge.plantuml.sequencediagram.Event;
import net.sourceforge.plantuml.sequencediagram.Message;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.skin.Component;
import net.sourceforge.plantuml.skin.ComponentType;
import net.sourceforge.plantuml.skin.Context2D;
import net.sourceforge.plantuml.skin.SimpleContext2D;
import net.sourceforge.plantuml.skin.Skin;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UTranslate;
@ -53,20 +52,19 @@ import net.sourceforge.plantuml.ugraphic.UTranslate;
public class CommunicationTileNoteRight implements TileWithUpdateStairs {
private final TileWithUpdateStairs tile;
private final Message message;
private final AbstractMessage message;
private final Skin skin;
private final ISkinParam skinParam;
private final Display notes;
// private final NotePosition notePosition;
private final LivingSpace livingSpace;
public Event getEvent() {
return message;
}
public CommunicationTileNoteRight(TileWithUpdateStairs tile, Message message, Skin skin, ISkinParam skinParam,
LivingSpace livingSpace) {
public CommunicationTileNoteRight(TileWithUpdateStairs tile, AbstractMessage message, Skin skin,
ISkinParam skinParam, LivingSpace livingSpace) {
this.tile = tile;
this.message = message;
this.skin = skin;
@ -75,14 +73,14 @@ public class CommunicationTileNoteRight implements TileWithUpdateStairs {
// this.notePosition = message.getNotePosition();
this.livingSpace = livingSpace;
}
public void updateStairs(StringBounder stringBounder, double y) {
tile.updateStairs(stringBounder, y);
}
private Component getComponent(StringBounder stringBounder) {
final Component comp = skin.createComponent(ComponentType.NOTE, null, skinParam, notes);
final Component comp = skin.createComponent(ComponentType.NOTE, null,
message.getSkinParamNoteBackcolored(skinParam), notes);
return comp;
}

View File

@ -81,7 +81,7 @@ public class CommunicationTileSelfNoteRight implements TileWithUpdateStairs {
private Component getComponent(StringBounder stringBounder) {
final Component comp = skin.createComponent(ComponentType.NOTE, null, skinParam, notes);
final Component comp = skin.createComponent(ComponentType.NOTE, null, message.getSkinParamNoteBackcolored(skinParam), notes);
return comp;
}

View File

@ -38,6 +38,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.sequencediagram.Event;
import net.sourceforge.plantuml.sequencediagram.LifeEvent;
import net.sourceforge.plantuml.sequencediagram.Message;
@ -127,6 +128,27 @@ public class EventsHistory {
return false;
}
private HtmlColor getActivateColor(Event event) {
for (Iterator<Event> it = events.iterator(); it.hasNext();) {
final Event current = it.next();
if (event != current) {
continue;
}
if (current instanceof Message) {
final Event next = nextButSkippingNotes(it);
if (next instanceof LifeEvent) {
final LifeEvent le = (LifeEvent) next;
if (le.isActivate()) {
return le.getSpecificBackColor();
}
return null;
}
}
return null;
}
return null;
}
private Event nextButSkippingNotes(Iterator<Event> it) {
while (true) {
if (it.hasNext() == false) {
@ -151,11 +173,11 @@ public class EventsHistory {
if (position != null) {
assert position <= totalHeight : "position=" + position + " totalHeight=" + totalHeight;
value = getLevelAt(event, EventsHistoryMode.CONSIDERE_FUTURE_DEACTIVATE);
result.addStep(new StairsPosition(position, isNextEventADestroy(event)), value);
result.addStep(new StairsPosition(position, isNextEventADestroy(event)), value, getActivateColor(event));
}
}
System.err.println("EventsHistory::getStairs finishing totalHeight=" + totalHeight);
result.addStep(new StairsPosition(totalHeight, false), value);
result.addStep(new StairsPosition(totalHeight, false), value, null);
// System.err.println("EventsHistory::getStairs " + p + " result=" + result);
return result;
}

View File

@ -44,7 +44,6 @@ import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.real.Real;
import net.sourceforge.plantuml.real.RealMax;
import net.sourceforge.plantuml.real.RealMin;
import net.sourceforge.plantuml.real.RealUtils;
import net.sourceforge.plantuml.sequencediagram.Event;
import net.sourceforge.plantuml.sequencediagram.Grouping;
import net.sourceforge.plantuml.sequencediagram.GroupingLeaf;
@ -54,7 +53,6 @@ import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.skin.Component;
import net.sourceforge.plantuml.skin.ComponentType;
import net.sourceforge.plantuml.skin.Context2D;
import net.sourceforge.plantuml.skin.SimpleContext2D;
import net.sourceforge.plantuml.skin.Skin;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UTranslate;
@ -80,13 +78,14 @@ public class GroupingTile implements Tile {
return start;
}
public GroupingTile(Iterator<Event> it, GroupingStart start, TileArguments tileArguments) {
final StringBounder stringBounder = tileArguments.getStringBounder();
public GroupingTile(Iterator<Event> it, GroupingStart start, TileArguments tileArgumentsBachColorChanged,
TileArguments tileArgumentsOriginal) {
final StringBounder stringBounder = tileArgumentsOriginal.getStringBounder();
this.start = start;
this.display = start.getTitle().equals("group") ? Display.create(start.getComment()) : Display.create(
start.getTitle(), start.getComment());
this.skin = tileArguments.getSkin();
this.skinParam = tileArguments.getSkinParam();
this.skin = tileArgumentsOriginal.getSkin();
this.skinParam = tileArgumentsBachColorChanged.getSkinParam();
// this.max = min.addAtLeast(dim1.getWidth());
while (it.hasNext()) {
@ -95,12 +94,12 @@ public class GroupingTile implements Tile {
if (ev instanceof GroupingLeaf && ((Grouping) ev).getType() == GroupingType.END) {
break;
}
final Tile tile = TileBuilder.buildOne(it, tileArguments, ev, this);
final Tile tile = TileBuilder.buildOne(it, tileArgumentsOriginal, ev, this);
if (tile != null) {
tiles.add(tile);
min.put(tile.getMinX(stringBounder).addFixed(-MARGINX));
final Real m = tile.getMaxX(stringBounder);
max.put(m == tileArguments.getOmega() ? m : m.addFixed(MARGINX));
max.put(m == tileArgumentsOriginal.getOmega() ? m : m.addFixed(MARGINX));
bodyHeight += tile.getPreferredHeight(stringBounder);
}
}
@ -108,8 +107,8 @@ public class GroupingTile implements Tile {
final double width = dim1.getWidth();
System.err.println("width=" + width);
if (min.size() == 0) {
min.put(tileArguments.getOrigin());
max.put(tileArguments.getOmega());
min.put(tileArgumentsOriginal.getOrigin());
max.put(tileArgumentsOriginal.getOmega());
}
// max.ensureBiggerThan(min.addFixed(width));
this.max.ensureBiggerThan(getMinX(stringBounder).addFixed(width + 16));

View File

@ -28,29 +28,34 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 8151 $
* Revision $Revision: 6054 $
*
*/
package net.sourceforge.plantuml.skin;
package net.sourceforge.plantuml.sequencediagram.teoz;
import net.sourceforge.plantuml.graphic.HtmlColor;
public class BiColor {
public class IntegerColored {
private final HtmlColor yellowBack;
private final HtmlColor redBorder;
private final int value;
private final HtmlColor color;
public BiColor(HtmlColor yellowBack, HtmlColor redBorder) {
this.yellowBack = yellowBack;
this.redBorder = redBorder;
public IntegerColored(int value, HtmlColor color) {
this.value = value;
this.color = color;
}
public HtmlColor getYellowBack() {
return yellowBack;
@Override
public String toString() {
return "" + value + " " + color;
}
public HtmlColor getRedBorder() {
return redBorder;
public int getValue() {
return value;
}
public HtmlColor getColor() {
return color;
}
}

View File

@ -37,6 +37,8 @@ import java.awt.geom.Dimension2D;
import java.util.Iterator;
import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.SkinParamBackcolored;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.UDrawable;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.skin.Component;
@ -71,22 +73,31 @@ public class LiveBoxes implements UDrawable {
}
private void drawOneLevel(UGraphic ug, int levelToDraw, Stairs2 stairs, Context2D context) {
final Component comp = skin.createComponent(ComponentType.ALIVE_BOX_CLOSE_CLOSE, null, skinParam, null);
final Component comp1 = skin.createComponent(ComponentType.ALIVE_BOX_CLOSE_CLOSE, null, skinParam, null);
final Component cross = skin.createComponent(ComponentType.DESTROY, null, skinParam, null);
final Dimension2D dimCross = cross.getPreferredDimension(ug.getStringBounder());
final double width = comp.getPreferredWidth(ug.getStringBounder());
final double width = comp1.getPreferredWidth(ug.getStringBounder());
ug = ug.apply(new UTranslate((levelToDraw - 1) * width / 2.0, 0));
double y1 = Double.MAX_VALUE;
HtmlColor color = null;
for (Iterator<StairsPosition> it = stairs.getYs().iterator(); it.hasNext();) {
final StairsPosition yposition = it.next();
System.err.println("LiveBoxes::drawOneLevel " + levelToDraw + " " + yposition);
final int level = stairs.getValue(yposition.getValue());
final IntegerColored integerColored = stairs.getValue(yposition.getValue());
System.err.println("integerColored=" + integerColored);
final int level = integerColored.getValue();
if (y1 == Double.MAX_VALUE && level == levelToDraw) {
y1 = yposition.getValue();
color = integerColored.getColor();
} else if (y1 != Double.MAX_VALUE && (it.hasNext() == false || level < levelToDraw)) {
final double y2 = yposition.getValue();
final Area area = new Area(width, y2 - y1);
final ISkinParam skinParam2 = new SkinParamBackcolored(skinParam, color);
final Component comp = skin
.createComponent(ComponentType.ALIVE_BOX_CLOSE_CLOSE, null, skinParam2, null);
comp.drawU(ug.apply(new UTranslate(-width / 2, y1)), area, context);
System.err.println("LiveBoxes::drawOneLevel one block " + y1 + " " + y2);
if (yposition.isDestroy()) {
@ -101,4 +112,8 @@ public class LiveBoxes implements UDrawable {
}
}
private UGraphic withColor(UGraphic ug) {
return ug;
}
}

View File

@ -49,6 +49,7 @@ import net.sourceforge.plantuml.skin.Component;
import net.sourceforge.plantuml.skin.ComponentType;
import net.sourceforge.plantuml.skin.Context2D;
import net.sourceforge.plantuml.skin.Skin;
import net.sourceforge.plantuml.skin.rose.Rose;
import net.sourceforge.plantuml.ugraphic.UGraphic;
public class LivingSpace {
@ -60,6 +61,7 @@ public class LivingSpace {
private final ComponentType tailType;
private final boolean useContinueLineBecauseOfDelay;
private final MutingLine mutingLine;
private final Rose rose = new Rose();
// private final LivingSpaceImpl previous;
// private LivingSpace next;
@ -158,14 +160,17 @@ public class LivingSpace {
// }
public void drawHead(UGraphic ug, Context2D context) {
final Component comp = skin.createComponent(headType, null, skinParam, p.getDisplay(false));
// final Component comp = skin.createComponent(headType, null, skinParam, p.getDisplay(false));
final Component comp = rose.createComponent(headType, null, p.getSkinParamBackcolored(skinParam),
p.getDisplay(false));
final Dimension2D dim = comp.getPreferredDimension(ug.getStringBounder());
final Area area = new Area(dim);
comp.drawU(ug, area, context);
}
public Dimension2D getHeadPreferredDimension(StringBounder stringBounder) {
final Component comp = skin.createComponent(headType, null, skinParam, p.getDisplay(false));
// final Component comp = skin.createComponent(headType, null, skinParam, p.getDisplay(false));
final Component comp = rose.createComponent(headType, null, skinParam, p.getDisplay(false));
final Dimension2D dim = comp.getPreferredDimension(stringBounder);
return dim;
}

View File

@ -33,11 +33,17 @@
*/
package net.sourceforge.plantuml.sequencediagram.teoz;
import java.awt.geom.Dimension2D;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.VerticalAlignment;
import net.sourceforge.plantuml.sequencediagram.Participant;
import net.sourceforge.plantuml.skin.Context2D;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UTranslate;
public class LivingSpaces {
@ -55,4 +61,40 @@ public class LivingSpaces {
return all.get(participant);
}
public void drawHeads(final UGraphic ug, Context2D context, VerticalAlignment verticalAlignment) {
final StringBounder stringBounder = ug.getStringBounder();
final double headHeight = getHeadHeight(stringBounder);
for (LivingSpace livingSpace : values()) {
final double x = livingSpace.getPosB().getCurrentValue();
double y = 0;
if (verticalAlignment == VerticalAlignment.BOTTOM) {
final Dimension2D dimHead = livingSpace.getHeadPreferredDimension(stringBounder);
y = headHeight - dimHead.getHeight();
}
livingSpace.drawHead(ug.apply(new UTranslate(x, y)), context);
}
}
public double getHeadHeight(StringBounder stringBounder) {
double headHeight = 0;
for (LivingSpace livingSpace : values()) {
final Dimension2D headDim = livingSpace.getHeadPreferredDimension(stringBounder);
headHeight = Math.max(headHeight, headDim.getHeight());
}
return headHeight;
}
public void drawLifeLines(final UGraphic ug, double height, Context2D context) {
int i = 0;
for (LivingSpace livingSpace : values()) {
// if (i++ == 0) {
// System.err.println("TEMPORARY SKIPPING OTHERS");
// continue;
// }
// System.err.println("drawing lines " + livingSpace);
final double x = livingSpace.getPosC(ug.getStringBounder()).getCurrentValue();
livingSpace.drawLineAndLiveBoxes(ug.apply(new UTranslate(x, 0)), height, context);
}
}
}

View File

@ -72,7 +72,8 @@ public class NoteTile implements Tile {
}
private Component getComponent(StringBounder stringBounder) {
final Component comp = skin.createComponent(ComponentType.NOTE, null, skinParam, note.getStrings());
final Component comp = skin.createComponent(ComponentType.NOTE, null, note.getSkinParamBackcolored(skinParam),
note.getStrings());
return comp;
}

View File

@ -45,7 +45,6 @@ import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.skin.Component;
import net.sourceforge.plantuml.skin.ComponentType;
import net.sourceforge.plantuml.skin.Context2D;
import net.sourceforge.plantuml.skin.SimpleContext2D;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UTranslate;

View File

@ -39,22 +39,33 @@ import java.io.OutputStream;
import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.FileFormatOption;
import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.api.ImageDataSimple;
import net.sourceforge.plantuml.core.ImageData;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.TextBlockUtils;
import net.sourceforge.plantuml.graphic.VerticalAlignment;
import net.sourceforge.plantuml.png.PngTitler;
import net.sourceforge.plantuml.real.Real;
import net.sourceforge.plantuml.real.RealUtils;
import net.sourceforge.plantuml.sequencediagram.Participant;
import net.sourceforge.plantuml.sequencediagram.SequenceDiagram;
import net.sourceforge.plantuml.sequencediagram.graphic.FileMaker;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.skin.Component;
import net.sourceforge.plantuml.skin.ComponentType;
import net.sourceforge.plantuml.skin.Context2D;
import net.sourceforge.plantuml.skin.SimpleContext2D;
import net.sourceforge.plantuml.skin.Skin;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UGraphic2;
import net.sourceforge.plantuml.ugraphic.UTranslate;
import net.sourceforge.plantuml.ugraphic.hand.UGraphicHandwritten;
import net.sourceforge.plantuml.utils.MathUtils;
public class SequenceDiagramFileMakerTeoz implements FileMaker {
@ -76,7 +87,6 @@ public class SequenceDiagramFileMakerTeoz implements FileMaker {
final Real origin = RealUtils.createOrigin();
Real currentPos = origin.addAtLeast(0);
double headHeight = 0;
LivingSpace last = null;
LivingSpaces livingSpaces = new LivingSpaces();
for (Participant p : diagram.participants().values()) {
@ -84,40 +94,81 @@ public class SequenceDiagramFileMakerTeoz implements FileMaker {
diagram.events());
last = livingSpace;
((LivingSpaces) livingSpaces).put(p, livingSpace);
final Dimension2D headDim = livingSpace.getHeadPreferredDimension(stringBounder);
currentPos = livingSpace.getPosD(stringBounder).addAtLeast(0);
headHeight = Math.max(headHeight, headDim.getHeight());
}
// livingSpaces = new LivingSpacesDeltaSimple(livingSpaces);
final MainTile mainTile = new MainTile(diagram, skin, last.getPosD(stringBounder).addAtLeast(0), livingSpaces,
origin);
mainTile.addConstraints(stringBounder);
origin.compile();
final double height = mainTile.getPreferredHeight(stringBounder) + 2 * headHeight;
final double mainHeight = mainTile.getPreferredHeight(stringBounder) + 2
* livingSpaces.getHeadHeight(stringBounder);
final Real min1 = mainTile.getMinX(stringBounder);
final Real max1 = mainTile.getMaxX(stringBounder);
// System.err.println("min1=" + min1.getCurrentValue());
// System.err.println("max1=" + max1.getCurrentValue());
final Dimension2D dim = new Dimension2DDouble(max1.getCurrentValue() - min1.getCurrentValue(), height);
final UGraphic2 ug = (UGraphic2) fileFormatOption.createUGraphic(dim).apply(
final Component compTitle = getCompTitle();
final double mainWidth = max1.getCurrentValue() - min1.getCurrentValue();
Dimension2D dimTitle = new Dimension2DDouble(0, 0);
if (compTitle != null) {
dimTitle = compTitle.getPreferredDimension(stringBounder);
}
final PngTitler footer = getFooter();
Dimension2D dimFooter = new Dimension2DDouble(0, 0);
if (footer != null && footer.getTextBlock() != null) {
dimFooter = footer.getTextBlock().calculateDimension(stringBounder);
}
final PngTitler header = getHeader();
Dimension2D dimHeader = new Dimension2DDouble(0, 0);
if (header != null && header.getTextBlock() != null) {
dimHeader = header.getTextBlock().calculateDimension(stringBounder);
}
final double totalWidth = MathUtils.max(mainWidth, dimTitle.getWidth(), dimFooter.getWidth(),
dimHeader.getWidth());
final double totalHeight = mainHeight + dimTitle.getHeight() + dimHeader.getHeight() + dimFooter.getHeight();
final Dimension2D dim = new Dimension2DDouble(totalWidth, totalHeight);
final UGraphic2 ug2 = (UGraphic2) fileFormatOption.createUGraphic(skinParam.getColorMapper(),
diagram.getDpiFactor(fileFormatOption), dim, skinParam.getBackgroundColor(), false).apply(
new UTranslate(-min1.getCurrentValue(), 0));
stringBounder = ug.getStringBounder();
final Context2D context = new SimpleContext2D(false);
drawHeads(ug, livingSpaces, context);
// mainTile.beforeDrawing(ug.getStringBounder(), livingSpaces.values());
mainTile.drawU(ug.apply(new UTranslate(0, headHeight)));
drawLifeLines(ug.apply(new UTranslate(0, headHeight)), mainTile.getPreferredHeight(stringBounder),
livingSpaces, context);
drawHeads(ug.apply(new UTranslate(0, mainTile.getPreferredHeight(stringBounder) + headHeight)), livingSpaces,
context);
mainTile.drawForeground(ug.apply(new UTranslate(0, headHeight)));
UGraphic ug = diagram.getSkinParam().handwritten() ? new UGraphicHandwritten(ug2) : ug2;
ug.writeImageTOBEMOVED(os, isWithMetadata ? diagram.getMetadata() : null, diagram.getDpi(fileFormatOption));
if (footer != null && footer.getTextBlock() != null) {
double dx = 0;
if (diagram.getFooterAlignment() == HorizontalAlignment.RIGHT) {
dx = totalWidth - dimFooter.getWidth();
} else if (diagram.getFooterAlignment() == HorizontalAlignment.CENTER) {
dx = (totalWidth - dimFooter.getWidth()) / 2;
}
footer.getTextBlock().drawU(
ug.apply(new UTranslate(dx, mainHeight + dimTitle.getHeight() + dimHeader.getHeight())));
}
if (header != null && header.getTextBlock() != null) {
double dx = 0;
if (diagram.getHeaderAlignment() == HorizontalAlignment.RIGHT) {
dx = totalWidth - dimHeader.getWidth();
} else if (diagram.getHeaderAlignment() == HorizontalAlignment.CENTER) {
dx = (totalWidth - dimHeader.getWidth()) / 2;
}
header.getTextBlock().drawU(ug.apply(new UTranslate(dx, 0)));
}
if (compTitle != null) {
compTitle.drawU(ug.apply(new UTranslate((totalWidth - dimTitle.getWidth()) / 2, 0)), new Area(dimTitle),
new SimpleContext2D(false));
ug = ug.apply(new UTranslate((totalWidth - mainWidth) / 2, dimTitle.getHeight() + dimHeader.getHeight()));
}
drawMainTile(ug, mainTile, livingSpaces);
ug2.writeImageTOBEMOVED(os, isWithMetadata ? diagram.getMetadata() : null, diagram.getDpi(fileFormatOption));
final Dimension2D info = new Dimension2DDouble(dim.getWidth(), dim.getHeight());
// if (fileFormatOption.getFileFormat() == FileFormat.PNG && ug instanceof UGraphicG2d) {
@ -133,25 +184,55 @@ public class SequenceDiagramFileMakerTeoz implements FileMaker {
return new ImageDataSimple(info);
}
private void drawLifeLines(final UGraphic ug, double height, LivingSpaces livingSpaces, Context2D context) {
int i = 0;
for (LivingSpace livingSpace : livingSpaces.values()) {
// if (i++ == 0) {
// System.err.println("TEMPORARY SKIPPING OTHERS");
// continue;
// }
// System.err.println("drawing lines " + livingSpace);
final double x = livingSpace.getPosC(ug.getStringBounder()).getCurrentValue();
livingSpace.drawLineAndLiveBoxes(ug.apply(new UTranslate(x, 0)), height, context);
private Component getCompTitle() {
final Display title = diagram.getTitle();
final Component compTitle;
if (title == null) {
compTitle = null;
} else {
compTitle = skin.createComponent(ComponentType.TITLE, null, diagram.getSkinParam(), title);
}
return compTitle;
}
private void drawHeads(final UGraphic ug, LivingSpaces livingSpaces, Context2D context) {
for (LivingSpace livingSpace : livingSpaces.values()) {
// System.err.println("drawing heads " + livingSpace);
final double x = livingSpace.getPosB().getCurrentValue();
livingSpace.drawHead(ug.apply(new UTranslate(x, 0)), context);
private PngTitler getFooter() {
if (diagram.getFooter() == null) {
return null;
}
final HtmlColor hyperlinkColor = diagram.getSkinParam().getHyperlinkColor();
final HtmlColor titleColor = diagram.getSkinParam().getFontHtmlColor(FontParam.FOOTER, null);
final String fontFamily = diagram.getSkinParam().getFont(FontParam.FOOTER, null, false).getFamily(null);
final int fontSize = diagram.getSkinParam().getFont(FontParam.FOOTER, null, false).getSize();
final PngTitler pngTitler = new PngTitler(titleColor, diagram.getFooter(), fontSize, fontFamily,
diagram.getFooterAlignment(), hyperlinkColor, diagram.getSkinParam().useUnderlineForHyperlink());
return pngTitler;
}
private PngTitler getHeader() {
final HtmlColor hyperlinkColor = diagram.getSkinParam().getHyperlinkColor();
final HtmlColor titleColor = diagram.getSkinParam().getFontHtmlColor(FontParam.HEADER, null);
final String fontFamily = diagram.getSkinParam().getFont(FontParam.HEADER, null, false).getFamily(null);
final int fontSize = diagram.getSkinParam().getFont(FontParam.HEADER, null, false).getSize();
final PngTitler pngTitler = new PngTitler(titleColor, diagram.getHeader(), fontSize, fontFamily,
diagram.getHeaderAlignment(), hyperlinkColor, diagram.getSkinParam().useUnderlineForHyperlink());
return pngTitler;
}
private void drawMainTile(final UGraphic ug, final MainTile mainTile, LivingSpaces livingSpaces) {
final StringBounder stringBounder = ug.getStringBounder();
final Context2D context = new SimpleContext2D(false);
livingSpaces.drawHeads(ug, context, VerticalAlignment.BOTTOM);
final double headHeight = livingSpaces.getHeadHeight(stringBounder);
mainTile.drawU(ug.apply(new UTranslate(0, headHeight)));
livingSpaces.drawLifeLines(ug.apply(new UTranslate(0, headHeight)), mainTile.getPreferredHeight(stringBounder),
context);
livingSpaces.drawHeads(ug.apply(new UTranslate(0, mainTile.getPreferredHeight(stringBounder) + headHeight)),
context, VerticalAlignment.TOP);
mainTile.drawForeground(ug.apply(new UTranslate(0, headHeight)));
}
public int getNbPages() {

View File

@ -39,14 +39,16 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sourceforge.plantuml.graphic.HtmlColor;
public class Stairs2 {
private final List<StairsPosition> ys = new ArrayList<StairsPosition>();
private final List<Integer> values = new ArrayList<Integer>();
private final Map<Double, Integer> cache = new HashMap<Double, Integer>();
private final List<IntegerColored> values = new ArrayList<IntegerColored>();
private final Map<Double, IntegerColored> cache = new HashMap<Double, IntegerColored>();
public void addStep(StairsPosition position, int value) {
System.err.println("Stairs2::addStep " + position + " " + value);
public void addStep(StairsPosition position, int value, HtmlColor color) {
System.err.println("Stairs2::addStep " + position + " " + value + " color=" + color);
assert ys.size() == values.size();
if (ys.size() > 0) {
final double lastY = ys.get(ys.size() - 1).getValue();
@ -54,19 +56,20 @@ public class Stairs2 {
throw new IllegalArgumentException();
}
if (lastY == position.getValue()) {
values.set(ys.size() - 1, value);
values.set(ys.size() - 1, new IntegerColored(value, color));
cache.clear();
return;
}
}
ys.add(position);
values.add(value);
values.add(new IntegerColored(value, color));
cache.clear();
}
public int getMaxValue() {
int max = Integer.MIN_VALUE;
for (Integer v : values) {
for (IntegerColored vc : values) {
final int v = vc.getValue();
if (v > max) {
max = v;
}
@ -78,23 +81,23 @@ public class Stairs2 {
return Collections.unmodifiableList(ys);
}
public int getValue(double y) {
Integer result = cache.get(y);
if (result == null) {
result = getValueSlow(new StairsPosition(y, false));
cache.put(y, result);
public IntegerColored getValue(double y) {
IntegerColored resultc = cache.get(y);
if (resultc == null) {
resultc = getValueSlow(new StairsPosition(y, false));
cache.put(y, resultc);
}
return result;
return resultc;
}
private int getValueSlow(StairsPosition y) {
private IntegerColored getValueSlow(StairsPosition y) {
final int idx = Collections.binarySearch(ys, y);
if (idx >= 0) {
return values.get(idx);
}
final int insertPoint = -idx - 1;
if (insertPoint == 0) {
return 0;
return new IntegerColored(0, null);
}
return values.get(insertPoint - 1);
}
@ -104,7 +107,7 @@ public class Stairs2 {
if (size == 0) {
return 0;
}
return values.get(size - 1);
return values.get(size - 1).getValue();
}
}

View File

@ -33,6 +33,7 @@
*/
package net.sourceforge.plantuml.sequencediagram.teoz;
public class StairsPosition implements Comparable<StairsPosition> {
private final double value;

View File

@ -33,13 +33,14 @@
*/
package net.sourceforge.plantuml.sequencediagram.teoz;
import java.util.Collections;
import java.util.Map;
import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.SkinParamBackcolored;
import net.sourceforge.plantuml.SkinParamBackcoloredReference;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.real.Real;
import net.sourceforge.plantuml.sequencediagram.Participant;
import net.sourceforge.plantuml.sequencediagram.Reference;
import net.sourceforge.plantuml.skin.Skin;
public class TileArguments {
@ -60,6 +61,17 @@ public class TileArguments {
this.skinParam = skinParam;
}
public TileArguments withBackColorGeneral(HtmlColor backColorElement, HtmlColor backColorGeneral) {
return new TileArguments(stringBounder, omega, livingSpaces, skin, new SkinParamBackcolored(skinParam,
backColorElement, backColorGeneral), origin);
}
public TileArguments withBackColor(Reference reference) {
final ISkinParam newSkinParam = new SkinParamBackcoloredReference(skinParam, reference.getBackColorElement(),
reference.getBackColorGeneral());
return new TileArguments(stringBounder, omega, livingSpaces, skin, newSkinParam, origin);
}
public final StringBounder getStringBounder() {
return stringBounder;
}

View File

@ -39,6 +39,8 @@ import java.util.Iterator;
import java.util.List;
import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.SkinParamBackcoloredReference;
import net.sourceforge.plantuml.graphic.HtmlColorUtils;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.sequencediagram.Delay;
import net.sourceforge.plantuml.sequencediagram.Divider;
@ -102,6 +104,21 @@ public class TileBuilder {
reverse ? livingSpace1 : livingSpace2);
}
}
} else if (ev instanceof MessageExo) {
final MessageExo exo = (MessageExo) ev;
final LivingSpace livingSpace1 = livingSpaces.get(exo.getParticipant());
tile = new CommunicationExoTile(livingSpace1, exo, skin, skinParam, tileArguments.getOrigin(),
tileArguments.getOmega());
if (exo.getNote() != null) {
final NotePosition notePosition = exo.getNotePosition();
if (notePosition == NotePosition.LEFT) {
tile = new CommunicationTileNoteLeft((TileWithUpdateStairs) tile, exo, skin, skinParam,
livingSpace1);
} else if (notePosition == NotePosition.RIGHT) {
tile = new CommunicationTileNoteRight((TileWithUpdateStairs) tile, exo, skin, skinParam,
livingSpace1);
}
}
} else if (ev instanceof Note) {
final Note note = (Note) ev;
final LivingSpace livingSpace1 = livingSpaces.get(note.getParticipant());
@ -111,21 +128,17 @@ public class TileBuilder {
} else if (ev instanceof Divider) {
final Divider divider = (Divider) ev;
tile = new DividerTile(divider, skin, skinParam, tileArguments.getOrigin(), tileArguments.getOmega());
} else if (ev instanceof MessageExo) {
final MessageExo exo = (MessageExo) ev;
final LivingSpace livingSpace1 = livingSpaces.get(exo.getParticipant());
tile = new CommunicationExoTile(livingSpace1, exo, skin, skinParam, tileArguments.getOrigin(),
tileArguments.getOmega());
} else if (ev instanceof GroupingStart) {
final GroupingStart start = (GroupingStart) ev;
tile = new GroupingTile(it, start, tileArguments);
tile = new GroupingTile(it, start, tileArguments.withBackColorGeneral(start.getBackColorElement(),
start.getBackColorGeneral()), tileArguments);
// tile = TileUtils.withMargin(tile, 10, 10, 10, 10);
} else if (ev instanceof GroupingLeaf && ((GroupingLeaf) ev).getType() == GroupingType.ELSE) {
final GroupingLeaf anElse = (GroupingLeaf) ev;
tile = new ElseTile(anElse, skin, skinParam, parent);
} else if (ev instanceof Reference) {
final Reference ref = (Reference) ev;
tile = new ReferenceTile(ref, tileArguments);
tile = new ReferenceTile(ref, tileArguments.withBackColor(ref));
} else if (ev instanceof Delay) {
final Delay delay = (Delay) ev;
tile = new DelayTile(delay, tileArguments);
@ -138,5 +151,4 @@ public class TileBuilder {
}
return tile;
}
}

View File

@ -28,7 +28,7 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15907 $
* Revision $Revision: 15936 $
*
*/
package net.sourceforge.plantuml.skin;
@ -47,7 +47,6 @@ import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.graphic.TextBlockEmpty;
import net.sourceforge.plantuml.graphic.TextBlockUtils;
import net.sourceforge.plantuml.ugraphic.UFont;
import net.sourceforge.plantuml.ugraphic.UFont2;
public abstract class AbstractTextualComponent extends AbstractComponent {
@ -62,19 +61,19 @@ public abstract class AbstractTextualComponent extends AbstractComponent {
private final UFont font;
private final HtmlColor fontColor;
public AbstractTextualComponent(CharSequence label, UFont2 font, HorizontalAlignment horizontalAlignment, int marginX1,
int marginX2, int marginY, ISkinSimple spriteContainer, double maxMessageSize,
UFont fontForStereotype, HtmlColor htmlColorForStereotype) {
public AbstractTextualComponent(CharSequence label, FontConfiguration font,
HorizontalAlignment horizontalAlignment, int marginX1, int marginX2, int marginY,
ISkinSimple spriteContainer, double maxMessageSize, UFont fontForStereotype,
HtmlColor htmlColorForStereotype) {
this(Display.getWithNewlines(label == null ? "" : label.toString()), font, horizontalAlignment, marginX1,
marginX2, marginY, spriteContainer, maxMessageSize, false, fontForStereotype, htmlColorForStereotype);
}
public AbstractTextualComponent(Display strings, UFont2 font, HorizontalAlignment horizontalAlignment, int marginX1,
int marginX2, int marginY, ISkinSimple spriteContainer, double maxMessageSize,
public AbstractTextualComponent(Display strings, FontConfiguration font, HorizontalAlignment horizontalAlignment,
int marginX1, int marginX2, int marginY, ISkinSimple spriteContainer, double maxMessageSize,
boolean enhanced, UFont fontForStereotype, HtmlColor htmlColorForStereotype) {
this.font = font.getFont();
this.fontColor = font.getColor();
assert fontColor.equals(font.getColor());
this.marginX1 = marginX1;
this.marginX2 = marginX2;
this.marginY = marginY;
@ -83,12 +82,10 @@ public abstract class AbstractTextualComponent extends AbstractComponent {
if (strings.size() == 1 && strings.get(0).length() == 0) {
textBlock = new TextBlockEmpty();
} else if (enhanced) {
textBlock = new BodyEnhanced2(strings, FontParam.NOTE, spriteContainer, HorizontalAlignment.LEFT,
font.getFont(), fontColor, font.getHyperlinkColor(), font.useUnderlineForHyperlink());
textBlock = new BodyEnhanced2(strings, FontParam.NOTE, spriteContainer, HorizontalAlignment.LEFT, font);
} else {
textBlock = TextBlockUtils.create(strings, new FontConfiguration(font.getFont(), fontColor, font.getHyperlinkColor(),
font.useUnderlineForHyperlink()), horizontalAlignment, spriteContainer, maxMessageSize, false,
fontForStereotype, htmlColorForStereotype);
textBlock = TextBlockUtils.create(strings, font, horizontalAlignment, spriteContainer, maxMessageSize,
false, fontForStereotype, htmlColorForStereotype);
}
}

View File

@ -28,7 +28,7 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 12235 $
* Revision $Revision: 15957 $
*
*/
package net.sourceforge.plantuml.skin;
@ -38,9 +38,8 @@ import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.SymbolContext;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UEllipse;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UPath;
@ -49,8 +48,6 @@ import net.sourceforge.plantuml.ugraphic.UTranslate;
public class StickMan implements TextBlock {
private final double thickness;
private final double armsY = 8;
private final double armsLenght = 13;
private final double bodyLenght = 27;
@ -58,34 +55,23 @@ public class StickMan implements TextBlock {
private final double legsY = 15;
private final double headDiam = 16;
private final HtmlColor backgroundColor;
private final HtmlColor foregroundColor;
private final SymbolContext symbolContext;
private double deltaShadow;
public void setDeltaShadow(double deltaShadow) {
this.deltaShadow = deltaShadow;
public StickMan(SymbolContext symbolContext) {
this.symbolContext = symbolContext;
}
public StickMan(HtmlColor backgroundColor, HtmlColor foregroundColor, double deltaShadow, double thickness) {
this.backgroundColor = backgroundColor;
this.foregroundColor = foregroundColor;
this.deltaShadow = deltaShadow;
this.thickness = thickness;
}
public StickMan(HtmlColor backgroundColor, HtmlColor foregroundColor, double deltaShadow) {
this(backgroundColor, foregroundColor, deltaShadow, 2);
private StickMan(HtmlColor backgroundColor, HtmlColor foregroundColor, double deltaShadow) {
this(new SymbolContext(backgroundColor, foregroundColor).withDeltaShadow(deltaShadow).withStroke(new UStroke(2)));
}
public StickMan(HtmlColor backgroundColor, HtmlColor foregroundColor) {
this(backgroundColor, foregroundColor, 0, 2);
this(new SymbolContext(backgroundColor, foregroundColor).withStroke(new UStroke(2)));
}
public void drawU(UGraphic ug) {
ug = ug.apply(new UStroke(thickness));
final double startX = Math.max(armsLenght, legsX) - headDiam / 2.0 + thickness;
final double startX = Math.max(armsLenght, legsX) - headDiam / 2.0 + thickness();
final UEllipse head = new UEllipse(headDiam, headDiam);
final double centerX = startX + headDiam / 2;
@ -99,22 +85,26 @@ public class StickMan implements TextBlock {
path.lineTo(-legsX, bodyLenght + legsY);
path.moveTo(0, bodyLenght);
path.lineTo(legsX, bodyLenght + legsY);
if (deltaShadow != 0) {
head.setDeltaShadow(deltaShadow);
path.setDeltaShadow(deltaShadow);
if (symbolContext.getDeltaShadow() != 0) {
head.setDeltaShadow(symbolContext.getDeltaShadow());
path.setDeltaShadow(symbolContext.getDeltaShadow());
}
ug = ug.apply(new UChangeBackColor(backgroundColor)).apply(new UChangeColor(foregroundColor));
ug.apply(new UTranslate(startX, thickness)).draw(head);
ug.apply(new UTranslate(centerX, headDiam + thickness)).draw(path);
ug = symbolContext.apply(ug);
ug.apply(new UTranslate(startX, thickness())).draw(head);
ug.apply(new UTranslate(centerX, headDiam + thickness())).draw(path);
}
private double thickness() {
return symbolContext.getStroke().getThickness();
}
public double getPreferredWidth() {
return Math.max(armsLenght, legsX) * 2 + 2 * thickness;
return Math.max(armsLenght, legsX) * 2 + 2 * thickness();
}
public double getPreferredHeight() {
return headDiam + bodyLenght + legsY + 2 * thickness + deltaShadow + 1;
return headDiam + bodyLenght + legsY + 2 * thickness() + symbolContext.getDeltaShadow() + 1;
}
public Dimension2D calculateDimension(StringBounder stringBounder) {

View File

@ -28,19 +28,19 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15908 $
* Revision $Revision: 15934 $
*
*/
package net.sourceforge.plantuml.skin.bluemodern;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.ArrowComponent;
import net.sourceforge.plantuml.skin.ArrowConfiguration;
import net.sourceforge.plantuml.ugraphic.UFont2;
public abstract class AbstractComponentBlueModernArrow extends AbstractTextualComponent implements ArrowComponent {
@ -52,7 +52,7 @@ public abstract class AbstractComponentBlueModernArrow extends AbstractTextualCo
private final ArrowConfiguration arrowConfiguration;
private final HtmlColor foregroundColor;
public AbstractComponentBlueModernArrow(HtmlColor foregroundColor, UFont2 font, Display stringsToDisplay, ArrowConfiguration arrowConfiguration, ISkinSimple spriteContainer) {
public AbstractComponentBlueModernArrow(HtmlColor foregroundColor, FontConfiguration font, Display stringsToDisplay, ArrowConfiguration arrowConfiguration, ISkinSimple spriteContainer) {
super(stringsToDisplay, font, HorizontalAlignment.LEFT, 17, 17, 2,
spriteContainer, 0, false, null, null);
this.arrowConfiguration = arrowConfiguration;

View File

@ -28,7 +28,7 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15913 $
* Revision $Revision: 15947 $
*
*/
package net.sourceforge.plantuml.skin.bluemodern;
@ -41,8 +41,8 @@ import net.sourceforge.plantuml.LineParam;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.HtmlColorSet;
import net.sourceforge.plantuml.graphic.HtmlColorUtils;
import net.sourceforge.plantuml.graphic.SymbolContext;
import net.sourceforge.plantuml.skin.ArrowConfiguration;
import net.sourceforge.plantuml.skin.Component;
import net.sourceforge.plantuml.skin.ComponentType;
@ -79,17 +79,19 @@ public class BlueModern implements Skin {
if (type.isArrow()) {
final HtmlColor sequenceArrow = config.getColor() == null ? HtmlColorUtils.BLACK : config.getColor();
if (config.isSelfArrow()) {
return new ComponentBlueModernSelfArrow(sequenceArrow, normalFont.toFont2(HtmlColorUtils.BLACK, useUnderlineForHyperlink, hyperlinkColor), stringsToDisplay, config,
param);
return new ComponentBlueModernSelfArrow(sequenceArrow, normalFont.toFont2(HtmlColorUtils.BLACK,
useUnderlineForHyperlink, hyperlinkColor), stringsToDisplay, config, param);
}
return new ComponentBlueModernArrow(sequenceArrow, useUnderlineForHyperlink, normalFont.toFont2(HtmlColorUtils.BLACK, useUnderlineForHyperlink, hyperlinkColor), stringsToDisplay, config,
param);
return new ComponentBlueModernArrow(sequenceArrow, useUnderlineForHyperlink, normalFont.toFont2(
HtmlColorUtils.BLACK, useUnderlineForHyperlink, hyperlinkColor), stringsToDisplay, config, param);
}
if (type == ComponentType.PARTICIPANT_HEAD) {
return new ComponentBlueModernParticipant(blue1, blue2, participantFont.toFont2(HtmlColorUtils.WHITE, useUnderlineForHyperlink, hyperlinkColor), stringsToDisplay, param);
return new ComponentBlueModernParticipant(blue1, blue2, participantFont.toFont2(HtmlColorUtils.WHITE,
useUnderlineForHyperlink, hyperlinkColor), stringsToDisplay, param);
}
if (type == ComponentType.PARTICIPANT_TAIL) {
return new ComponentBlueModernParticipant(blue1, blue2, participantFont.toFont2(HtmlColorUtils.WHITE, useUnderlineForHyperlink, hyperlinkColor), stringsToDisplay, param);
return new ComponentBlueModernParticipant(blue1, blue2, participantFont.toFont2(HtmlColorUtils.WHITE,
useUnderlineForHyperlink, hyperlinkColor), stringsToDisplay, param);
}
if (type == ComponentType.PARTICIPANT_LINE) {
return new ComponentBlueModernLine(lineColor);
@ -98,14 +100,16 @@ public class BlueModern implements Skin {
return new ComponentBlueModernLine(lineColor);
}
if (type == ComponentType.ACTOR_HEAD) {
return new ComponentBlueModernActor(blue2, blue1, participantFont.toFont2(blue1, useUnderlineForHyperlink, hyperlinkColor), stringsToDisplay, true, param);
return new ComponentBlueModernActor(blue2, blue1, participantFont.toFont2(blue1, useUnderlineForHyperlink,
hyperlinkColor), stringsToDisplay, true, param);
}
if (type == ComponentType.ACTOR_TAIL) {
return new ComponentBlueModernActor(blue2, blue1, participantFont.toFont2(blue1, useUnderlineForHyperlink, hyperlinkColor), stringsToDisplay,false, param);
return new ComponentBlueModernActor(blue2, blue1, participantFont.toFont2(blue1, useUnderlineForHyperlink,
hyperlinkColor), stringsToDisplay, false, param);
}
if (type == ComponentType.NOTE) {
return new ComponentBlueModernNote(HtmlColorUtils.WHITE, HtmlColorUtils.BLACK, normalFont.toFont2(HtmlColorUtils.BLACK, useUnderlineForHyperlink, hyperlinkColor),
stringsToDisplay, param);
return new ComponentBlueModernNote(HtmlColorUtils.WHITE, HtmlColorUtils.BLACK, normalFont.toFont2(
HtmlColorUtils.BLACK, useUnderlineForHyperlink, hyperlinkColor), stringsToDisplay, param);
}
if (type == ComponentType.ALIVE_BOX_CLOSE_CLOSE) {
return new ComponentBlueModernActiveLine(blue1, true, true);
@ -123,43 +127,50 @@ public class BlueModern implements Skin {
return new ComponentBlueModernDelayLine(lineColor);
}
if (type == ComponentType.DELAY_TEXT) {
return new ComponentBlueModernDelayText(param.getFont(
FontParam.SEQUENCE_DELAY, null, false).toFont2(HtmlColorUtils.BLACK, useUnderlineForHyperlink, hyperlinkColor), stringsToDisplay, param);
return new ComponentBlueModernDelayText(param.getFont(FontParam.SEQUENCE_DELAY, null, false).toFont2(
HtmlColorUtils.BLACK, useUnderlineForHyperlink, hyperlinkColor), stringsToDisplay, param);
}
if (type == ComponentType.DESTROY) {
return new ComponentRoseDestroy(red);
}
if (type == ComponentType.GROUPING_HEADER) {
return new ComponentBlueModernGroupingHeader(blue1, blue3, borderGroupColor, HtmlColorUtils.BLACK,
normalFont.toFont2(HtmlColorUtils.WHITE, useUnderlineForHyperlink, hyperlinkColor), smallFont, stringsToDisplay, param);
normalFont.toFont2(HtmlColorUtils.WHITE, useUnderlineForHyperlink, hyperlinkColor), smallFont,
stringsToDisplay, param);
}
if (type == ComponentType.GROUPING_ELSE) {
return new ComponentRoseGroupingElse(HtmlColorUtils.BLACK, smallFont.toFont2(HtmlColorUtils.BLACK, useUnderlineForHyperlink, hyperlinkColor), stringsToDisplay.get(0), param, blue3,
Rose.getStroke(param, LineParam.sequenceGroupBorder, 2));
return new ComponentRoseGroupingElse(HtmlColorUtils.BLACK, smallFont.toFont2(HtmlColorUtils.BLACK,
useUnderlineForHyperlink, hyperlinkColor), stringsToDisplay.get(0), param, blue3);
}
if (type == ComponentType.GROUPING_SPACE) {
return new ComponentRoseGroupingSpace(7);
}
if (type == ComponentType.TITLE) {
return new ComponentRoseTitle(bigFont.toFont2(HtmlColorUtils.BLACK, useUnderlineForHyperlink, hyperlinkColor), stringsToDisplay, param);
return new ComponentRoseTitle(bigFont.toFont2(HtmlColorUtils.BLACK, useUnderlineForHyperlink,
hyperlinkColor), stringsToDisplay, param);
}
if (type == ComponentType.REFERENCE) {
return new ComponentRoseReference(HtmlColorUtils.WHITE, normalFont.toFont2(HtmlColorUtils.BLACK, useUnderlineForHyperlink, hyperlinkColor), blue1, borderGroupColor, blue3,
normalFont, stringsToDisplay, HorizontalAlignment.CENTER, param, 0, Rose.getStroke(param, LineParam.sequenceDividerBorder, 2));
return new ComponentRoseReference(normalFont.toFont2(HtmlColorUtils.BLACK, useUnderlineForHyperlink,
hyperlinkColor), new SymbolContext(blue1, borderGroupColor).withStroke(Rose.getStroke(param,
LineParam.sequenceDividerBorder, 2)), normalFont.toFont2(HtmlColorUtils.WHITE,
useUnderlineForHyperlink, hyperlinkColor), stringsToDisplay, HorizontalAlignment.CENTER, param,
blue3);
}
if (type == ComponentType.NEWPAGE) {
return new ComponentBlueModernNewpage(blue1);
}
if (type == ComponentType.DIVIDER) {
return new ComponentBlueModernDivider(normalFont.toFont2(HtmlColorUtils.BLACK, useUnderlineForHyperlink, hyperlinkColor), blue2, blue1, HtmlColorUtils.BLACK, stringsToDisplay, param);
return new ComponentBlueModernDivider(normalFont.toFont2(HtmlColorUtils.BLACK, useUnderlineForHyperlink,
hyperlinkColor), blue2, blue1, HtmlColorUtils.BLACK, stringsToDisplay, param);
}
if (type == ComponentType.SIGNATURE) {
return new ComponentRoseTitle(smallFont.toFont2(HtmlColorUtils.BLACK, useUnderlineForHyperlink, hyperlinkColor), Display.create(
"This skin was created ", "in April 2009."), param);
return new ComponentRoseTitle(smallFont.toFont2(HtmlColorUtils.BLACK, useUnderlineForHyperlink,
hyperlinkColor), Display.create("This skin was created ", "in April 2009."), param);
}
if (type == ComponentType.ENGLOBER) {
return new ComponentBlueModernEnglober(blue1, blue3, stringsToDisplay, param.getFont(FontParam.SEQUENCE_BOX, null, false).toFont2(HtmlColorUtils.BLACK, useUnderlineForHyperlink, hyperlinkColor),
param);
return new ComponentBlueModernEnglober(blue1, blue3, stringsToDisplay, param.getFont(
FontParam.SEQUENCE_BOX, null, false).toFont2(HtmlColorUtils.BLACK, useUnderlineForHyperlink,
hyperlinkColor), param);
}
return null;

View File

@ -28,13 +28,14 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15908 $
* Revision $Revision: 15934 $
*
*/
package net.sourceforge.plantuml.skin.bluemodern;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
@ -43,7 +44,6 @@ import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.skin.StickMan;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UTranslate;
@ -52,7 +52,7 @@ public class ComponentBlueModernActor extends AbstractTextualComponent {
private final StickMan stickman;
private final boolean head;
public ComponentBlueModernActor(HtmlColor backgroundColor, HtmlColor foregroundColor, UFont2 font,
public ComponentBlueModernActor(HtmlColor backgroundColor, HtmlColor foregroundColor, FontConfiguration font,
Display stringsToDisplay, boolean head, ISkinSimple spriteContainer) {
super(stringsToDisplay, font, HorizontalAlignment.CENTER, 3, 3, 0,
spriteContainer, 0, false, null, null);

View File

@ -28,7 +28,7 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15908 $
* Revision $Revision: 15934 $
*
*/
package net.sourceforge.plantuml.skin.bluemodern;
@ -39,6 +39,7 @@ import java.awt.geom.Point2D;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.skin.Area;
@ -47,7 +48,6 @@ import net.sourceforge.plantuml.skin.ArrowDirection;
import net.sourceforge.plantuml.skin.ArrowPart;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.ULine;
import net.sourceforge.plantuml.ugraphic.UPolygon;
@ -56,7 +56,7 @@ import net.sourceforge.plantuml.ugraphic.UTranslate;
public class ComponentBlueModernArrow extends AbstractComponentBlueModernArrow {
public ComponentBlueModernArrow(HtmlColor foregroundColor, boolean useUnderlineForHyperlink, UFont2 font, Display stringsToDisplay, ArrowConfiguration arrowConfiguration,
public ComponentBlueModernArrow(HtmlColor foregroundColor, boolean useUnderlineForHyperlink, FontConfiguration font, Display stringsToDisplay, ArrowConfiguration arrowConfiguration,
ISkinSimple spriteContainer) {
super(foregroundColor, font, stringsToDisplay, arrowConfiguration, spriteContainer);
}

View File

@ -37,18 +37,18 @@ import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UTranslate;
public class ComponentBlueModernDelayText extends AbstractTextualComponent {
public ComponentBlueModernDelayText(UFont2 font, Display stringsToDisplay,
public ComponentBlueModernDelayText(FontConfiguration font, Display stringsToDisplay,
ISkinSimple spriteContainer) {
super(stringsToDisplay, font, HorizontalAlignment.CENTER, 4, 4, 4,
spriteContainer, 0, false, null, null);

View File

@ -37,6 +37,7 @@ import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.HtmlColorUtils;
@ -46,7 +47,6 @@ import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.ULine;
import net.sourceforge.plantuml.ugraphic.URectangle;
@ -59,7 +59,7 @@ public class ComponentBlueModernDivider extends AbstractTextualComponent {
private final HtmlColor background2;
private final HtmlColor borderColor;
public ComponentBlueModernDivider(UFont2 font, HtmlColor background1, HtmlColor background2,
public ComponentBlueModernDivider(FontConfiguration font, HtmlColor background1, HtmlColor background2,
HtmlColor borderColor, Display stringsToDisplay, ISkinSimple spriteContainer) {
super(stringsToDisplay, font, HorizontalAlignment.CENTER, 4, 4, 4,
spriteContainer, 0, false, null, null);

View File

@ -37,6 +37,7 @@ import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
@ -44,7 +45,6 @@ import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.URectangle;
import net.sourceforge.plantuml.ugraphic.UStroke;
@ -56,7 +56,7 @@ public class ComponentBlueModernEnglober extends AbstractTextualComponent {
private final HtmlColor backColor;
public ComponentBlueModernEnglober(HtmlColor borderColor, HtmlColor backColor, Display strings,
UFont2 font, ISkinSimple spriteContainer) {
FontConfiguration font, ISkinSimple spriteContainer) {
super(strings, font, HorizontalAlignment.CENTER, 4, 4, 1, spriteContainer, 0, false,
null, null);
this.borderColor = borderColor;

View File

@ -28,7 +28,7 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15908 $
* Revision $Revision: 15934 $
*
*/
package net.sourceforge.plantuml.skin.bluemodern;
@ -48,7 +48,6 @@ import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UFont;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.ULine;
import net.sourceforge.plantuml.ugraphic.UPolygon;
@ -68,7 +67,7 @@ public class ComponentBlueModernGroupingHeader extends AbstractTextualComponent
private final HtmlColor borderColor;
public ComponentBlueModernGroupingHeader(HtmlColor headerBackgroundColor, HtmlColor generalBackgroundColor,
HtmlColor borderColor, HtmlColor fontColor2, UFont2 bigFont, UFont smallFont, Display strings, ISkinSimple spriteContainer) {
HtmlColor borderColor, HtmlColor fontColor2, FontConfiguration bigFont, UFont smallFont, Display strings, ISkinSimple spriteContainer) {
super(strings.get(0), bigFont, HorizontalAlignment.LEFT, 15, 30, 1, spriteContainer, 0, null,
null);
this.headerBackgroundColor = headerBackgroundColor;

View File

@ -28,13 +28,14 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15908 $
* Revision $Revision: 15934 $
*
*/
package net.sourceforge.plantuml.skin.bluemodern;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
@ -42,7 +43,6 @@ import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.ULine;
import net.sourceforge.plantuml.ugraphic.UPolygon;
@ -55,7 +55,7 @@ final public class ComponentBlueModernNote extends AbstractTextualComponent {
private final HtmlColor back;
private final HtmlColor foregroundColor;
public ComponentBlueModernNote(HtmlColor back, HtmlColor foregroundColor, UFont2 font,
public ComponentBlueModernNote(HtmlColor back, HtmlColor foregroundColor, FontConfiguration font,
Display strings, ISkinSimple spriteContainer) {
super(strings, font, HorizontalAlignment.LEFT, 6, 15, 5, spriteContainer, 0, false,
null, null);

View File

@ -28,20 +28,20 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15908 $
* Revision $Revision: 15934 $
*
*/
package net.sourceforge.plantuml.skin.bluemodern;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UTranslate;
@ -51,7 +51,7 @@ public class ComponentBlueModernParticipant extends AbstractTextualComponent {
private final HtmlColor blue1;
private final HtmlColor blue2;
public ComponentBlueModernParticipant(HtmlColor blue1, HtmlColor blue2, UFont2 font,
public ComponentBlueModernParticipant(HtmlColor blue1, HtmlColor blue2, FontConfiguration font,
Display stringsToDisplay, ISkinSimple spriteContainer) {
super(stringsToDisplay, font, HorizontalAlignment.CENTER, 7, 7, 7,
spriteContainer, 0, false, null, null);

View File

@ -28,7 +28,7 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15908 $
* Revision $Revision: 15934 $
*
*/
package net.sourceforge.plantuml.skin.bluemodern;
@ -38,6 +38,7 @@ import java.awt.geom.Point2D;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.skin.Area;
@ -45,7 +46,6 @@ import net.sourceforge.plantuml.skin.ArrowConfiguration;
import net.sourceforge.plantuml.skin.ArrowPart;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.ULine;
import net.sourceforge.plantuml.ugraphic.UPolygon;
@ -56,7 +56,7 @@ public class ComponentBlueModernSelfArrow extends AbstractComponentBlueModernArr
private final double arrowWidth = 45;
public ComponentBlueModernSelfArrow(HtmlColor foregroundColor, UFont2 font, Display stringsToDisplay, ArrowConfiguration arrowConfiguration, ISkinSimple spriteContainer) {
public ComponentBlueModernSelfArrow(HtmlColor foregroundColor, FontConfiguration font, Display stringsToDisplay, ArrowConfiguration arrowConfiguration, ISkinSimple spriteContainer) {
super(foregroundColor, font, stringsToDisplay, arrowConfiguration, spriteContainer);
}

View File

@ -28,19 +28,19 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15908 $
* Revision $Revision: 15934 $
*
*/
package net.sourceforge.plantuml.skin.rose;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.ArrowComponent;
import net.sourceforge.plantuml.skin.ArrowConfiguration;
import net.sourceforge.plantuml.ugraphic.UFont2;
public abstract class AbstractComponentRoseArrow extends AbstractTextualComponent implements ArrowComponent {
@ -49,7 +49,7 @@ public abstract class AbstractComponentRoseArrow extends AbstractTextualComponen
private final HtmlColor foregroundColor;
private final ArrowConfiguration arrowConfiguration;
public AbstractComponentRoseArrow(HtmlColor foregroundColor, UFont2 font, Display stringsToDisplay,
public AbstractComponentRoseArrow(HtmlColor foregroundColor, FontConfiguration font, Display stringsToDisplay,
ArrowConfiguration arrowConfiguration, ISkinSimple spriteContainer, HorizontalAlignment textHorizontalAlignment,
double maxMessageSize) {
super(stringsToDisplay, font, textHorizontalAlignment, 7, 7, 1, spriteContainer,

View File

@ -28,15 +28,15 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15913 $
* Revision $Revision: 15967 $
*
*/
package net.sourceforge.plantuml.skin.rose;
import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.SymbolContext;
import net.sourceforge.plantuml.skin.AbstractComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
@ -48,19 +48,14 @@ import net.sourceforge.plantuml.ugraphic.UTranslate;
public class ComponentRoseActiveLine extends AbstractComponent {
private final HtmlColor foregroundColor;
private final HtmlColor lifeLineBackground;
private final SymbolContext symbolContext;
private final boolean closeUp;
private final boolean closeDown;
private final boolean withShadow;
public ComponentRoseActiveLine(HtmlColor lifeLineBackground, HtmlColor foregroundColor, boolean closeUp,
boolean closeDown, boolean withShadow) {
this.foregroundColor = foregroundColor;
this.lifeLineBackground = lifeLineBackground;
public ComponentRoseActiveLine(SymbolContext symbolContext, boolean closeUp, boolean closeDown) {
this.symbolContext = symbolContext;
this.closeUp = closeUp;
this.closeDown = closeDown;
this.withShadow = withShadow;
}
protected void drawInternalU(UGraphic ug, Area area) {
@ -69,15 +64,16 @@ public class ComponentRoseActiveLine extends AbstractComponent {
final int x = (int) (dimensionToUse.getWidth() - getPreferredWidth(stringBounder)) / 2;
final URectangle rect = new URectangle(getPreferredWidth(stringBounder), dimensionToUse.getHeight());
if (withShadow) {
if (symbolContext.isShadowing()) {
rect.setDeltaShadow(1);
}
ug = ug.apply(new UChangeColor(foregroundColor));
ug = ug.apply(new UChangeColor(symbolContext.getForeColor()));
if (closeUp && closeDown) {
ug.apply(new UChangeBackColor(lifeLineBackground)).apply(new UTranslate(x, 0)).draw(rect);
ug.apply(new UChangeBackColor(symbolContext.getBackColor())).apply(new UTranslate(x, 0)).draw(rect);
return;
}
ug.apply(new UChangeBackColor(lifeLineBackground)).apply(new UChangeColor(lifeLineBackground)).apply(new UTranslate(x, 0)).draw(rect);
ug.apply(new UChangeBackColor(symbolContext.getBackColor())).apply(new UChangeColor(symbolContext.getBackColor()))
.apply(new UTranslate(x, 0)).draw(rect);
final ULine vline = new ULine(0, dimensionToUse.getHeight());
ug.apply(new UTranslate(x, 0)).draw(vline);

View File

@ -28,7 +28,7 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15913 $
* Revision $Revision: 15955 $
*
*/
package net.sourceforge.plantuml.skin.rose;
@ -37,18 +37,17 @@ import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.SymbolContext;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.skin.BiColor;
import net.sourceforge.plantuml.skin.StickMan;
import net.sourceforge.plantuml.ugraphic.UFont;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UStroke;
import net.sourceforge.plantuml.ugraphic.UTranslate;
public class ComponentRoseActor extends AbstractTextualComponent {
@ -56,13 +55,12 @@ public class ComponentRoseActor extends AbstractTextualComponent {
private final TextBlock stickman;
private final boolean head;
public ComponentRoseActor(BiColor biColor, UFont2 font, Display stringsToDisplay,
boolean head, ISkinSimple spriteContainer, double deltaShadow, UStroke stroke,
UFont fontForStereotype, HtmlColor htmlColorForStereotype) {
super(stringsToDisplay, font, HorizontalAlignment.CENTER, 3, 3, 0,
spriteContainer, 0, false, fontForStereotype, htmlColorForStereotype);
public ComponentRoseActor(SymbolContext biColor, FontConfiguration font, Display stringsToDisplay, boolean head,
ISkinSimple spriteContainer, UFont fontForStereotype, HtmlColor htmlColorForStereotype) {
super(stringsToDisplay, font, HorizontalAlignment.CENTER, 3, 3, 0, spriteContainer, 0, false,
fontForStereotype, htmlColorForStereotype);
this.head = head;
this.stickman = new StickMan(biColor.getYellowBack(), biColor.getRedBorder(), deltaShadow, stroke.getThickness());
this.stickman = new StickMan(biColor);
}
@Override

View File

@ -38,6 +38,7 @@ import java.awt.geom.Point2D;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
@ -51,7 +52,6 @@ import net.sourceforge.plantuml.skin.ArrowPart;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UEllipse;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.ULine;
import net.sourceforge.plantuml.ugraphic.UPolygon;
@ -63,7 +63,7 @@ public class ComponentRoseArrow extends AbstractComponentRoseArrow {
private final HorizontalAlignment messagePosition;
private final boolean niceArrow;
public ComponentRoseArrow(HtmlColor foregroundColor, UFont2 font, Display stringsToDisplay, ArrowConfiguration arrowConfiguration, HorizontalAlignment messagePosition, ISkinSimple spriteContainer,
public ComponentRoseArrow(HtmlColor foregroundColor, FontConfiguration font, Display stringsToDisplay, ArrowConfiguration arrowConfiguration, HorizontalAlignment messagePosition, ISkinSimple spriteContainer,
HorizontalAlignment textHorizontalAlignment, double maxMessageSize, boolean niceArrow) {
super(foregroundColor, font, stringsToDisplay, arrowConfiguration, spriteContainer, textHorizontalAlignment, maxMessageSize);
this.messagePosition = messagePosition;

View File

@ -37,18 +37,17 @@ import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.SymbolContext;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.skin.BiColor;
import net.sourceforge.plantuml.svek.Boundary;
import net.sourceforge.plantuml.ugraphic.UFont;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UStroke;
import net.sourceforge.plantuml.ugraphic.UTranslate;
public class ComponentRoseBoundary extends AbstractTextualComponent {
@ -56,13 +55,12 @@ public class ComponentRoseBoundary extends AbstractTextualComponent {
private final TextBlock stickman;
private final boolean head;
public ComponentRoseBoundary(BiColor biColor, UFont2 font, Display stringsToDisplay,
boolean head, ISkinSimple spriteContainer, double deltaShadow, UStroke stroke,
UFont fontForStereotype, HtmlColor htmlColorForStereotype) {
super(stringsToDisplay, font, HorizontalAlignment.CENTER, 3, 3, 0,
spriteContainer, 0, false, fontForStereotype, htmlColorForStereotype);
public ComponentRoseBoundary(SymbolContext biColor, FontConfiguration font, Display stringsToDisplay, boolean head,
ISkinSimple spriteContainer, UFont fontForStereotype, HtmlColor htmlColorForStereotype) {
super(stringsToDisplay, font, HorizontalAlignment.CENTER, 3, 3, 0, spriteContainer, 0, false,
fontForStereotype, htmlColorForStereotype);
this.head = head;
this.stickman = new Boundary(biColor.getYellowBack(), biColor.getRedBorder(), deltaShadow, stroke.getThickness());
this.stickman = new Boundary(biColor);
}
@Override

View File

@ -37,18 +37,17 @@ import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.SymbolContext;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.skin.BiColor;
import net.sourceforge.plantuml.svek.Control;
import net.sourceforge.plantuml.ugraphic.UFont;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UStroke;
import net.sourceforge.plantuml.ugraphic.UTranslate;
public class ComponentRoseControl extends AbstractTextualComponent {
@ -56,13 +55,12 @@ public class ComponentRoseControl extends AbstractTextualComponent {
private final TextBlock stickman;
private final boolean head;
public ComponentRoseControl(BiColor biColor, UFont2 font, Display stringsToDisplay,
boolean head, ISkinSimple spriteContainer, double deltaShadow, UStroke stroke,
UFont fontForStereotype, HtmlColor htmlColorForStereotype) {
super(stringsToDisplay, font, HorizontalAlignment.CENTER, 3, 3, 0,
spriteContainer, 0, false, fontForStereotype, htmlColorForStereotype);
public ComponentRoseControl(SymbolContext biColor, FontConfiguration font, Display stringsToDisplay, boolean head,
ISkinSimple spriteContainer, UFont fontForStereotype, HtmlColor htmlColorForStereotype) {
super(stringsToDisplay, font, HorizontalAlignment.CENTER, 3, 3, 0, spriteContainer, 0, false,
fontForStereotype, htmlColorForStereotype);
this.head = head;
this.stickman = new Control(biColor.getYellowBack(), biColor.getRedBorder(), deltaShadow, stroke.getThickness());
this.stickman = new Control(biColor);
}
@Override

View File

@ -37,6 +37,7 @@ import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
@ -46,9 +47,7 @@ import net.sourceforge.plantuml.graphic.TextBlockUtils;
import net.sourceforge.plantuml.graphic.USymbol;
import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.skin.BiColor;
import net.sourceforge.plantuml.ugraphic.UFont;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UStroke;
import net.sourceforge.plantuml.ugraphic.UTranslate;
@ -58,16 +57,14 @@ public class ComponentRoseDatabase extends AbstractTextualComponent {
private final TextBlock stickman;
private final boolean head;
public ComponentRoseDatabase(BiColor biColor, UFont2 font, Display stringsToDisplay,
boolean head, ISkinSimple spriteContainer, double deltaShadow, UStroke stroke,
UFont fontForStereotype, HtmlColor htmlColorForStereotype) {
super(stringsToDisplay, font, HorizontalAlignment.CENTER, 3, 3, 0,
spriteContainer, 0, false, fontForStereotype, htmlColorForStereotype);
public ComponentRoseDatabase(SymbolContext biColor, FontConfiguration font, Display stringsToDisplay, boolean head,
ISkinSimple spriteContainer, UFont fontForStereotype, HtmlColor htmlColorForStereotype) {
super(stringsToDisplay, font, HorizontalAlignment.CENTER, 3, 3, 0, spriteContainer, 0, false,
fontForStereotype, htmlColorForStereotype);
this.head = head;
// this.stickman = new Control(yellow, red, deltaShadow, stroke.getThickness());
final SymbolContext symbolContext = new SymbolContext(biColor.getYellowBack(), biColor.getRedBorder()).withStroke(new UStroke(1.5)).withShadow(
deltaShadow > 0);
final SymbolContext symbolContext = new SymbolContext(biColor.getBackColor(), biColor.getForeColor())
.withStroke(new UStroke(1.5)).withShadow(biColor.getDeltaShadow() > 0);
this.stickman = USymbol.DATABASE.asSmall(TextBlockUtils.empty(16, 17), TextBlockUtils.empty(0, 0),
symbolContext);
}

View File

@ -37,18 +37,18 @@ import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UTranslate;
public class ComponentRoseDelayText extends AbstractTextualComponent {
public ComponentRoseDelayText(UFont2 font, Display stringsToDisplay, ISkinSimple spriteContainer) {
public ComponentRoseDelayText(FontConfiguration font, Display stringsToDisplay, ISkinSimple spriteContainer) {
super(stringsToDisplay, font, HorizontalAlignment.CENTER, 0, 0, 4,
spriteContainer, 0, false, null, null);
}

View File

@ -37,6 +37,7 @@ import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.HtmlColorUtils;
@ -46,7 +47,6 @@ import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.ULine;
import net.sourceforge.plantuml.ugraphic.URectangle;
@ -61,7 +61,7 @@ public class ComponentRoseDivider extends AbstractTextualComponent {
private final boolean withShadow;
private final UStroke stroke;
public ComponentRoseDivider(UFont2 font, HtmlColor background, Display stringsToDisplay,
public ComponentRoseDivider(FontConfiguration font, HtmlColor background, Display stringsToDisplay,
ISkinSimple spriteContainer, boolean withShadow, UStroke stroke) {
super(stringsToDisplay, font, HorizontalAlignment.CENTER, 4, 4, 4,
spriteContainer, 0, false, null, null);

View File

@ -37,35 +37,29 @@ import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.SymbolContext;
import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.URectangle;
import net.sourceforge.plantuml.ugraphic.UTranslate;
public class ComponentRoseEnglober extends AbstractTextualComponent {
private final HtmlColor borderColor;
private final HtmlColor backColor;
private final SymbolContext symbolContext;
public ComponentRoseEnglober(HtmlColor backColor, HtmlColor borderColor, Display strings, UFont2 font,
ISkinSimple spriteContainer) {
super(strings, font, HorizontalAlignment.CENTER, 3, 3, 1, spriteContainer, 0, false,
null, null);
this.borderColor = borderColor;
this.backColor = backColor;
public ComponentRoseEnglober(SymbolContext symbolContext, Display strings, FontConfiguration font, ISkinSimple spriteContainer) {
super(strings, font, HorizontalAlignment.CENTER, 3, 3, 1, spriteContainer, 0, false, null, null);
this.symbolContext = symbolContext;
}
@Override
protected void drawBackgroundInternalU(UGraphic ug, Area area) {
final Dimension2D dimensionToUse = area.getDimensionToUse();
ug = ug.apply(new UChangeBackColor(backColor)).apply(new UChangeColor(borderColor));
ug = symbolContext.apply(ug);
ug.draw(new URectangle(dimensionToUse.getWidth(), dimensionToUse.getHeight()));
final double xpos = (dimensionToUse.getWidth() - getPureTextWidth(ug.getStringBounder())) / 2;
getTextBlock().drawU(ug.apply(new UTranslate(xpos, 0)));

View File

@ -37,18 +37,17 @@ import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.SymbolContext;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.skin.BiColor;
import net.sourceforge.plantuml.svek.EntityDomain;
import net.sourceforge.plantuml.ugraphic.UFont;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UStroke;
import net.sourceforge.plantuml.ugraphic.UTranslate;
public class ComponentRoseEntity extends AbstractTextualComponent {
@ -56,13 +55,12 @@ public class ComponentRoseEntity extends AbstractTextualComponent {
private final TextBlock stickman;
private final boolean head;
public ComponentRoseEntity(BiColor biColor, UFont2 font, Display stringsToDisplay,
boolean head, ISkinSimple spriteContainer, double deltaShadow, UStroke stroke,
UFont fontForStereotype, HtmlColor htmlColorForStereotype) {
super(stringsToDisplay, font, HorizontalAlignment.CENTER, 3, 3, 0,
spriteContainer, 0, false, fontForStereotype, htmlColorForStereotype);
public ComponentRoseEntity(SymbolContext biColor, FontConfiguration font, Display stringsToDisplay, boolean head,
ISkinSimple spriteContainer, UFont fontForStereotype, HtmlColor htmlColorForStereotype) {
super(stringsToDisplay, font, HorizontalAlignment.CENTER, 3, 3, 0, spriteContainer, 0, false,
fontForStereotype, htmlColorForStereotype);
this.head = head;
this.stickman = new EntityDomain(biColor.getYellowBack(), biColor.getRedBorder(), deltaShadow, stroke.getThickness());
this.stickman = new EntityDomain(biColor);
}
@Override

View File

@ -28,7 +28,7 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15908 $
* Revision $Revision: 15934 $
*
*/
package net.sourceforge.plantuml.skin.rose;
@ -36,6 +36,7 @@ package net.sourceforge.plantuml.skin.rose;
import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
@ -43,7 +44,6 @@ import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.ULine;
import net.sourceforge.plantuml.ugraphic.URectangle;
@ -54,15 +54,16 @@ public class ComponentRoseGroupingElse extends AbstractTextualComponent {
private final HtmlColor groupBorder;
private final HtmlColor backgroundColor;
private final UStroke stroke;
public ComponentRoseGroupingElse(HtmlColor groupBorder, UFont2 smallFont, CharSequence comment,
ISkinSimple spriteContainer, HtmlColor backgroundColor, UStroke stroke) {
super(comment == null ? null : "[" + comment + "]", smallFont, HorizontalAlignment.LEFT, 5,
5, 1, spriteContainer, 0, null, null);
// private final UStroke stroke;
public ComponentRoseGroupingElse(HtmlColor groupBorder, FontConfiguration smallFont, CharSequence comment,
ISkinSimple spriteContainer, HtmlColor backgroundColor) {
super(comment == null ? null : "[" + comment + "]", smallFont, HorizontalAlignment.LEFT, 5, 5, 1,
spriteContainer, 0, null, null);
this.groupBorder = groupBorder;
this.backgroundColor = backgroundColor;
this.stroke = stroke;
// this.stroke = stroke;
}
@Override

View File

@ -28,7 +28,7 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15913 $
* Revision $Revision: 15964 $
*
*/
package net.sourceforge.plantuml.skin.rose;
@ -41,15 +41,14 @@ import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.SymbolContext;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.graphic.TextBlockUtils;
import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.skin.BiColor;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UFont;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UPolygon;
import net.sourceforge.plantuml.ugraphic.URectangle;
@ -63,28 +62,21 @@ public class ComponentRoseGroupingHeader extends AbstractTextualComponent {
private final TextBlock commentTextBlock;
private final HtmlColor groupBackground;
private final HtmlColor groupBorder;
private final HtmlColor background;
private final double deltaShadow;
private final UStroke stroke;
private final SymbolContext symbolContext;
public ComponentRoseGroupingHeader(HtmlColor background, BiColor biColor,
UFont2 bigFont, UFont smallFont, Display strings, ISkinSimple spriteContainer, double deltaShadow,
UStroke stroke) {
super(strings.get(0), bigFont, HorizontalAlignment.LEFT, 15, 30, 1,
spriteContainer, 0, null, null);
this.groupBackground = biColor.getYellowBack();
this.groupBorder = biColor.getRedBorder();
public ComponentRoseGroupingHeader(HtmlColor background, SymbolContext symbolContext, FontConfiguration bigFont, UFont smallFont,
Display strings, ISkinSimple spriteContainer) {
super(strings.get(0), bigFont, HorizontalAlignment.LEFT, 15, 30, 1, spriteContainer, 0, null, null);
this.symbolContext = symbolContext;
this.background = background;
this.stroke = stroke;
this.deltaShadow = deltaShadow;
if (strings.size() == 1 || strings.get(1) == null) {
this.commentTextBlock = null;
} else {
final Display display = Display.getWithNewlines("[" + strings.get(1) + "]");
this.commentTextBlock = TextBlockUtils.create(display, new FontConfiguration(smallFont, bigFont.getColor(),
bigFont.getHyperlinkColor(), bigFont.useUnderlineForHyperlink()), HorizontalAlignment.LEFT, spriteContainer);
bigFont.getHyperlinkColor(), bigFont.useUnderlineForHyperlink()), HorizontalAlignment.LEFT,
spriteContainer);
}
if (this.background == null) {
throw new IllegalArgumentException();
@ -125,16 +117,16 @@ public class ComponentRoseGroupingHeader extends AbstractTextualComponent {
@Override
protected void drawBackgroundInternalU(UGraphic ug, Area area) {
final Dimension2D dimensionToUse = area.getDimensionToUse();
ug = ug.apply(stroke).apply(new UChangeColor(groupBorder));
ug = symbolContext.applyStroke(ug).apply(new UChangeColor(symbolContext.getForeColor()));
final URectangle rect = new URectangle(dimensionToUse.getWidth(), dimensionToUse.getHeight());
rect.setDeltaShadow(deltaShadow);
rect.setDeltaShadow(symbolContext.getDeltaShadow());
ug.apply(new UChangeBackColor(background)).draw(rect);
}
@Override
protected void drawInternalU(UGraphic ug, Area area) {
final Dimension2D dimensionToUse = area.getDimensionToUse();
ug = ug.apply(stroke).apply(new UChangeColor(groupBorder));
ug = symbolContext.applyStroke(ug).apply(new UChangeColor(symbolContext.getForeColor()));
final URectangle rect = new URectangle(dimensionToUse.getWidth(), dimensionToUse.getHeight());
ug.draw(rect);
@ -152,7 +144,7 @@ public class ComponentRoseGroupingHeader extends AbstractTextualComponent {
polygon.addPoint(0, textHeight);
polygon.addPoint(0, 0);
ug.apply(new UChangeColor(groupBorder)).apply(new UChangeBackColor(groupBackground)).draw(polygon);
symbolContext.applyColors(ug).draw(polygon);
ug = ug.apply(new UStroke());

View File

@ -28,7 +28,7 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15913 $
* Revision $Revision: 15961 $
*
*/
package net.sourceforge.plantuml.skin.rose;
@ -36,15 +36,15 @@ package net.sourceforge.plantuml.skin.rose;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.creole.Stencil;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.SymbolContext;
import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.skin.BiColor;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UGraphicStencil;
import net.sourceforge.plantuml.ugraphic.ULine;
@ -55,34 +55,27 @@ import net.sourceforge.plantuml.ugraphic.UTranslate;
final public class ComponentRoseNote extends AbstractTextualComponent implements Stencil {
private final int cornersize = 10;
private final HtmlColor back;
private final HtmlColor foregroundColor;
private final double paddingX;
private final double paddingY;
private final double deltaShadow;
private final UStroke stroke;
private final SymbolContext symbolContext;
public ComponentRoseNote(BiColor biColor, UFont2 font, Display strings,
double paddingX, double paddingY, ISkinSimple spriteContainer, double deltaShadow, UStroke stroke) {
super(strings, font, HorizontalAlignment.LEFT, 6, 15, 5, spriteContainer, 0, true,
null, null);
this.back = biColor.getYellowBack();
this.foregroundColor = biColor.getRedBorder();
public ComponentRoseNote(SymbolContext symbolContext, FontConfiguration font, Display strings, double paddingX, double paddingY,
ISkinSimple spriteContainer) {
super(strings, font, HorizontalAlignment.LEFT, 6, 15, 5, spriteContainer, 0, true, null, null);
this.paddingX = paddingX;
this.paddingY = paddingY;
this.deltaShadow = deltaShadow;
this.stroke = stroke;
this.symbolContext = symbolContext;
}
@Override
final public double getPreferredWidth(StringBounder stringBounder) {
final double result = getTextWidth(stringBounder) + 2 * getPaddingX() + deltaShadow;
final double result = getTextWidth(stringBounder) + 2 * getPaddingX() + symbolContext.getDeltaShadow();
return result;
}
@Override
final public double getPreferredHeight(StringBounder stringBounder) {
return getTextHeight(stringBounder) + 2 * getPaddingY() + deltaShadow;
return getTextHeight(stringBounder) + 2 * getPaddingY() + symbolContext.getDeltaShadow();
}
@Override
@ -117,10 +110,9 @@ final public class ComponentRoseNote extends AbstractTextualComponent implements
polygon.addPoint(x2, cornersize);
polygon.addPoint(x2 - cornersize, 0);
polygon.addPoint(0, 0);
polygon.setDeltaShadow(deltaShadow);
polygon.setDeltaShadow(symbolContext.getDeltaShadow());
ug = ug.apply(new UChangeBackColor(back)).apply(new UChangeColor(foregroundColor));
ug = ug.apply(stroke);
ug = symbolContext.apply(ug);
ug.draw(polygon);
ug.apply(new UTranslate(x2 - cornersize, 0)).draw(new ULine(0, cornersize));

View File

@ -35,15 +35,12 @@ package net.sourceforge.plantuml.skin.rose;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.SymbolContext;
import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.skin.BiColor;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.URectangle;
import net.sourceforge.plantuml.ugraphic.UStroke;
@ -51,19 +48,12 @@ import net.sourceforge.plantuml.ugraphic.UTranslate;
final public class ComponentRoseNoteBox extends AbstractTextualComponent {
private final HtmlColor back;
private final HtmlColor foregroundColor;
private final double deltaShadow;
private final UStroke stroke;
private final SymbolContext symbolContext;
public ComponentRoseNoteBox(BiColor biColor, UFont2 font,
Display strings, ISkinSimple spriteContainer, double deltaShadow, UStroke stroke) {
super(strings, font, HorizontalAlignment.LEFT, 4, 4, 4, spriteContainer, 0, false,
null, null);
this.back = biColor.getYellowBack();
this.foregroundColor = biColor.getRedBorder();
this.deltaShadow = deltaShadow;
this.stroke = stroke;
public ComponentRoseNoteBox(SymbolContext symbolContext, FontConfiguration font, Display strings,
ISkinSimple spriteContainer) {
super(strings, font, HorizontalAlignment.LEFT, 4, 4, 4, spriteContainer, 0, false, null, null);
this.symbolContext = symbolContext;
}
@Override
@ -101,10 +91,9 @@ final public class ComponentRoseNoteBox extends AbstractTextualComponent {
x2 = (int) (area.getDimensionToUse().getWidth() - 2 * getPaddingX());
}
ug = ug.apply(new UChangeBackColor(back)).apply(new UChangeColor(foregroundColor));
ug = ug.apply(stroke);
ug = symbolContext.apply(ug);
final URectangle rect = new URectangle(x2, textHeight);
rect.setDeltaShadow(deltaShadow);
rect.setDeltaShadow(symbolContext.getDeltaShadow());
ug.draw(rect);
ug = ug.apply(new UStroke());

View File

@ -35,15 +35,12 @@ package net.sourceforge.plantuml.skin.rose;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.SymbolContext;
import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.skin.BiColor;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UPolygon;
import net.sourceforge.plantuml.ugraphic.UStroke;
@ -52,19 +49,13 @@ import net.sourceforge.plantuml.ugraphic.UTranslate;
final public class ComponentRoseNoteHexagonal extends AbstractTextualComponent {
private final int cornersize = 10;
private final HtmlColor back;
private final HtmlColor foregroundColor;
private final double deltaShadow;
private final UStroke stroke;
private final SymbolContext symbolContext;
public ComponentRoseNoteHexagonal(BiColor biColor, UFont2 font,
Display strings, ISkinSimple spriteContainer, double deltaShadow, UStroke stroke) {
super(strings, font, HorizontalAlignment.LEFT, 12, 12, 4, spriteContainer, 0, false,
null, null);
this.back = biColor.getYellowBack();
this.foregroundColor = biColor.getRedBorder();
this.deltaShadow = deltaShadow;
this.stroke = stroke;
public ComponentRoseNoteHexagonal(SymbolContext symbolContext, FontConfiguration font, Display strings,
ISkinSimple spriteContainer) {
super(strings, font, HorizontalAlignment.LEFT, 12, 12, 4, spriteContainer, 0, false, null, null);
this.symbolContext = symbolContext;
}
@Override
@ -111,9 +102,8 @@ final public class ComponentRoseNoteHexagonal extends AbstractTextualComponent {
polygon.addPoint(0, textHeight / 2);
polygon.addPoint(cornersize, 0);
ug = ug.apply(new UChangeBackColor(back)).apply(new UChangeColor(foregroundColor));
polygon.setDeltaShadow(deltaShadow);
ug = ug.apply(stroke);
ug = symbolContext.apply(ug);
polygon.setDeltaShadow(symbolContext.getDeltaShadow());
ug.draw(polygon);
ug = ug.apply(new UStroke());

View File

@ -28,24 +28,24 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15913 $
* Revision $Revision: 15953 $
*
*/
package net.sourceforge.plantuml.skin.rose;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.SymbolContext;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.skin.BiColor;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UFont;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.URectangle;
import net.sourceforge.plantuml.ugraphic.UStroke;
@ -59,16 +59,16 @@ public class ComponentRoseParticipant extends AbstractTextualComponent {
private final double roundCorner;
private final UStroke stroke;
public ComponentRoseParticipant(BiColor biColor, UFont2 font,
Display stringsToDisplay, ISkinSimple spriteContainer, double deltaShadow, double roundCorner,
UStroke stroke, UFont fontForStereotype, HtmlColor htmlColorForStereotype) {
super(stringsToDisplay, font, HorizontalAlignment.CENTER, 7, 7, 7,
spriteContainer, 0, false, fontForStereotype, htmlColorForStereotype);
this.back = biColor.getYellowBack();
public ComponentRoseParticipant(SymbolContext biColor, FontConfiguration font, Display stringsToDisplay,
ISkinSimple spriteContainer, double roundCorner, UFont fontForStereotype,
HtmlColor htmlColorForStereotype) {
super(stringsToDisplay, font, HorizontalAlignment.CENTER, 7, 7, 7, spriteContainer, 0, false,
fontForStereotype, htmlColorForStereotype);
this.back = biColor.getBackColor();
this.roundCorner = roundCorner;
this.deltaShadow = deltaShadow;
this.foregroundColor = biColor.getRedBorder();
this.stroke = stroke;
this.deltaShadow = biColor.getDeltaShadow();
this.foregroundColor = biColor.getForeColor();
this.stroke = biColor.getStroke();
}
@Override

View File

@ -41,14 +41,11 @@ import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.SymbolContext;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.graphic.TextBlockUtils;
import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UFont;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UPolygon;
import net.sourceforge.plantuml.ugraphic.URectangle;
@ -57,31 +54,23 @@ import net.sourceforge.plantuml.ugraphic.UTranslate;
public class ComponentRoseReference extends AbstractTextualComponent {
private final HtmlColor backgroundHeader;
private final HtmlColor borderColor;
private final HtmlColor background;
private final int cornersize = 10;
private final TextBlock textHeader;
private final double heightFooter = 5;
private final double xMargin = 2;
private final HorizontalAlignment position;
private final double deltaShadow;
private final UStroke stroke;
private final SymbolContext symbolContext;
public ComponentRoseReference(HtmlColor fontHeaderColor, UFont2 font, HtmlColor backgroundHeader,
HtmlColor borderColor, HtmlColor background, UFont header, Display stringsToDisplay,
HorizontalAlignment position, ISkinSimple spriteContainer, double deltaShadow, UStroke stroke) {
public ComponentRoseReference(FontConfiguration font, SymbolContext symbolContext, FontConfiguration header,
Display stringsToDisplay, HorizontalAlignment position, ISkinSimple spriteContainer, HtmlColor background) {
super(stringsToDisplay.subList(1, stringsToDisplay.size()), font, HorizontalAlignment.LEFT, 4, 4, 4,
spriteContainer, 0, false, null, null);
this.position = position;
this.backgroundHeader = backgroundHeader;
this.symbolContext = symbolContext;
this.background = background;
this.borderColor = borderColor;
this.deltaShadow = deltaShadow;
this.stroke = stroke;
textHeader = TextBlockUtils.create(stringsToDisplay.subList(0, 1), new FontConfiguration(header,
fontHeaderColor, font.getHyperlinkColor(), font.useUnderlineForHyperlink()), HorizontalAlignment.LEFT,
this.textHeader = TextBlockUtils.create(stringsToDisplay.subList(0, 1), header, HorizontalAlignment.LEFT,
spriteContainer);
}
@ -93,11 +82,11 @@ public class ComponentRoseReference extends AbstractTextualComponent {
final int textHeaderWidth = (int) (getHeaderWidth(stringBounder));
final int textHeaderHeight = (int) (getHeaderHeight(stringBounder));
ug = ug.apply(stroke);
final URectangle rect = new URectangle(dimensionToUse.getWidth() - xMargin * 2 - deltaShadow,
dimensionToUse.getHeight() - heightFooter);
rect.setDeltaShadow(deltaShadow);
ug = ug.apply(new UChangeBackColor(background)).apply(new UChangeColor(borderColor));
final URectangle rect = new URectangle(
dimensionToUse.getWidth() - xMargin * 2 - symbolContext.getDeltaShadow(), dimensionToUse.getHeight()
- heightFooter);
rect.setDeltaShadow(symbolContext.getDeltaShadow());
ug = symbolContext.withBackColor(background).apply(ug);
ug.apply(new UTranslate(xMargin, 0)).draw(rect);
final UPolygon polygon = new UPolygon();
@ -110,7 +99,7 @@ public class ComponentRoseReference extends AbstractTextualComponent {
polygon.addPoint(0, textHeaderHeight);
polygon.addPoint(0, 0);
ug = ug.apply(new UChangeBackColor(backgroundHeader)).apply(new UChangeColor(borderColor));
ug = symbolContext.apply(ug);
ug.apply(new UTranslate(xMargin, 0)).draw(polygon);
ug = ug.apply(new UStroke());
@ -146,7 +135,8 @@ public class ComponentRoseReference extends AbstractTextualComponent {
@Override
public double getPreferredWidth(StringBounder stringBounder) {
return Math.max(getTextWidth(stringBounder), getHeaderWidth(stringBounder)) + xMargin * 2 + deltaShadow;
return Math.max(getTextWidth(stringBounder), getHeaderWidth(stringBounder)) + xMargin * 2
+ symbolContext.getDeltaShadow();
}
}

View File

@ -28,7 +28,7 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15908 $
* Revision $Revision: 15934 $
*
*/
package net.sourceforge.plantuml.skin.rose;
@ -38,6 +38,7 @@ import java.awt.geom.Point2D;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
@ -49,7 +50,6 @@ import net.sourceforge.plantuml.skin.ArrowPart;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UEllipse;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.ULine;
import net.sourceforge.plantuml.ugraphic.UPolygon;
@ -61,7 +61,7 @@ public class ComponentRoseSelfArrow extends AbstractComponentRoseArrow {
private final double arrowWidth = 45;
private final boolean niceArrow;
public ComponentRoseSelfArrow(HtmlColor foregroundColor, UFont2 font, Display stringsToDisplay,
public ComponentRoseSelfArrow(HtmlColor foregroundColor, FontConfiguration font, Display stringsToDisplay,
ArrowConfiguration arrowConfiguration, ISkinSimple spriteContainer, double maxMessageSize,
boolean niceArrow) {
super(foregroundColor, font, stringsToDisplay, arrowConfiguration, spriteContainer, HorizontalAlignment.LEFT,

View File

@ -28,19 +28,19 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15908 $
* Revision $Revision: 15934 $
*
*/
package net.sourceforge.plantuml.skin.rose;
import net.sourceforge.plantuml.ISkinSimple;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.skin.AbstractTextualComponent;
import net.sourceforge.plantuml.skin.Area;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UTranslate;
@ -48,7 +48,7 @@ public class ComponentRoseTitle extends AbstractTextualComponent {
private final int outMargin = 5;
public ComponentRoseTitle(UFont2 font, Display stringsToDisplay, ISkinSimple spriteContainer) {
public ComponentRoseTitle(FontConfiguration font, Display stringsToDisplay, ISkinSimple spriteContainer) {
super(stringsToDisplay, font, HorizontalAlignment.CENTER, 7, 7, 7,
spriteContainer, 0, false, null, null);
}

View File

@ -28,7 +28,7 @@
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 15913 $
* Revision $Revision: 15981 $
*
*/
package net.sourceforge.plantuml.skin.rose;
@ -40,17 +40,17 @@ import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.LineParam;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.cucadiagram.Stereotype;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.HtmlColorUtils;
import net.sourceforge.plantuml.graphic.SymbolContext;
import net.sourceforge.plantuml.skin.ArrowConfiguration;
import net.sourceforge.plantuml.skin.ArrowDirection;
import net.sourceforge.plantuml.skin.BiColor;
import net.sourceforge.plantuml.skin.Component;
import net.sourceforge.plantuml.skin.ComponentType;
import net.sourceforge.plantuml.skin.Skin;
import net.sourceforge.plantuml.ugraphic.UFont;
import net.sourceforge.plantuml.ugraphic.UFont2;
import net.sourceforge.plantuml.ugraphic.UStroke;
public class Rose implements Skin {
@ -77,37 +77,18 @@ public class Rose implements Skin {
return result;
}
private UFont2 getUFont2(ISkinParam param, FontParam fontParam) {
private FontConfiguration getUFont2(ISkinParam param, FontParam fontParam) {
final UFont font = param.getFont(fontParam, null, false);
final HtmlColor fontColor = getFontColor(param, fontParam);
return font.toFont2(fontColor, param.useUnderlineForHyperlink(), param.getHyperlinkColor());
return new FontConfiguration(font, fontColor, param.getHyperlinkColor(), param.useUnderlineForHyperlink());
}
public Component createComponent(ComponentType type, ArrowConfiguration config, ISkinParam param,
Display stringsToDisplay) {
final HtmlColor background = param.getBackgroundColor();
final HtmlColor hyperlinkColor = param.getHyperlinkColor();
final boolean useUnderlineForHyperlink = param.useUnderlineForHyperlink();
final HtmlColor groupBorder = getHtmlColor(param, ColorParam.sequenceGroupBorder);
final HtmlColor groupBackground = getHtmlColor(param, ColorParam.sequenceGroupBackground);
final HtmlColor sequenceDividerBackground = getHtmlColor(param, ColorParam.sequenceDividerBackground);
final HtmlColor sequenceReferenceBackground = getHtmlColor(param, ColorParam.sequenceReferenceBackground);
final HtmlColor sequenceReferenceHeaderBackground = getHtmlColor(param,
ColorParam.sequenceReferenceHeaderBackground);
final HtmlColor sequenceReferenceBorder = getHtmlColor(param, ColorParam.sequenceReferenceBorder);
final HtmlColor lifeLineBackgroundColor = getHtmlColor(param, ColorParam.sequenceLifeLineBackground);
final HtmlColor sequenceActorBackground = getHtmlColor(param, ColorParam.actorBackground);
final HtmlColor sequenceParticipantBackground = getHtmlColor(param, ColorParam.participantBackground);
// final UFont fontArrow = param.getFont(FontParam.SEQUENCE_ARROW, null, false);
final UFont fontGrouping = param.getFont(FontParam.SEQUENCE_GROUP, null, false);
// final UFont fontParticipant = param.getFont(FontParam.PARTICIPANT, null, false);
// final UFont fontActor = param.getFont(FontParam.ACTOR, null, false);
final UFont newFontForStereotype = param.getFont(FontParam.SEQUENCE_STEREOTYPE, null, false);
final double deltaShadow = param.shadowing() ? 4.0 : 0;
if (type.isArrow()) {
// if (param.maxMessageSize() > 0) {
// final FontConfiguration fc = new FontConfiguration(fontArrow, HtmlColorUtils.BLACK);
@ -128,18 +109,14 @@ public class Rose implements Skin {
param.strictUmlStyle() == false);
}
if (type == ComponentType.PARTICIPANT_HEAD) {
final HtmlColor borderColor = getHtmlColor(param, ColorParam.participantBorder);
return new ComponentRoseParticipant(new BiColor(sequenceParticipantBackground, borderColor), getUFont2(
param, FontParam.PARTICIPANT), stringsToDisplay, param, deltaShadow, param.getRoundCorner(),
getStroke(param, LineParam.sequenceParticipantBorder, 1.5), newFontForStereotype, getFontColor(
param, FontParam.SEQUENCE_STEREOTYPE));
return new ComponentRoseParticipant(getSymbolContext(param, ColorParam.participantBorder), getUFont2(param,
FontParam.PARTICIPANT), stringsToDisplay, param, param.getRoundCorner(), newFontForStereotype,
getFontColor(param, FontParam.SEQUENCE_STEREOTYPE));
}
if (type == ComponentType.PARTICIPANT_TAIL) {
final HtmlColor borderColor = getHtmlColor(param, ColorParam.participantBorder);
return new ComponentRoseParticipant(new BiColor(sequenceParticipantBackground, borderColor), getUFont2(
param, FontParam.PARTICIPANT), stringsToDisplay, param, deltaShadow, param.getRoundCorner(),
getStroke(param, LineParam.sequenceParticipantBorder, 1.5), newFontForStereotype, getFontColor(
param, FontParam.SEQUENCE_STEREOTYPE));
return new ComponentRoseParticipant(getSymbolContext(param, ColorParam.participantBorder), getUFont2(param,
FontParam.PARTICIPANT), stringsToDisplay, param, param.getRoundCorner(), newFontForStereotype,
getFontColor(param, FontParam.SEQUENCE_STEREOTYPE));
}
if (type == ComponentType.PARTICIPANT_LINE) {
final HtmlColor borderColor = getHtmlColor(param, ColorParam.sequenceLifeLineBorder);
@ -150,171 +127,170 @@ public class Rose implements Skin {
return new ComponentRoseLine(borderColor, true, getStroke(param, LineParam.sequenceLifeLineBorder, 1.5));
}
if (type == ComponentType.ACTOR_HEAD) {
final HtmlColor borderColor = getHtmlColor(param, ColorParam.actorBorder);
return new ComponentRoseActor(new BiColor(sequenceActorBackground, borderColor), getUFont2(param,
FontParam.ACTOR), stringsToDisplay, true, param, deltaShadow, getStroke(param,
LineParam.sequenceActorBorder, 2), newFontForStereotype, getFontColor(param,
return new ComponentRoseActor(getSymbolContext(param, ColorParam.actorBorder), getUFont2(param,
FontParam.ACTOR), stringsToDisplay, true, param, newFontForStereotype, getFontColor(param,
FontParam.SEQUENCE_STEREOTYPE));
}
if (type == ComponentType.ACTOR_TAIL) {
final HtmlColor borderColor = getHtmlColor(param, ColorParam.actorBorder);
return new ComponentRoseActor(new BiColor(sequenceActorBackground, borderColor), getUFont2(param,
FontParam.ACTOR), stringsToDisplay, false, param, deltaShadow, getStroke(param,
LineParam.sequenceActorBorder, 2), newFontForStereotype, getFontColor(param,
return new ComponentRoseActor(getSymbolContext(param, ColorParam.actorBorder), getUFont2(param,
FontParam.ACTOR), stringsToDisplay, false, param, newFontForStereotype, getFontColor(param,
FontParam.SEQUENCE_STEREOTYPE));
}
if (type == ComponentType.BOUNDARY_HEAD) {
final HtmlColor borderColor = getHtmlColor(param, ColorParam.actorBorder);
return new ComponentRoseBoundary(new BiColor(sequenceActorBackground, borderColor), getUFont2(param,
FontParam.ACTOR), stringsToDisplay, true, param, deltaShadow, getStroke(param,
LineParam.sequenceActorBorder, 2), newFontForStereotype, getFontColor(param,
return new ComponentRoseBoundary(getSymbolContext(param, ColorParam.actorBorder), getUFont2(param,
FontParam.ACTOR), stringsToDisplay, true, param, newFontForStereotype, getFontColor(param,
FontParam.SEQUENCE_STEREOTYPE));
}
if (type == ComponentType.BOUNDARY_TAIL) {
final HtmlColor borderColor = getHtmlColor(param, ColorParam.actorBorder);
return new ComponentRoseBoundary(new BiColor(sequenceActorBackground, borderColor), getUFont2(param,
FontParam.ACTOR), stringsToDisplay, false, param, deltaShadow, getStroke(param,
LineParam.sequenceActorBorder, 2), newFontForStereotype, getFontColor(param,
return new ComponentRoseBoundary(getSymbolContext(param, ColorParam.actorBorder), getUFont2(param,
FontParam.ACTOR), stringsToDisplay, false, param, newFontForStereotype, getFontColor(param,
FontParam.SEQUENCE_STEREOTYPE));
}
if (type == ComponentType.CONTROL_HEAD) {
final HtmlColor borderColor = getHtmlColor(param, ColorParam.actorBorder);
return new ComponentRoseControl(new BiColor(sequenceActorBackground, borderColor), getUFont2(param, FontParam.ACTOR),
stringsToDisplay, true, param, deltaShadow, getStroke(param, LineParam.sequenceActorBorder, 2),
newFontForStereotype, getFontColor(param, FontParam.SEQUENCE_STEREOTYPE));
return new ComponentRoseControl(getSymbolContext(param, ColorParam.actorBorder), getUFont2(param,
FontParam.ACTOR), stringsToDisplay, true, param, newFontForStereotype, getFontColor(param,
FontParam.SEQUENCE_STEREOTYPE));
}
if (type == ComponentType.CONTROL_TAIL) {
final HtmlColor borderColor = getHtmlColor(param, ColorParam.actorBorder);
return new ComponentRoseControl(new BiColor(sequenceActorBackground, borderColor), getUFont2(param, FontParam.ACTOR),
stringsToDisplay, false, param, deltaShadow, getStroke(param, LineParam.sequenceActorBorder, 2),
newFontForStereotype, getFontColor(param, FontParam.SEQUENCE_STEREOTYPE));
return new ComponentRoseControl(getSymbolContext(param, ColorParam.actorBorder), getUFont2(param,
FontParam.ACTOR), stringsToDisplay, false, param, newFontForStereotype, getFontColor(param,
FontParam.SEQUENCE_STEREOTYPE));
}
if (type == ComponentType.ENTITY_HEAD) {
final HtmlColor borderColor = getHtmlColor(param, ColorParam.actorBorder);
return new ComponentRoseEntity(new BiColor(sequenceActorBackground, borderColor), getUFont2(param, FontParam.ACTOR),
stringsToDisplay, true, param, deltaShadow, getStroke(param, LineParam.sequenceActorBorder, 2),
newFontForStereotype, getFontColor(param, FontParam.SEQUENCE_STEREOTYPE));
return new ComponentRoseEntity(getSymbolContext(param, ColorParam.actorBorder), getUFont2(param,
FontParam.ACTOR), stringsToDisplay, true, param, newFontForStereotype, getFontColor(param,
FontParam.SEQUENCE_STEREOTYPE));
}
if (type == ComponentType.ENTITY_TAIL) {
final HtmlColor borderColor = getHtmlColor(param, ColorParam.actorBorder);
return new ComponentRoseEntity(new BiColor(sequenceActorBackground, borderColor), getUFont2(param, FontParam.ACTOR),
stringsToDisplay, false, param, deltaShadow, getStroke(param, LineParam.sequenceActorBorder, 2),
newFontForStereotype, getFontColor(param, FontParam.SEQUENCE_STEREOTYPE));
return new ComponentRoseEntity(getSymbolContext(param, ColorParam.actorBorder), getUFont2(param,
FontParam.ACTOR), stringsToDisplay, false, param, newFontForStereotype, getFontColor(param,
FontParam.SEQUENCE_STEREOTYPE));
}
if (type == ComponentType.DATABASE_HEAD) {
final HtmlColor borderColor = getHtmlColor(param, ColorParam.actorBorder);
return new ComponentRoseDatabase(new BiColor(sequenceActorBackground, borderColor), getUFont2(param, FontParam.ACTOR),
stringsToDisplay, true, param, deltaShadow, getStroke(param, LineParam.sequenceActorBorder, 2),
newFontForStereotype, getFontColor(param, FontParam.SEQUENCE_STEREOTYPE));
return new ComponentRoseDatabase(getSymbolContext(param, ColorParam.actorBorder), getUFont2(param,
FontParam.ACTOR), stringsToDisplay, true, param, newFontForStereotype, getFontColor(param,
FontParam.SEQUENCE_STEREOTYPE));
}
if (type == ComponentType.DATABASE_TAIL) {
final HtmlColor borderColor = getHtmlColor(param, ColorParam.actorBorder);
return new ComponentRoseDatabase(new BiColor(sequenceActorBackground, borderColor), getUFont2(param, FontParam.ACTOR),
stringsToDisplay, false, param, deltaShadow, getStroke(param, LineParam.sequenceActorBorder, 2),
newFontForStereotype, getFontColor(param, FontParam.SEQUENCE_STEREOTYPE));
return new ComponentRoseDatabase(getSymbolContext(param, ColorParam.actorBorder), getUFont2(param,
FontParam.ACTOR), stringsToDisplay, false, param, newFontForStereotype, getFontColor(param,
FontParam.SEQUENCE_STEREOTYPE));
}
if (type == ComponentType.NOTE) {
final HtmlColor noteBackgroundColor = getHtmlColor(param, ColorParam.noteBackground);
final HtmlColor borderColor = getHtmlColor(param, ColorParam.noteBorder);
final UFont fontNote = param.getFont(FontParam.NOTE, null, false);
return new ComponentRoseNote(new BiColor(noteBackgroundColor, borderColor), fontNote.toFont2(
getFontColor(param, FontParam.NOTE), useUnderlineForHyperlink, hyperlinkColor), stringsToDisplay,
paddingX, paddingY, param, deltaShadow, getStroke(param, LineParam.noteBorder, 1));
return new ComponentRoseNote(getSymbolContext(param, ColorParam.noteBorder), getUFont2(param,
FontParam.NOTE), stringsToDisplay, paddingX, paddingY, param);
}
if (type == ComponentType.NOTE_HEXAGONAL) {
final HtmlColor noteBackgroundColor = getHtmlColor(param, ColorParam.noteBackground);
final HtmlColor borderColor = getHtmlColor(param, ColorParam.noteBorder);
final UFont fontNote = param.getFont(FontParam.NOTE, null, false);
return new ComponentRoseNoteHexagonal(new BiColor(noteBackgroundColor, borderColor), fontNote.toFont2(
getFontColor(param, FontParam.NOTE), useUnderlineForHyperlink, hyperlinkColor), stringsToDisplay,
param, deltaShadow, getStroke(param, LineParam.noteBorder, 1));
return new ComponentRoseNoteHexagonal(getSymbolContext(param, ColorParam.noteBorder), getUFont2(param,
FontParam.NOTE), stringsToDisplay, param);
}
if (type == ComponentType.NOTE_BOX) {
final HtmlColor noteBackgroundColor = getHtmlColor(param, ColorParam.noteBackground);
final HtmlColor borderColor = getHtmlColor(param, ColorParam.noteBorder);
final UFont fontNote = param.getFont(FontParam.NOTE, null, false);
return new ComponentRoseNoteBox(new BiColor(noteBackgroundColor, borderColor), fontNote.toFont2(
getFontColor(param, FontParam.NOTE), useUnderlineForHyperlink, hyperlinkColor), stringsToDisplay,
param, deltaShadow, getStroke(param, LineParam.noteBorder, 1));
return new ComponentRoseNoteBox(getSymbolContext(param, ColorParam.noteBorder), getUFont2(param,
FontParam.NOTE), stringsToDisplay, param);
}
if (type == ComponentType.GROUPING_HEADER) {
return new ComponentRoseGroupingHeader(background, new BiColor(groupBackground, groupBorder), getUFont2(param,
FontParam.SEQUENCE_GROUP_HEADER), fontGrouping, stringsToDisplay, param, deltaShadow, getStroke(
param, LineParam.sequenceGroupBorder, 2));
return new ComponentRoseGroupingHeader(param.getBackgroundColor(), getSymbolContext(param,
ColorParam.sequenceGroupBorder), getUFont2(param, FontParam.SEQUENCE_GROUP_HEADER), fontGrouping,
stringsToDisplay, param);
}
if (type == ComponentType.GROUPING_ELSE) {
return new ComponentRoseGroupingElse(groupBorder, getUFont2(param, FontParam.SEQUENCE_GROUP),
stringsToDisplay.get(0), param, background, getStroke(param, LineParam.sequenceGroupBorder, 2));
return new ComponentRoseGroupingElse(getHtmlColor(param, ColorParam.sequenceGroupBorder), getUFont2(param,
FontParam.SEQUENCE_GROUP), stringsToDisplay.get(0), param, param.getBackgroundColor());
}
if (type == ComponentType.GROUPING_SPACE) {
return new ComponentRoseGroupingSpace(7);
}
if (type == ComponentType.ALIVE_BOX_CLOSE_CLOSE) {
final HtmlColor borderColor = getHtmlColor(param, ColorParam.sequenceLifeLineBorder);
return new ComponentRoseActiveLine(lifeLineBackgroundColor, borderColor, true, true, deltaShadow > 0);
return new ComponentRoseActiveLine(getSymbolContext(param, ColorParam.sequenceLifeLineBorder), true, true);
}
if (type == ComponentType.ALIVE_BOX_CLOSE_OPEN) {
final HtmlColor borderColor = getHtmlColor(param, ColorParam.sequenceLifeLineBorder);
return new ComponentRoseActiveLine(lifeLineBackgroundColor, borderColor, true, false, deltaShadow > 0);
return new ComponentRoseActiveLine(getSymbolContext(param, ColorParam.sequenceLifeLineBorder), true, false);
}
if (type == ComponentType.ALIVE_BOX_OPEN_CLOSE) {
final HtmlColor borderColor = getHtmlColor(param, ColorParam.sequenceLifeLineBorder);
return new ComponentRoseActiveLine(lifeLineBackgroundColor, borderColor, false, true, deltaShadow > 0);
return new ComponentRoseActiveLine(getSymbolContext(param, ColorParam.sequenceLifeLineBorder), false, true);
}
if (type == ComponentType.ALIVE_BOX_OPEN_OPEN) {
final HtmlColor borderColor = getHtmlColor(param, ColorParam.sequenceLifeLineBorder);
return new ComponentRoseActiveLine(lifeLineBackgroundColor, borderColor, false, false, deltaShadow > 0);
return new ComponentRoseActiveLine(getSymbolContext(param, ColorParam.sequenceLifeLineBorder), false, false);
}
if (type == ComponentType.DELAY_LINE) {
final HtmlColor borderColor = getHtmlColor(param, ColorParam.sequenceLifeLineBorder);
return new ComponentRoseDelayLine(borderColor);
return new ComponentRoseDelayLine(getHtmlColor(param, ColorParam.sequenceLifeLineBorder));
}
if (type == ComponentType.DELAY_TEXT) {
return new ComponentRoseDelayText(param.getFont(FontParam.SEQUENCE_DELAY, null, false).toFont2(
getFontColor(param, FontParam.SEQUENCE_DELAY), useUnderlineForHyperlink, hyperlinkColor),
stringsToDisplay, param);
return new ComponentRoseDelayText(getUFont2(param, FontParam.SEQUENCE_DELAY), stringsToDisplay, param);
}
if (type == ComponentType.DESTROY) {
final HtmlColor borderColor = getHtmlColor(param, ColorParam.sequenceLifeLineBorder);
return new ComponentRoseDestroy(borderColor);
return new ComponentRoseDestroy(getHtmlColor(param, ColorParam.sequenceLifeLineBorder));
}
if (type == ComponentType.NEWPAGE) {
return new ComponentRoseNewpage(getFontColor(param, FontParam.SEQUENCE_GROUP));
}
if (type == ComponentType.DIVIDER) {
return new ComponentRoseDivider(param.getFont(FontParam.SEQUENCE_DIVIDER, null, false).toFont2(
getFontColor(param, FontParam.SEQUENCE_DIVIDER), useUnderlineForHyperlink, hyperlinkColor),
sequenceDividerBackground, stringsToDisplay, param, deltaShadow > 0, getStroke(param,
LineParam.sequenceDividerBorder, 2));
return new ComponentRoseDivider(getUFont2(param, FontParam.SEQUENCE_DIVIDER), getHtmlColor(param,
ColorParam.sequenceDividerBackground), stringsToDisplay, param, deltaShadow(param) > 0, getStroke(
param, LineParam.sequenceDividerBorder, 2));
}
if (type == ComponentType.REFERENCE) {
final UFont fontGroupingHeader = param.getFont(FontParam.SEQUENCE_GROUP_HEADER, null, false);
return new ComponentRoseReference(getFontColor(param, FontParam.SEQUENCE_GROUP), getUFont2(param,
FontParam.SEQUENCE_REFERENCE), sequenceReferenceHeaderBackground, sequenceReferenceBorder,
sequenceReferenceBackground, fontGroupingHeader, stringsToDisplay,
param.getHorizontalAlignment(AlignParam.SEQUENCE_REFERENCE_ALIGN), param, deltaShadow, getStroke(
param, LineParam.sequenceReferenceBorder, 2));
return new ComponentRoseReference(getUFont2(param, FontParam.SEQUENCE_REFERENCE), getSymbolContext(param,
ColorParam.sequenceReferenceBorder), getUFont2(param, FontParam.SEQUENCE_GROUP_HEADER),
stringsToDisplay, param.getHorizontalAlignment(AlignParam.SEQUENCE_REFERENCE_ALIGN), param,
getHtmlColor(param, ColorParam.sequenceReferenceBackground));
}
if (type == ComponentType.TITLE) {
return new ComponentRoseTitle(param.getFont(FontParam.SEQUENCE_TITLE, null, false).toFont2(
getFontColor(param, FontParam.SEQUENCE_TITLE), useUnderlineForHyperlink, hyperlinkColor),
stringsToDisplay, param);
return new ComponentRoseTitle(getUFont2(param, FontParam.SEQUENCE_TITLE), stringsToDisplay, param);
}
if (type == ComponentType.SIGNATURE) {
return new ComponentRoseTitle(fontGrouping.toFont2(HtmlColorUtils.BLACK, useUnderlineForHyperlink,
hyperlinkColor), Display.create("This skin was created ", "in April 2009."), param);
return new ComponentRoseTitle(fontGrouping.toFont2(HtmlColorUtils.BLACK, param.useUnderlineForHyperlink(),
param.getHyperlinkColor()), Display.create("This skin was created ", "in April 2009."), param);
}
if (type == ComponentType.ENGLOBER) {
final HtmlColor borderColor = getHtmlColor(param, ColorParam.sequenceBoxBorder);
final HtmlColor backColor = getHtmlColor(param, ColorParam.sequenceBoxBackground);
return new ComponentRoseEnglober(backColor, borderColor, stringsToDisplay, param.getFont(
FontParam.SEQUENCE_BOX, null, false).toFont2(getFontColor(param, FontParam.SEQUENCE_BOX),
useUnderlineForHyperlink, hyperlinkColor), param);
return new ComponentRoseEnglober(getSymbolContext(param, ColorParam.sequenceBoxBorder), stringsToDisplay,
getUFont2(param, FontParam.SEQUENCE_BOX), param);
}
return null;
}
private double deltaShadow(ISkinParam param) {
return param.shadowing() ? 4.0 : 0;
}
private SymbolContext getSymbolContext(ISkinParam param, ColorParam color) {
if (color == ColorParam.participantBorder) {
return new SymbolContext(getHtmlColor(param, ColorParam.participantBackground), getHtmlColor(param,
ColorParam.participantBorder)).withStroke(
getStroke(param, LineParam.sequenceParticipantBorder, 1.5)).withDeltaShadow(deltaShadow(param));
}
if (color == ColorParam.actorBorder) {
return new SymbolContext(getHtmlColor(param, ColorParam.actorBackground), getHtmlColor(param,
ColorParam.actorBorder)).withStroke(getStroke(param, LineParam.sequenceActorBorder, 2))
.withDeltaShadow(deltaShadow(param));
}
if (color == ColorParam.sequenceLifeLineBorder) {
return new SymbolContext(getHtmlColor(param, ColorParam.sequenceLifeLineBackground), getHtmlColor(param,
ColorParam.sequenceLifeLineBorder)).withDeltaShadow(deltaShadow(param));
}
if (color == ColorParam.noteBorder) {
return new SymbolContext(getHtmlColor(param, ColorParam.noteBackground), getHtmlColor(param,
ColorParam.noteBorder)).withStroke(getStroke(param, LineParam.noteBorder, 1)).withDeltaShadow(
deltaShadow(param));
}
if (color == ColorParam.sequenceGroupBorder) {
return new SymbolContext(getHtmlColor(param, ColorParam.sequenceGroupBackground), getHtmlColor(param,
ColorParam.sequenceGroupBorder)).withStroke(getStroke(param, LineParam.sequenceGroupBorder, 2))
.withDeltaShadow(deltaShadow(param));
}
if (color == ColorParam.sequenceBoxBorder) {
return new SymbolContext(getHtmlColor(param, ColorParam.sequenceBoxBackground), getHtmlColor(param,
ColorParam.sequenceBoxBorder));
}
if (color == ColorParam.sequenceReferenceBorder) {
return new SymbolContext(getHtmlColor(param, ColorParam.sequenceReferenceHeaderBackground), getHtmlColor(
param, ColorParam.sequenceReferenceBorder)).withStroke(
getStroke(param, LineParam.sequenceReferenceBorder, 2)).withDeltaShadow(deltaShadow(param));
}
throw new IllegalArgumentException();
}
static public UStroke getStroke(ISkinParam param, LineParam lineParam, double defaultValue) {
final UStroke result = param.getThickness(lineParam, null);
if (result == null) {

View File

@ -38,12 +38,12 @@ import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.SymbolContext;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UEllipse;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.ULine;
import net.sourceforge.plantuml.ugraphic.UPath;
import net.sourceforge.plantuml.ugraphic.UStroke;
import net.sourceforge.plantuml.ugraphic.UTranslate;
@ -54,17 +54,11 @@ public class Boundary implements TextBlock {
private final double radius = 12;
private final double left = 17;
private final HtmlColor backgroundColor;
private final HtmlColor foregroundColor;
private final double thickness;
private final SymbolContext symbolContext;
private final double deltaShadow;
public Boundary(HtmlColor backgroundColor, HtmlColor foregroundColor, double deltaShadow, double thickness) {
this.backgroundColor = backgroundColor;
this.foregroundColor = foregroundColor;
this.deltaShadow = deltaShadow;
this.thickness = thickness;
public Boundary(SymbolContext symbolContext) {
this.symbolContext = symbolContext;
}
public void drawU(UGraphic ug) {
@ -72,22 +66,21 @@ public class Boundary implements TextBlock {
double y = 0;
x += margin;
y += margin;
ug = ug.apply(new UStroke(thickness)).apply(new UChangeBackColor(backgroundColor))
.apply(new UChangeColor(foregroundColor));
ug = symbolContext.apply(ug);
final UEllipse circle = new UEllipse(radius * 2, radius * 2);
circle.setDeltaShadow(deltaShadow);
circle.setDeltaShadow(symbolContext.getDeltaShadow());
final UPath path1 = new UPath();
path1.moveTo(0, 0);
path1.lineTo(0, radius * 2);
path1.setDeltaShadow(deltaShadow);
path1.setDeltaShadow(symbolContext.getDeltaShadow());
final UPath path = new UPath();
path.moveTo(0, 0);
path.lineTo(0, radius * 2);
path.moveTo(0, radius);
path.lineTo(left, radius);
path.setDeltaShadow(deltaShadow);
path.setDeltaShadow(symbolContext.getDeltaShadow());
ug.apply(new UTranslate(x, y)).draw(path);
// final ULine line1 = new ULine(0, radius * 2);

View File

@ -38,6 +38,7 @@ import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.SymbolContext;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
@ -52,17 +53,10 @@ public class Control implements TextBlock {
private final double margin = 4;
private final double radius = 12;
private final HtmlColor backgroundColor;
private final HtmlColor foregroundColor;
private final double thickness;
private final SymbolContext symbolContext;
private final double deltaShadow;
public Control(HtmlColor backgroundColor, HtmlColor foregroundColor, double deltaShadow, double thickness) {
this.backgroundColor = backgroundColor;
this.foregroundColor = foregroundColor;
this.deltaShadow = deltaShadow;
this.thickness = thickness;
public Control(SymbolContext symbolContext) {
this.symbolContext = symbolContext;
}
public void drawU(UGraphic ug) {
@ -70,14 +64,13 @@ public class Control implements TextBlock {
double y = 0;
x += margin;
y += margin;
ug = ug.apply(new UStroke(thickness));
ug = ug.apply(new UChangeBackColor(backgroundColor)).apply(new UChangeColor(foregroundColor));
ug = symbolContext.apply(ug);
final UEllipse circle = new UEllipse(radius * 2, radius * 2);
circle.setDeltaShadow(deltaShadow);
circle.setDeltaShadow(symbolContext.getDeltaShadow());
ug.apply(new UTranslate(x, y)).draw(circle);
ug = ug.apply(new UStroke());
ug = ug.apply(new UChangeBackColor(foregroundColor));
ug = ug.apply(new UChangeBackColor(symbolContext.getForeColor()));
final UPolygon polygon = new UPolygon();
polygon.addPoint(0, 0);
final int xAile = 6;

View File

@ -36,15 +36,12 @@ package net.sourceforge.plantuml.svek;
import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.SymbolContext;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.ugraphic.UChangeBackColor;
import net.sourceforge.plantuml.ugraphic.UChangeColor;
import net.sourceforge.plantuml.ugraphic.UEllipse;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.ULine;
import net.sourceforge.plantuml.ugraphic.UStroke;
import net.sourceforge.plantuml.ugraphic.UTranslate;
public class EntityDomain implements TextBlock {
@ -53,17 +50,10 @@ public class EntityDomain implements TextBlock {
private final double radius = 12;
private final double suppY = 2;
private final HtmlColor backgroundColor;
private final HtmlColor foregroundColor;
private final double thickness;
private final SymbolContext symbolContext;
private final double deltaShadow;
public EntityDomain(HtmlColor backgroundColor, HtmlColor foregroundColor, double deltaShadow, double thickness) {
this.backgroundColor = backgroundColor;
this.foregroundColor = foregroundColor;
this.deltaShadow = deltaShadow;
this.thickness = thickness;
public EntityDomain(SymbolContext symbolContext) {
this.symbolContext = symbolContext;
}
public void drawU(UGraphic ug) {
@ -71,10 +61,9 @@ public class EntityDomain implements TextBlock {
double y = 0;
x += margin;
y += margin;
ug = ug.apply(new UStroke(thickness)).apply(new UChangeBackColor(backgroundColor))
.apply(new UChangeColor(foregroundColor));
ug = symbolContext.apply(ug);
final UEllipse circle = new UEllipse(radius * 2, radius * 2);
circle.setDeltaShadow(deltaShadow);
circle.setDeltaShadow(symbolContext.getDeltaShadow());
ug.apply(new UTranslate(x, y)).draw(circle);
ug.apply(new UTranslate(x, y + 2 * radius + suppY)).draw(new ULine(2 * radius, 0));
}

View File

@ -86,7 +86,7 @@ public class EntityImageComponent extends AbstractEntityImage {
// backcolor = HtmlColorUtils.BLUE;
final HtmlColor forecolor = SkinParamUtils.getColor(getSkinParam(), symbol.getColorParamBorder(), getStereo());
final SymbolContext ctx = new SymbolContext(backcolor, forecolor).withStroke(new UStroke(1.5)).withShadow(
getSkinParam().shadowing());
getSkinParam().shadowing2(symbol.getSkinParameter()));
TextBlock stereo = TextBlockUtils.empty(0, 0);

View File

@ -51,6 +51,7 @@ import net.sourceforge.plantuml.cucadiagram.IEntity;
import net.sourceforge.plantuml.cucadiagram.ILeaf;
import net.sourceforge.plantuml.cucadiagram.Stereotype;
import net.sourceforge.plantuml.graph2.GeomUtils;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.StringBounder;
@ -106,8 +107,9 @@ public class EntityImageNote extends AbstractEntityImage implements Stencil {
if (strings.size() == 1 && strings.get(0).length() == 0) {
textBlock = new TextBlockEmpty();
} else {
textBlock = new BodyEnhanced2(strings, FontParam.NOTE, skinParam, HorizontalAlignment.LEFT, fontNote,
fontColor, skinParam.getHyperlinkColor(), skinParam.useUnderlineForHyperlink());
textBlock = new BodyEnhanced2(strings, FontParam.NOTE, skinParam, HorizontalAlignment.LEFT,
new FontConfiguration(fontNote, fontColor, skinParam.getHyperlinkColor(),
skinParam.useUnderlineForHyperlink()));
}
}

View File

@ -83,7 +83,7 @@ public class TikzGraphics {
out(os, "\\usepackage{aeguill}");
// out(os, "\\usetikzlibrary{trees}");
out(os, "\\begin{document}");
out(os, "% generated by Plantuml " + Version.versionString());
out(os, "% generated by Plantuml " + Version.versionString(10));
for (Map.Entry<Color, String> ent : colornames.entrySet()) {
out(os, definecolor(ent.getValue(), ent.getKey()));

View File

@ -39,6 +39,7 @@ import java.awt.Graphics2D;
import java.awt.font.FontRenderContext;
import java.awt.font.LineMetrics;
import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HtmlColor;
import net.sourceforge.plantuml.graphic.TextBlockUtils;
@ -60,8 +61,8 @@ public class UFont {
return font;
}
public UFont2 toFont2(HtmlColor color, boolean useUnderlineForHyperlink, HtmlColor hyperlinkColor) {
return new UFont2(this, color, useUnderlineForHyperlink, hyperlinkColor);
public FontConfiguration toFont2(HtmlColor color, boolean useUnderlineForHyperlink, HtmlColor hyperlinkColor) {
return new FontConfiguration(this, color, hyperlinkColor, useUnderlineForHyperlink);
}
public UFont scaled(double scale) {

View File

@ -1,69 +0,0 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2014, Arnaud Roques
*
* Project Info: http://plantuml.sourceforge.net
*
* 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.
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc.
* in the United States and other countries.]
*
* Original Author: Arnaud Roques
*
* Revision $Revision: 3837 $
*
*/
package net.sourceforge.plantuml.ugraphic;
import net.sourceforge.plantuml.graphic.HtmlColor;
public class UFont2 {
private final UFont font;
private final HtmlColor color;
private final HtmlColor hyperlinkColor;
private final boolean useUnderlineForHyperlink;
public UFont2(UFont font, HtmlColor color, boolean useUnderlineForHyperlink, HtmlColor hyperlinkColor) {
this.font = font;
this.color = color;
this.hyperlinkColor = hyperlinkColor;
this.useUnderlineForHyperlink = useUnderlineForHyperlink;
}
public final UFont getFont() {
return font;
}
public boolean useUnderlineForHyperlink() {
return useUnderlineForHyperlink;
}
public HtmlColor getHyperlinkColor() {
return hyperlinkColor;
}
public HtmlColor getColor() {
return color;
}
}

View File

@ -43,6 +43,10 @@ public class MathUtils {
return Math.max(Math.max(a, b), c);
}
public static double max(double a, double b, double c, double d) {
return Math.max(Math.max(a, b), Math.max(c, d));
}
public static double limitation(double v, double min, double max) {
if (min >= max) {
// assert false : "min="+min+" max="+max+" v="+v;

Some files were not shown because too many files have changed in this diff Show More