1
0
mirror of https://github.com/octoleo/plantuml.git synced 2024-11-26 06:46:45 +00:00

Improve style support

This commit is contained in:
Arnaud Roques 2021-09-19 19:05:24 +02:00
parent 463f691f94
commit 6fdb340b37
16 changed files with 236 additions and 80 deletions

View File

@ -265,16 +265,16 @@ public class NwDiagram extends UmlDiagram {
};
}
private StyleSignature getStyleDefinitionNetwork() {
return StyleSignature.of(SName.root, SName.element, SName.nwdiagDiagram, SName.network);
private StyleSignature getStyleDefinitionNetwork(SName sname) {
return StyleSignature.of(SName.root, SName.element, SName.nwdiagDiagram, sname);
}
private TextBlock toTextBlock(String name, String s) {
private TextBlock toTextBlockForNetworkName(String name, String s) {
if (s != null) {
name += "\\n" + s;
}
final StyleBuilder styleBuilder = getSkinParam().getCurrentStyleBuilder();
final Style style = getStyleDefinitionNetwork().getMergedStyle(styleBuilder);
final Style style = getStyleDefinitionNetwork(SName.network).getMergedStyle(styleBuilder);
final FontConfiguration fontConfiguration = style.getFontConfiguration(getSkinParam().getThemeStyle(),
getSkinParam().getIHtmlColorSet());
return Display.getWithNewlines(name).create(fontConfiguration, HorizontalAlignment.RIGHT,
@ -304,7 +304,7 @@ public class NwDiagram extends UmlDiagram {
for (int i = 0; i < networks.size(); i++) {
final Network current = networks.get(i);
final String address = current.getOwnAdress();
final TextBlock desc = toTextBlock(current.getDisplayName(), address);
final TextBlock desc = toTextBlockForNetworkName(current.getDisplayName(), address);
final Dimension2D dim = desc.calculateDimension(stringBounder);
if (i == 0) {
deltaY = (dim.getHeight() - GridTextBlockDecorated.NETWORK_THIN) / 2;
@ -315,7 +315,7 @@ public class NwDiagram extends UmlDiagram {
for (int i = 0; i < networks.size(); i++) {
final Network current = networks.get(i);
final String address = current.getOwnAdress();
final TextBlock desc = toTextBlock(current.getDisplayName(), address);
final TextBlock desc = toTextBlockForNetworkName(current.getDisplayName(), address);
final Dimension2D dim = desc.calculateDimension(stringBounder);
desc.drawU(ug.apply(new UTranslate(deltaX - dim.getWidth(), y)));

View File

@ -88,7 +88,7 @@ public class NServer {
return connections.get(network);
}
private TextBlock toTextBlock(String s, ISkinParam skinParam) {
private TextBlock toTextBlock(String s, ISkinParam skinParam, SName sname) {
if (s == null) {
return null;
}
@ -96,32 +96,32 @@ public class NServer {
return TextBlockUtils.empty(0, 0);
}
s = s.replace(", ", "\\n");
return Display.getWithNewlines(s).create(getFontConfiguration(skinParam), HorizontalAlignment.LEFT, skinParam);
return Display.getWithNewlines(s).create(getFontConfiguration(skinParam, sname), HorizontalAlignment.LEFT,
skinParam);
}
private StyleSignature getStyleDefinition() {
return StyleSignature.of(SName.root, SName.element, SName.nwdiagDiagram, SName.server);
private StyleSignature getStyleDefinition(SName sname) {
return StyleSignature.of(SName.root, SName.element, SName.nwdiagDiagram, sname);
}
private FontConfiguration getFontConfiguration(ISkinParam skinParam) {
private FontConfiguration getFontConfiguration(ISkinParam skinParam, SName sname) {
final StyleBuilder styleBuilder = skinParam.getCurrentStyleBuilder();
final Style style = getStyleDefinition().getMergedStyle(styleBuilder);
final Style style = getStyleDefinition(sname).getMergedStyle(styleBuilder);
return style.getFontConfiguration(skinParam.getThemeStyle(), skinParam.getIHtmlColorSet());
}
public LinkedElement asTextBlock(double topMargin, Map<Network, String> conns, List<Network> networks,
ISkinParam skinParam) {
final StyleBuilder styleBuilder = skinParam.getCurrentStyleBuilder();
final Style style = getStyleDefinition().getMergedStyle(styleBuilder);
final SymbolContext symbolContext = style.getSymbolContext(skinParam.getThemeStyle(),
skinParam.getIHtmlColorSet());
final SymbolContext symbolContext = getStyleDefinition(SName.server).getMergedStyle(styleBuilder)
.getSymbolContext(skinParam.getThemeStyle(), skinParam.getIHtmlColorSet());
final Map<Network, TextBlock> conns2 = new LinkedHashMap<Network, TextBlock>();
for (Entry<Network, String> ent : conns.entrySet()) {
conns2.put(ent.getKey(), toTextBlock(ent.getValue(), skinParam));
conns2.put(ent.getKey(), toTextBlock(ent.getValue(), skinParam, SName.arrow));
}
final TextBlock desc = toTextBlock(getDescription(), skinParam);
final TextBlock desc = toTextBlock(getDescription(), skinParam, SName.server);
final TextBlock box = getShape().asSmall(TextBlockUtils.empty(0, 0), desc, TextBlockUtils.empty(0, 0),
symbolContext, HorizontalAlignment.CENTER);
return new LinkedElement(topMargin, this, box, conns2, networks);

View File

@ -36,6 +36,7 @@ package net.sourceforge.plantuml.nwdiag.next;
import java.util.List;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.nwdiag.core.Network;
@ -49,6 +50,7 @@ import net.sourceforge.plantuml.ugraphic.MinMax;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.URectangle;
import net.sourceforge.plantuml.ugraphic.UTranslate;
import net.sourceforge.plantuml.ugraphic.color.HColor;
public class GridTextBlockDecorated extends GridTextBlockSimple {
@ -70,10 +72,17 @@ public class GridTextBlockDecorated extends GridTextBlockSimple {
drawGroups(ug, group, getSkinParam());
}
drawNetworkTube(ug);
drawLinks(ug);
drawLinks(ug, getSkinParam().getCurrentStyleBuilder());
}
private void drawLinks(UGraphic ug) {
private void drawLinks(UGraphic ug, StyleBuilder styleBuilder) {
final Style style = getStyleDefinitionNetwork(SName.arrow).getMergedStyle(styleBuilder);
final HColor lineColor = style.value(PName.LineColor).asColor(getSkinParam().getThemeStyle(),
getSkinParam().getIHtmlColorSet());
ug = ug.apply(lineColor);
final StringBounder stringBounder = ug.getStringBounder();
for (int i = 0; i < data.getNbLines(); i++) {
final double lineHeight = lineHeight(stringBounder, i);
@ -125,8 +134,8 @@ public class GridTextBlockDecorated extends GridTextBlockSimple {
return false;
}
private StyleSignature getStyleDefinitionNetwork() {
return StyleSignature.of(SName.root, SName.element, SName.nwdiagDiagram, SName.network);
private StyleSignature getStyleDefinitionNetwork(SName sname) {
return StyleSignature.of(SName.root, SName.element, SName.nwdiagDiagram, sname);
}
private void drawNetworkTube(UGraphic ug) {
@ -141,7 +150,7 @@ public class GridTextBlockDecorated extends GridTextBlockSimple {
UGraphic ug2 = ug.apply(new UTranslate(network.getXmin(), y));
final StyleBuilder styleBuilder = getSkinParam().getCurrentStyleBuilder();
final Style style = getStyleDefinitionNetwork().getMergedStyle(styleBuilder);
final Style style = getStyleDefinitionNetwork(SName.network).getMergedStyle(styleBuilder);
final double deltaShadow = style.value(PName.Shadowing).asDouble();
ug2 = ug2.apply(style.value(PName.LineColor).asColor(getSkinParam().getThemeStyle(),
getSkinParam().getIHtmlColorSet()));

View File

@ -119,9 +119,6 @@ public class LinkedElement {
final double alpha = yMiddle - dimBox.getHeight() / 2;
final double posLink1 = (yMiddle - dimBox.getHeight() / 2 - topMargin + MAGIC) / 2;
final HColor color = ColorParam.activityBorder.getDefaultValue();
ug = ug.apply(color);
final double xMiddle = width / 2;
final double xLinkPos = width / 2;

View File

@ -75,9 +75,9 @@ public enum SName {
ganttDiagram, //
group, //
groupHeader, //
header, //
hexagon, //
highlight, //
header, //
interface_, //
jsonDiagram, //
gitDiagram, //
@ -92,6 +92,7 @@ public enum SName {
note, //
nwdiagDiagram, //
objectDiagram, //
object, //
package_, //
participant, //
partition, //
@ -108,6 +109,7 @@ public enum SName {
server, //
stack, //
stateDiagram, //
state, //
stereotype, //
storage, //
swimlane, //

View File

@ -295,9 +295,18 @@ public class Cluster implements Moveable {
}
static public StyleSignature getDefaultStyleDefinition(SName styleName) {
if (styleName == SName.stateDiagram)
return StyleSignature.of(SName.root, SName.element, SName.stateDiagram, SName.state, SName.group);
return StyleSignature.of(SName.root, SName.element, styleName, SName.group);
}
static public StyleSignature getDefaultStyleDefinitionStateGroup(Stereotype stereotype) {
if (stereotype == null)
return StyleSignature.of(SName.root, SName.element, SName.stateDiagram, SName.state, SName.group);
return StyleSignature.of(SName.root, SName.element, SName.stateDiagram, SName.state, SName.group)
.with(stereotype);
}
public void drawU(UGraphic ug, UStroke strokeForState, UmlDiagramType umlDiagramType, ISkinParam skinParam2) {
if (group.isHidden()) {
return;
@ -307,8 +316,9 @@ public class Cluster implements Moveable {
ug.draw(new UComment("cluster " + fullName));
}
HColor borderColor;
Style style = null;
if (UseStyle.useBetaStyle()) {
final Style style = getDefaultStyleDefinition(umlDiagramType.getStyleName())
style = getDefaultStyleDefinition(umlDiagramType.getStyleName())
.getMergedStyle(skinParam.getCurrentStyleBuilder());
borderColor = style.value(PName.LineColor).asColor(skinParam2.getThemeStyle(),
skinParam2.getIHtmlColorSet());
@ -360,8 +370,6 @@ public class Cluster implements Moveable {
final double shadowing;
final UStroke stroke;
if (UseStyle.useBetaStyle()) {
final Style style = getDefaultStyleDefinition(umlDiagramType.getStyleName())
.getMergedStyle(skinParam.getCurrentStyleBuilder());
shadowing = style.value(PName.Shadowing).asDouble();
stroke = style.getStroke();
} else {
@ -374,7 +382,7 @@ public class Cluster implements Moveable {
}
stroke = getStrokeInternal(group, skinParam2);
}
HColor backColor = getBackColor(umlDiagramType);
HColor backColor = getBackColor(umlDiagramType, style);
backColor = getBackColor(backColor, skinParam2, group.getStereotype(), umlDiagramType.getStyleName());
if (ztitle != null || zstereo != null) {
final double roundCorner = group.getUSymbol() == null ? 0
@ -409,11 +417,6 @@ public class Cluster implements Moveable {
return group.getUSymbol().getSkinParameter().getStroke(skinParam, group.getStereotype());
}
return GeneralImageBuilder.getForcedStroke(group.getStereotype(), skinParam);
// UStroke stroke = skinParam.getThickness(LineParam.packageBorder, group.getStereotype());
// if (stroke == null) {
// stroke = new UStroke(1.5);
// }
// return stroke;
}
public void manageEntryExitPoint(StringBounder stringBounder) {
@ -455,7 +458,7 @@ public class Cluster implements Moveable {
}
private HColor getColor(ISkinParam skinParam, ColorParam colorParam, Stereotype stereo) {
private HColor getColorLegacy(ISkinParam skinParam, ColorParam colorParam, Stereotype stereo) {
return new Rose().getHtmlColor(skinParam, stereo, colorParam);
}
@ -470,13 +473,18 @@ public class Cluster implements Moveable {
+ IEntityImage.MARGIN_LINE;
}
HColor stateBack = getBackColor(umlDiagramType);
final Style styleGroup = getDefaultStyleDefinitionStateGroup(group.getStereotype())
.getMergedStyle(skinParam.getCurrentStyleBuilder());
HColor stateBack = getBackColor(umlDiagramType, styleGroup);
if (stateBack == null) {
stateBack = getColor(skinParam2, ColorParam.stateBackground, group.getStereotype());
stateBack = getColorLegacy(skinParam2, ColorParam.stateBackground, group.getStereotype());
}
final HColor background = getColor(skinParam2, ColorParam.background, null);
final Style style = getStyle(FontParam.STATE_ATTRIBUTE, skinParam2);
final TextBlock attribute = GeneralImageBuilder.stateHeader(group, style, skinParam2);
final HColor background = getColorLegacy(skinParam2, ColorParam.background, null);
// final Style style = getStyle(FontParam.STATE_ATTRIBUTE, skinParam2);
final TextBlock attribute = GeneralImageBuilder.stateHeader(group, styleGroup, skinParam2);
final double attributeHeight = attribute.calculateDimension(ug.getStringBounder()).getHeight();
if (total.getWidth() == 0) {
System.err.println("Cluster::drawUState issue");
@ -892,7 +900,7 @@ public class Cluster implements Moveable {
return colorTitle;
}
private final HColor getBackColor(final UmlDiagramType umlDiagramType) {
private final HColor getBackColor(UmlDiagramType umlDiagramType, Style style) {
if (EntityUtils.groupRoot(group)) {
return null;
}
@ -901,6 +909,11 @@ public class Cluster implements Moveable {
return result;
}
final Stereotype stereo = group.getStereotype();
if (UseStyle.useBetaStyle()) {
return style.value(PName.BackGroundColor).asColor(skinParam.getThemeStyle(), skinParam.getIHtmlColorSet());
}
final USymbol sym = group.getUSymbol() == null ? USymbol.PACKAGE : group.getUSymbol();
final ColorParam backparam = umlDiagramType == UmlDiagramType.ACTIVITY ? ColorParam.partitionBackground
: sym.getColorParamBack();
@ -911,7 +924,7 @@ public class Cluster implements Moveable {
if (parentCluster == null) {
return null;
}
return parentCluster.getBackColor(umlDiagramType);
return parentCluster.getBackColor(umlDiagramType, style);
}
public boolean isClusterOf(IEntity ent) {

View File

@ -164,7 +164,7 @@ public final class GeneralImageBuilder {
return entityImageClass;
}
if (leaf.getLeafType() == LeafType.NOTE) {
return new EntityImageNote(leaf, skinParam);
return new EntityImageNote(leaf, skinParam, umlDiagramType);
}
if (leaf.getLeafType() == LeafType.ACTIVITY) {
return new EntityImageActivity(leaf, skinParam, bibliotekon);
@ -271,7 +271,7 @@ public final class GeneralImageBuilder {
}
if (leaf.getLeafType() == LeafType.TIPS) {
return new EntityImageTips(leaf, skinParam, bibliotekon);
return new EntityImageTips(leaf, skinParam, bibliotekon, umlDiagramType);
}
// TODO Clean
if (leaf.getLeafType() == LeafType.DOMAIN && leaf.getStereotype() != null

View File

@ -43,6 +43,7 @@ import java.util.Set;
import net.sourceforge.plantuml.ColorParam;
import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.UseStyle;
import net.sourceforge.plantuml.cucadiagram.CucaDiagram;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.cucadiagram.EntityUtils;
@ -62,7 +63,10 @@ import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.graphic.color.ColorType;
import net.sourceforge.plantuml.skin.rose.Rose;
import net.sourceforge.plantuml.style.PName;
import net.sourceforge.plantuml.style.SName;
import net.sourceforge.plantuml.style.Style;
import net.sourceforge.plantuml.style.StyleSignature;
import net.sourceforge.plantuml.svek.image.EntityImageState;
import net.sourceforge.plantuml.ugraphic.UStroke;
import net.sourceforge.plantuml.ugraphic.color.HColor;
@ -119,11 +123,28 @@ public final class GroupPngMakerState {
return result;
}
private Style getStyleHeader() {
return StyleSignature.of(SName.root, SName.element, SName.stateDiagram, SName.state, SName.header)
.with(group.getStereotype()).getMergedStyle(diagram.getSkinParam().getCurrentStyleBuilder());
}
private Style getStyle() {
return StyleSignature.of(SName.root, SName.element, SName.stateDiagram, SName.state).with(group.getStereotype())
.getMergedStyle(diagram.getSkinParam().getCurrentStyleBuilder());
}
public IEntityImage getImage() {
final Display display = group.getDisplay();
final ISkinParam skinParam = diagram.getSkinParam();
final TextBlock title = display.create(new FontConfiguration(skinParam, FontParam.STATE, group.getStereotype()),
HorizontalAlignment.CENTER, diagram.getSkinParam());
final FontConfiguration fontConfiguration;
if (UseStyle.useBetaStyle())
fontConfiguration = getStyleHeader().getFontConfiguration(skinParam.getThemeStyle(),
skinParam.getIHtmlColorSet());
else
fontConfiguration = new FontConfiguration(skinParam, FontParam.STATE, group.getStereotype());
final TextBlock title = display.create(fontConfiguration, HorizontalAlignment.CENTER, diagram.getSkinParam());
if (group.size() == 0 && group.getChildren().size() == 0) {
return new EntityImageState(group, diagram.getSkinParam());
@ -149,12 +170,24 @@ public final class GroupPngMakerState {
HColor borderColor = group.getColors(skinParam).getColor(ColorType.LINE);
if (borderColor == null) {
borderColor = getColor(ColorParam.stateBorder, group.getStereotype());
if (UseStyle.useBetaStyle())
borderColor = getStyle().value(PName.LineColor).asColor(skinParam.getThemeStyle(),
skinParam.getIHtmlColorSet());
else
borderColor = getColor(ColorParam.stateBorder, group.getStereotype());
}
final Stereotype stereo = group.getStereotype();
final HColor backColor = group.getColors(skinParam).getColor(ColorType.BACK) == null
? getColor(ColorParam.stateBackground, stereo)
: group.getColors(skinParam).getColor(ColorType.BACK);
final HColor tmp = group.getColors(skinParam).getColor(ColorType.BACK);
final HColor backColor;
if (tmp == null)
if (UseStyle.useBetaStyle())
backColor = getStyle().value(PName.BackGroundColor).asColor(skinParam.getThemeStyle(),
skinParam.getIHtmlColorSet());
else
backColor = getColor(ColorParam.stateBackground, stereo);
else
backColor = tmp;
final TextBlock attribute = GeneralImageBuilder.stateHeader((IEntity) group, null, skinParam);
final Stereotype stereotype = group.getStereotype();

View File

@ -143,12 +143,8 @@ public class EntityImageClass extends AbstractEntityImage implements Stencil, Wi
}
private Style getStyle() {
return getDefaultStyleDefinition().with(getEntity().getStereotype())
.getMergedStyle(getSkinParam().getCurrentStyleBuilder());
}
private StyleSignature getDefaultStyleDefinition() {
return StyleSignature.of(SName.root, SName.element, SName.classDiagram, SName.class_);
return StyleSignature.of(SName.root, SName.element, SName.classDiagram, SName.class_)
.with(getEntity().getStereotype()).getMergedStyle(getSkinParam().getCurrentStyleBuilder());
}
private void drawInternal(UGraphic ug) {

View File

@ -61,6 +61,7 @@ import net.sourceforge.plantuml.skin.VisibilityModifier;
import net.sourceforge.plantuml.skin.rose.Rose;
import net.sourceforge.plantuml.style.SName;
import net.sourceforge.plantuml.style.Style;
import net.sourceforge.plantuml.style.StyleSignature;
import net.sourceforge.plantuml.svek.AbstractEntityImage;
import net.sourceforge.plantuml.svek.HeaderLayout;
import net.sourceforge.plantuml.svek.ShapeType;
@ -84,7 +85,8 @@ public class EntityImageClassHeader extends AbstractEntityImage {
FontConfiguration fontConfigurationName;
if (UseStyle.useBetaStyle()) {
final Style style = FontParam.CLASS.getStyleDefinition(SName.classDiagram).with(stereotype)
final Style style = StyleSignature
.of(SName.root, SName.element, SName.classDiagram, SName.class_, SName.header).with(stereotype)
.getMergedStyle(skinParam.getCurrentStyleBuilder());
fontConfigurationName = new FontConfiguration(skinParam, style);
} else {

View File

@ -50,6 +50,7 @@ import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.LineParam;
import net.sourceforge.plantuml.SkinParamBackcolored;
import net.sourceforge.plantuml.SkinParamUtils;
import net.sourceforge.plantuml.UmlDiagramType;
import net.sourceforge.plantuml.Url;
import net.sourceforge.plantuml.UseStyle;
import net.sourceforge.plantuml.creole.Stencil;
@ -96,7 +97,7 @@ public class EntityImageNote extends AbstractEntityImage implements Stencil {
private final TextBlock textBlock;
public EntityImageNote(ILeaf entity, ISkinParam skinParam) {
public EntityImageNote(ILeaf entity, ISkinParam skinParam, UmlDiagramType umlDiagramType) {
super(entity, getSkin(getISkinParam(skinParam, entity), entity));
this.skinParam = getISkinParam(skinParam, entity);
@ -106,7 +107,8 @@ public class EntityImageNote extends AbstractEntityImage implements Stencil {
final Rose rose = new Rose();
if (UseStyle.useBetaStyle()) {
final Style style = getDefaultStyleDefinition().getMergedStyle(skinParam.getCurrentStyleBuilder());
final Style style = getDefaultStyleDefinition(umlDiagramType.getStyleName())
.getMergedStyle(skinParam.getCurrentStyleBuilder());
if (entity.getColors(getSkinParam()).getColor(ColorType.BACK) == null) {
this.noteBackgroundColor = style.value(PName.BackGroundColor).asColor(skinParam.getThemeStyle(),
skinParam.getIHtmlColorSet());
@ -201,8 +203,8 @@ public class EntityImageNote extends AbstractEntityImage implements Stencil {
return new Dimension2DDouble(width, height);
}
public StyleSignature getDefaultStyleDefinition() {
return StyleSignature.of(SName.root, SName.element, SName.activityDiagram, SName.note);
private StyleSignature getDefaultStyleDefinition(SName sname) {
return StyleSignature.of(SName.root, SName.element, sname, SName.note);
}
final public void drawU(UGraphic ug) {

View File

@ -47,6 +47,7 @@ import net.sourceforge.plantuml.LineConfigurable;
import net.sourceforge.plantuml.LineParam;
import net.sourceforge.plantuml.SkinParamUtils;
import net.sourceforge.plantuml.Url;
import net.sourceforge.plantuml.UseStyle;
import net.sourceforge.plantuml.creole.Stencil;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.cucadiagram.EntityPortion;
@ -61,6 +62,10 @@ import net.sourceforge.plantuml.graphic.TextBlockEmpty;
import net.sourceforge.plantuml.graphic.TextBlockLineBefore;
import net.sourceforge.plantuml.graphic.TextBlockUtils;
import net.sourceforge.plantuml.graphic.color.ColorType;
import net.sourceforge.plantuml.style.PName;
import net.sourceforge.plantuml.style.SName;
import net.sourceforge.plantuml.style.Style;
import net.sourceforge.plantuml.style.StyleSignature;
import net.sourceforge.plantuml.svek.AbstractEntityImage;
import net.sourceforge.plantuml.svek.ShapeType;
import net.sourceforge.plantuml.ugraphic.PlacementStrategyY1Y2;
@ -89,8 +94,15 @@ public class EntityImageObject extends AbstractEntityImage implements Stencil {
this.lineConfig = entity;
final Stereotype stereotype = entity.getStereotype();
this.roundCorner = skinParam.getRoundCorner(CornerParam.DEFAULT, null);
final FontConfiguration fc = new FontConfiguration(getSkinParam(), FontParam.OBJECT, stereotype);
final TextBlock tmp = getUnderlinedName(entity).create(fc, HorizontalAlignment.CENTER, skinParam);
final FontConfiguration fcHeader;
if (UseStyle.useBetaStyle())
fcHeader = getStyleHeader().getFontConfiguration(getSkinParam().getThemeStyle(),
getSkinParam().getIHtmlColorSet());
else
fcHeader = new FontConfiguration(getSkinParam(), FontParam.OBJECT, stereotype);
final TextBlock tmp = getUnderlinedName(entity).create(fcHeader, HorizontalAlignment.CENTER, skinParam);
this.name = TextBlockUtils.withMargin(tmp, 2, 2);
if (stereotype == null || stereotype.getLabel(Guillemet.DOUBLE_COMPARATOR) == null
|| portionShower.showPortion(EntityPortion.STEREOTYPE, entity) == false) {
@ -107,12 +119,22 @@ public class EntityImageObject extends AbstractEntityImage implements Stencil {
this.fields = new TextBlockLineBefore(new TextBlockEmpty(10, 16));
} else {
this.fields = entity.getBodier().getBody(FontParam.OBJECT_ATTRIBUTE, skinParam, false, showFields,
entity.getStereotype(), null);
entity.getStereotype(), getStyle());
}
this.url = entity.getUrl99();
}
private Style getStyle() {
return StyleSignature.of(SName.root, SName.element, SName.objectDiagram, SName.object)
.with(getEntity().getStereotype()).getMergedStyle(getSkinParam().getCurrentStyleBuilder());
}
private Style getStyleHeader() {
return StyleSignature.of(SName.root, SName.element, SName.objectDiagram, SName.object, SName.header)
.with(getEntity().getStereotype()).getMergedStyle(getSkinParam().getCurrentStyleBuilder());
}
private Display getUnderlinedName(ILeaf entity) {
if (getSkinParam().strictUmlStyle()) {
return entity.getDisplay().underlinedName();
@ -146,10 +168,16 @@ public class EntityImageObject extends AbstractEntityImage implements Stencil {
rect.setDeltaShadow(4);
}
ug = ug.apply(SkinParamUtils.getColor(getSkinParam(), getStereo(), ColorParam.objectBorder));
final HColor borderColor = SkinParamUtils.getColor(getSkinParam(), getStereo(), ColorParam.objectBorder);
ug = ug.apply(borderColor);
HColor backcolor = getEntity().getColors(getSkinParam()).getColor(ColorType.BACK);
if (backcolor == null) {
backcolor = SkinParamUtils.getColor(getSkinParam(), getStereo(), ColorParam.objectBackground);
if (UseStyle.useBetaStyle())
backcolor = getStyle().value(PName.BackGroundColor).asColor(getSkinParam().getThemeStyle(),
getSkinParam().getIHtmlColorSet());
else
backcolor = SkinParamUtils.getColor(getSkinParam(), getStereo(), ColorParam.objectBackground);
}
ug = ug.apply(backcolor.bg());
if (url != null) {

View File

@ -40,6 +40,7 @@ import java.awt.geom.Dimension2D;
import net.sourceforge.plantuml.Dimension2DDouble;
import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.UseStyle;
import net.sourceforge.plantuml.creole.CreoleMode;
import net.sourceforge.plantuml.cucadiagram.Display;
import net.sourceforge.plantuml.cucadiagram.IEntity;
@ -48,6 +49,9 @@ 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.style.SName;
import net.sourceforge.plantuml.style.Style;
import net.sourceforge.plantuml.style.StyleSignature;
import net.sourceforge.plantuml.ugraphic.UEllipse;
import net.sourceforge.plantuml.ugraphic.UGraphic;
import net.sourceforge.plantuml.ugraphic.UGroupType;
@ -76,11 +80,19 @@ public class EntityImageState extends EntityImageStateCommon {
this.withSymbol = stereotype != null && stereotype.isWithOOSymbol();
final Display list = Display.create(entity.getBodier().getRawBody());
this.fields = list.create8(new FontConfiguration(getSkinParam(), FontParam.STATE_ATTRIBUTE, stereotype),
HorizontalAlignment.LEFT, skinParam, CreoleMode.FULL, skinParam.wrapWidth());
final FontConfiguration fontConfiguration;
if (UseStyle.useBetaStyle())
fontConfiguration = getStyleMember().getFontConfiguration(getSkinParam().getThemeStyle(),
getSkinParam().getIHtmlColorSet());
else
fontConfiguration = new FontConfiguration(getSkinParam(), FontParam.STATE_ATTRIBUTE, stereotype);
this.fields = list.create8(fontConfiguration, HorizontalAlignment.LEFT, skinParam, CreoleMode.FULL,
skinParam.wrapWidth());
}
public Dimension2D calculateDimension(StringBounder stringBounder) {
final Dimension2D dim = Dimension2DDouble.mergeTB(desc.calculateDimension(stringBounder),
fields.calculateDimension(stringBounder));

View File

@ -43,6 +43,7 @@ import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.LineConfigurable;
import net.sourceforge.plantuml.SkinParamUtils;
import net.sourceforge.plantuml.Url;
import net.sourceforge.plantuml.UseStyle;
import net.sourceforge.plantuml.creole.CreoleMode;
import net.sourceforge.plantuml.cucadiagram.IEntity;
import net.sourceforge.plantuml.cucadiagram.Stereotype;
@ -50,6 +51,10 @@ import net.sourceforge.plantuml.graphic.FontConfiguration;
import net.sourceforge.plantuml.graphic.HorizontalAlignment;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.graphic.color.ColorType;
import net.sourceforge.plantuml.style.PName;
import net.sourceforge.plantuml.style.SName;
import net.sourceforge.plantuml.style.Style;
import net.sourceforge.plantuml.style.StyleSignature;
import net.sourceforge.plantuml.svek.AbstractEntityImage;
import net.sourceforge.plantuml.svek.ShapeType;
import net.sourceforge.plantuml.ugraphic.UGraphic;
@ -70,12 +75,30 @@ public abstract class EntityImageStateCommon extends AbstractEntityImage {
this.lineConfig = entity;
final Stereotype stereotype = entity.getStereotype();
this.desc = entity.getDisplay().create8(new FontConfiguration(getSkinParam(), FontParam.STATE, stereotype),
HorizontalAlignment.CENTER, skinParam, CreoleMode.FULL, skinParam.wrapWidth());
final FontConfiguration fontConfiguration;
if (UseStyle.useBetaStyle())
fontConfiguration = getStyleHeader().getFontConfiguration(getSkinParam().getThemeStyle(),
getSkinParam().getIHtmlColorSet());
else
fontConfiguration = new FontConfiguration(getSkinParam(), FontParam.STATE, stereotype);
this.desc = entity.getDisplay().create8(fontConfiguration, HorizontalAlignment.CENTER, skinParam,
CreoleMode.FULL, skinParam.wrapWidth());
this.url = entity.getUrl99();
}
final protected Style getStyleHeader() {
return StyleSignature.of(SName.root, SName.element, SName.stateDiagram, SName.state, SName.header)
.with(getEntity().getStereotype()).getMergedStyle(getSkinParam().getCurrentStyleBuilder());
}
final protected Style getStyleMember() {
return StyleSignature.of(SName.root, SName.element, SName.stateDiagram, SName.state)
.with(getEntity().getStereotype()).getMergedStyle(getSkinParam().getCurrentStyleBuilder());
}
final protected UStroke getStroke() {
UStroke stroke = lineConfig.getColors(getSkinParam()).getSpecificLineStroke();
if (stroke == null) {
@ -100,12 +123,21 @@ public abstract class EntityImageStateCommon extends AbstractEntityImage {
HColor classBorder = lineConfig.getColors(getSkinParam()).getColor(ColorType.LINE);
if (classBorder == null) {
classBorder = SkinParamUtils.getColor(getSkinParam(), getStereo(), ColorParam.stateBorder);
if (UseStyle.useBetaStyle())
classBorder = getStyleMember().value(PName.LineColor).asColor(getSkinParam().getThemeStyle(),
getSkinParam().getIHtmlColorSet());
else
classBorder = SkinParamUtils.getColor(getSkinParam(), getStereo(), ColorParam.stateBorder);
}
ug = ug.apply(getStroke()).apply(classBorder);
HColor backcolor = getEntity().getColors(getSkinParam()).getColor(ColorType.BACK);
if (backcolor == null) {
backcolor = SkinParamUtils.getColor(getSkinParam(), getStereo(), ColorParam.stateBackground);
if (UseStyle.useBetaStyle())
backcolor = getStyleMember().value(PName.BackGroundColor).asColor(getSkinParam().getThemeStyle(),
getSkinParam().getIHtmlColorSet());
else
backcolor = SkinParamUtils.getColor(getSkinParam(), getStereo(), ColorParam.stateBackground);
}
ug = ug.apply(backcolor.bg());

View File

@ -46,6 +46,8 @@ import net.sourceforge.plantuml.Direction;
import net.sourceforge.plantuml.FontParam;
import net.sourceforge.plantuml.ISkinParam;
import net.sourceforge.plantuml.LineBreakStrategy;
import net.sourceforge.plantuml.UmlDiagramType;
import net.sourceforge.plantuml.UseStyle;
import net.sourceforge.plantuml.command.Position;
import net.sourceforge.plantuml.cucadiagram.BodyFactory;
import net.sourceforge.plantuml.cucadiagram.Display;
@ -58,6 +60,10 @@ import net.sourceforge.plantuml.graphic.StringBounder;
import net.sourceforge.plantuml.graphic.TextBlock;
import net.sourceforge.plantuml.graphic.color.ColorType;
import net.sourceforge.plantuml.skin.rose.Rose;
import net.sourceforge.plantuml.style.PName;
import net.sourceforge.plantuml.style.SName;
import net.sourceforge.plantuml.style.Style;
import net.sourceforge.plantuml.style.StyleSignature;
import net.sourceforge.plantuml.svek.AbstractEntityImage;
import net.sourceforge.plantuml.svek.Bibliotekon;
import net.sourceforge.plantuml.svek.ShapeType;
@ -78,17 +84,41 @@ public class EntityImageTips extends AbstractEntityImage {
private final double ySpacing = 10;
public EntityImageTips(ILeaf entity, ISkinParam skinParam, Bibliotekon bibliotekon) {
public EntityImageTips(ILeaf entity, ISkinParam skinParam, Bibliotekon bibliotekon, UmlDiagramType type) {
super(entity, EntityImageNote.getSkin(skinParam, entity));
this.skinParam = skinParam;
this.bibliotekon = bibliotekon;
if (entity.getColors(skinParam).getColor(ColorType.BACK) == null) {
noteBackgroundColor = rose.getHtmlColor(skinParam, ColorParam.noteBackground);
if (UseStyle.useBetaStyle()) {
final Style style = getDefaultStyleDefinition(type.getStyleName())
.getMergedStyle(skinParam.getCurrentStyleBuilder());
if (entity.getColors(skinParam).getColor(ColorType.BACK) == null) {
this.noteBackgroundColor = style.value(PName.BackGroundColor).asColor(skinParam.getThemeStyle(),
skinParam.getIHtmlColorSet());
} else {
this.noteBackgroundColor = entity.getColors(skinParam).getColor(ColorType.BACK);
}
this.borderColor = style.value(PName.LineColor).asColor(skinParam.getThemeStyle(),
skinParam.getIHtmlColorSet());
} else {
noteBackgroundColor = entity.getColors(skinParam).getColor(ColorType.BACK);
if (entity.getColors(skinParam).getColor(ColorType.BACK) == null) {
this.noteBackgroundColor = rose.getHtmlColor(skinParam, ColorParam.noteBackground);
} else {
this.noteBackgroundColor = entity.getColors(skinParam).getColor(ColorType.BACK);
}
this.borderColor = rose.getHtmlColor(skinParam, ColorParam.noteBorder);
}
this.borderColor = rose.getHtmlColor(skinParam, ColorParam.noteBorder);
}
private StyleSignature getDefaultStyleDefinition(SName sname) {
return StyleSignature.of(SName.root, SName.element, sname, SName.note);
}
private Position getPosition() {

View File

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