mirror of
https://github.com/octoleo/plantuml.git
synced 2024-12-22 02:49:06 +00:00
Version 1.2023.2
This commit is contained in:
parent
d55ae31b68
commit
52664342f6
@ -489,11 +489,11 @@ root {
|
||||
HyperLinkColor blue
|
||||
FontColor white
|
||||
LineColor #e7e7e7
|
||||
BackGroundColor #303030
|
||||
BackGroundColor #313139
|
||||
}
|
||||
|
||||
document {
|
||||
BackGroundColor black
|
||||
BackGroundColor #1B1B1B
|
||||
header {
|
||||
FontColor #7
|
||||
}
|
||||
|
@ -107,7 +107,6 @@ import net.sourceforge.plantuml.style.PName;
|
||||
import net.sourceforge.plantuml.style.SName;
|
||||
import net.sourceforge.plantuml.style.Style;
|
||||
import net.sourceforge.plantuml.style.StyleSignatureBasic;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
import net.sourceforge.plantuml.text.SvgCharSizeHack;
|
||||
import net.sourceforge.plantuml.url.CMapData;
|
||||
import net.sourceforge.plantuml.url.Url;
|
||||
@ -175,8 +174,8 @@ public class ImageBuilder {
|
||||
|
||||
public ImageBuilder drawable(UDrawable drawable) {
|
||||
this.udrawable = drawable;
|
||||
if (backcolor == null && drawable instanceof TextBlockBackcolored)
|
||||
backcolor = ((TextBlockBackcolored) drawable).getBackcolor();
|
||||
if (backcolor == null && drawable instanceof TextBlock)
|
||||
backcolor = ((TextBlock) drawable).getBackcolor();
|
||||
|
||||
return this;
|
||||
}
|
||||
|
@ -51,6 +51,7 @@ import net.sourceforge.plantuml.klimt.geom.HorizontalAlignment;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.AbstractTextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.BigFrame;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlockUtils;
|
||||
@ -60,7 +61,6 @@ import net.sourceforge.plantuml.style.SName;
|
||||
import net.sourceforge.plantuml.style.Style;
|
||||
import net.sourceforge.plantuml.style.StyleSignatureBasic;
|
||||
import net.sourceforge.plantuml.svek.DecorateEntityImage;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
|
||||
public class AnnotatedBuilder {
|
||||
|
||||
@ -125,17 +125,13 @@ public class AnnotatedBuilder {
|
||||
|
||||
final TextBlock frame = new BigFrame(title, width, height, symbolContext);
|
||||
|
||||
return new TextBlockBackcolored() {
|
||||
return new AbstractTextBlock() {
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
frame.drawU(ug.apply(margin.getTranslate()));
|
||||
original.drawU(ug.apply(margin.getTranslate().compose(padding.getTranslate().compose(delta))));
|
||||
}
|
||||
|
||||
public MinMax getMinMax(StringBounder stringBounder) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public XRectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
|
||||
final XRectangle2D rect = original.getInnerPosition(member, stringBounder, strategy);
|
||||
return new XRectangle2D(dx + rect.getX() + margin.getLeft() + padding.getLeft(),
|
||||
|
@ -41,7 +41,6 @@ import net.sourceforge.plantuml.klimt.geom.HorizontalAlignment;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.style.ISkinParam;
|
||||
import net.sourceforge.plantuml.svek.DecorateEntityImage;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
|
||||
public class AnnotatedWorker {
|
||||
|
||||
@ -58,13 +57,13 @@ public class AnnotatedWorker {
|
||||
this.builder = builder;
|
||||
}
|
||||
|
||||
public TextBlockBackcolored addAdd(TextBlock result) {
|
||||
public TextBlock addAdd(TextBlock result) {
|
||||
result = builder.decoreWithFrame(result);
|
||||
result = addLegend(result);
|
||||
result = addTitle(result);
|
||||
result = addCaption(result);
|
||||
result = builder.addHeaderAndFooter(result);
|
||||
return (TextBlockBackcolored) result;
|
||||
return (TextBlock) result;
|
||||
}
|
||||
|
||||
public TextBlock addLegend(TextBlock original) {
|
||||
|
@ -51,9 +51,9 @@ import net.sourceforge.plantuml.core.Diagram;
|
||||
import net.sourceforge.plantuml.core.DiagramDescription;
|
||||
import net.sourceforge.plantuml.core.ImageData;
|
||||
import net.sourceforge.plantuml.klimt.shape.GraphicStrings;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.preproc.Defines;
|
||||
import net.sourceforge.plantuml.security.SFile;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
import net.sourceforge.plantuml.utils.Log;
|
||||
|
||||
public class SourceStringReader {
|
||||
@ -230,7 +230,7 @@ public class SourceStringReader {
|
||||
}
|
||||
|
||||
public ImageData noStartumlFound(OutputStream os, FileFormatOption fileFormatOption) throws IOException {
|
||||
final TextBlockBackcolored error = GraphicStrings.createForError(Arrays.asList("No @startuml/@enduml found"),
|
||||
final TextBlock error = GraphicStrings.createForError(Arrays.asList("No @startuml/@enduml found"),
|
||||
fileFormatOption.isUseRedForError());
|
||||
|
||||
return plainImageBuilder(error, fileFormatOption).write(os);
|
||||
|
@ -70,6 +70,7 @@ import net.sourceforge.plantuml.klimt.font.FontParam;
|
||||
import net.sourceforge.plantuml.klimt.geom.GraphicPosition;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.GraphicStrings;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.UDrawable;
|
||||
import net.sourceforge.plantuml.klimt.shape.UImage;
|
||||
import net.sourceforge.plantuml.log.Logme;
|
||||
@ -82,7 +83,6 @@ import net.sourceforge.plantuml.skin.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.style.NoStyleAvailableException;
|
||||
import net.sourceforge.plantuml.svek.EmptySvgException;
|
||||
import net.sourceforge.plantuml.svek.GraphvizCrash;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
import net.sourceforge.plantuml.utils.Log;
|
||||
import net.sourceforge.plantuml.version.Version;
|
||||
|
||||
@ -188,7 +188,7 @@ public abstract class UmlDiagram extends TitledDiagram implements Diagram, Annot
|
||||
// ::done
|
||||
|
||||
final BufferedImage im = im2;
|
||||
final TextBlockBackcolored graphicStrings = GraphicStrings.createBlackOnWhite(strings, IconLoader.getRandom(),
|
||||
final TextBlock graphicStrings = GraphicStrings.createBlackOnWhite(strings, IconLoader.getRandom(),
|
||||
GraphicPosition.BACKGROUND_CORNER_TOP_RIGHT);
|
||||
|
||||
final UDrawable drawable = (im == null) ? graphicStrings : new UDrawable() {
|
||||
|
@ -40,7 +40,6 @@ import java.io.OutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.atmp.InnerStrategy;
|
||||
import net.sourceforge.plantuml.FileFormatOption;
|
||||
import net.sourceforge.plantuml.UmlDiagram;
|
||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||
@ -49,16 +48,14 @@ import net.sourceforge.plantuml.core.ImageData;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
import net.sourceforge.plantuml.klimt.UStroke;
|
||||
import net.sourceforge.plantuml.klimt.UTranslate;
|
||||
import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.color.HColors;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.AbstractTextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.ULine;
|
||||
import net.sourceforge.plantuml.skin.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
|
||||
public class BoardDiagram extends UmlDiagram {
|
||||
|
||||
@ -80,31 +77,19 @@ public class BoardDiagram extends UmlDiagram {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected TextBlockBackcolored getTextBlock() {
|
||||
return new TextBlockBackcolored() {
|
||||
protected TextBlock getTextBlock() {
|
||||
return new AbstractTextBlock() {
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
drawMe(ug);
|
||||
}
|
||||
|
||||
public XRectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public XDimension2D calculateDimension(StringBounder stringBounder) {
|
||||
final double width = 200;
|
||||
final double height = 200;
|
||||
return new XDimension2D(width, height);
|
||||
|
||||
}
|
||||
|
||||
public MinMax getMinMax(StringBounder stringBounder) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public HColor getBackcolor() {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -51,6 +51,7 @@ import net.sourceforge.plantuml.klimt.geom.HorizontalAlignment;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.AbstractTextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.ULine;
|
||||
import net.sourceforge.plantuml.skin.ColorParam;
|
||||
@ -94,7 +95,7 @@ public class BpmElement extends AbstractConnectorPuzzle implements ConnectorPuzz
|
||||
|
||||
public TextBlock toTextBlock(ISkinParam skinParam) {
|
||||
final TextBlock raw = toTextBlockInternal(skinParam);
|
||||
return new TextBlock() {
|
||||
return new AbstractTextBlock() {
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
raw.drawU(ug);
|
||||
|
@ -37,9 +37,12 @@ package net.sourceforge.plantuml.bpm;
|
||||
|
||||
import net.atmp.InnerStrategy;
|
||||
import net.sourceforge.plantuml.klimt.UTranslate;
|
||||
import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.color.HColors;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorderNone;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
@ -122,4 +125,14 @@ public class ConnectorPuzzleEmpty extends AbstractConnectorPuzzle implements Pla
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagneticBorder getMagneticBorder() {
|
||||
return new MagneticBorderNone();
|
||||
}
|
||||
|
||||
@Override
|
||||
public HColor getBackcolor() {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -45,6 +45,7 @@ import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphicStencil;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.HorizontalAlignment;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorder;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XPoint2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.AbstractTextBlock;
|
||||
@ -81,16 +82,11 @@ public class USymbolFolder extends USymbol {
|
||||
return sname;
|
||||
}
|
||||
|
||||
private void drawFolder(UGraphic ug, double width, double height, XDimension2D dimTitle, double shadowing,
|
||||
private void drawFolder(UGraphic ug, double width, double height, XDimension2D dimName, double shadowing,
|
||||
double roundCorner) {
|
||||
|
||||
final double wtitle;
|
||||
if (dimTitle.getWidth() == 0) {
|
||||
wtitle = Math.max(30, width / 4);
|
||||
} else {
|
||||
wtitle = dimTitle.getWidth() + marginTitleX1 + marginTitleX2;
|
||||
}
|
||||
final double htitle = getHTitle(dimTitle);
|
||||
final double wtitle = getWTitle(width, dimName);
|
||||
final double htitle = getHTitle(dimName);
|
||||
|
||||
final Shadowable shape;
|
||||
if (roundCorner == 0) {
|
||||
@ -128,13 +124,22 @@ public class USymbolFolder extends USymbol {
|
||||
ug.apply(UTranslate.dy(htitle)).draw(ULine.hline(wtitle + marginTitleX3));
|
||||
}
|
||||
|
||||
private double getWTitle(double width, XDimension2D dimTitle) {
|
||||
final double wtitle;
|
||||
if (dimTitle.getWidth() == 0)
|
||||
wtitle = Math.max(30, width / 4);
|
||||
else
|
||||
wtitle = dimTitle.getWidth() + marginTitleX1 + marginTitleX2;
|
||||
return wtitle;
|
||||
}
|
||||
|
||||
private double getHTitle(XDimension2D dimTitle) {
|
||||
final double htitle;
|
||||
if (dimTitle.getWidth() == 0) {
|
||||
if (dimTitle.getWidth() == 0)
|
||||
htitle = 10;
|
||||
} else {
|
||||
else
|
||||
htitle = dimTitle.getHeight() + marginTitleY1 + marginTitleY2;
|
||||
}
|
||||
|
||||
return htitle;
|
||||
}
|
||||
|
||||
@ -157,9 +162,9 @@ public class USymbolFolder extends USymbol {
|
||||
symbolContext.getRoundCorner());
|
||||
final Margin margin = getMargin();
|
||||
final TextBlock tb = TextBlockUtils.mergeTB(stereotype, label, HorizontalAlignment.CENTER);
|
||||
if (showTitle) {
|
||||
if (showTitle)
|
||||
name.drawU(ug.apply(new UTranslate(4, 3)));
|
||||
}
|
||||
|
||||
tb.drawU(ug.apply(new UTranslate(margin.getX1(), margin.getY1() + dimName.getHeight())));
|
||||
}
|
||||
|
||||
@ -173,6 +178,35 @@ public class USymbolFolder extends USymbol {
|
||||
final XDimension2D dimStereo = stereotype.calculateDimension(stringBounder);
|
||||
return getMargin().addDimension(dimName.mergeTB(dimStereo, dimLabel));
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagneticBorder getMagneticBorder() {
|
||||
return new MagneticBorder() {
|
||||
|
||||
@Override
|
||||
public UTranslate getForceAt(StringBounder stringBounder, XPoint2D position) {
|
||||
final XDimension2D dim = calculateDimension(stringBounder);
|
||||
final XDimension2D dimName = getDimName(stringBounder);
|
||||
final double wtitle = getWTitle(dim.getWidth(), dimName);
|
||||
final double htitle = getHTitle(dimName);
|
||||
|
||||
if (position.getX() >= wtitle && position.getY() >= 0 && position.getY() <= htitle)
|
||||
return new UTranslate(0, htitle);
|
||||
|
||||
if (position.getY() <= 0 && position.getX() >= wtitle + marginTitleX3)
|
||||
return new UTranslate(0, htitle);
|
||||
|
||||
if (position.getY() <= 0 && position.getX() >= wtitle - marginTitleX3) {
|
||||
final double delta = position.getX() - (wtitle - marginTitleX3);
|
||||
final double how = delta / (2 * marginTitleX3);
|
||||
return new UTranslate(0, htitle * how);
|
||||
}
|
||||
|
||||
return new UTranslate();
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -62,7 +62,6 @@ import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.UDrawable;
|
||||
import net.sourceforge.plantuml.klimt.shape.UImage;
|
||||
import net.sourceforge.plantuml.log.Logme;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
import net.sourceforge.plantuml.text.BackSlash;
|
||||
import net.sourceforge.plantuml.version.PSystemVersion;
|
||||
|
||||
@ -111,7 +110,7 @@ public class PSystemDonors extends PlainDiagram {
|
||||
final List<TextBlock> cols = getCols(getDonors(), COLS, FREE_LINES);
|
||||
return new UDrawable() {
|
||||
public void drawU(UGraphic ug) {
|
||||
final TextBlockBackcolored header = GraphicStrings
|
||||
final TextBlock header = GraphicStrings
|
||||
.createBlackOnWhite(Arrays.asList("<b>Special thanks to our sponsors and donors !"));
|
||||
header.drawU(ug);
|
||||
final StringBounder stringBounder = ug.getStringBounder();
|
||||
|
@ -57,7 +57,6 @@ import net.sourceforge.plantuml.skin.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.style.ISkinParam;
|
||||
import net.sourceforge.plantuml.style.SName;
|
||||
import net.sourceforge.plantuml.style.Style;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
import net.sourceforge.plantuml.utils.BlocLines;
|
||||
import net.sourceforge.plantuml.utils.CharInspector;
|
||||
|
||||
@ -102,7 +101,7 @@ public class PSystemEbnf extends TitledDiagram {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected TextBlockBackcolored getTextBlock() {
|
||||
protected TextBlock getTextBlock() {
|
||||
if (expressions.size() == 0) {
|
||||
final Style style = ETile.getStyleSignature().getMergedStyle(getSkinParam().getCurrentStyleBuilder());
|
||||
final FontConfiguration fc = style.getFontConfiguration(getSkinParam().getIHtmlColorSet());
|
||||
|
@ -45,8 +45,8 @@ import net.sourceforge.plantuml.core.DiagramDescription;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
import net.sourceforge.plantuml.klimt.geom.GraphicPosition;
|
||||
import net.sourceforge.plantuml.klimt.shape.GraphicStrings;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.UDrawable;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
import net.sourceforge.plantuml.version.PSystemVersion;
|
||||
|
||||
public class PSystemWelcome extends PlainDiagram {
|
||||
@ -84,7 +84,7 @@ public class PSystemWelcome extends PlainDiagram {
|
||||
return getGraphicStrings();
|
||||
}
|
||||
|
||||
public TextBlockBackcolored getGraphicStrings() {
|
||||
public TextBlock getGraphicStrings() {
|
||||
if (position != null)
|
||||
return GraphicStrings.createBlackOnWhite(strings, PSystemVersion.getPlantumlImage(), position);
|
||||
|
||||
|
@ -105,9 +105,9 @@ import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.FontConfiguration;
|
||||
import net.sourceforge.plantuml.klimt.font.FontParam;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.ClusterPosition;
|
||||
import net.sourceforge.plantuml.klimt.geom.HorizontalAlignment;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.RectangleArea;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XPoint2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.AbstractTextBlock;
|
||||
@ -130,7 +130,6 @@ import net.sourceforge.plantuml.svek.GeneralImageBuilder;
|
||||
import net.sourceforge.plantuml.svek.GraphvizCrash;
|
||||
import net.sourceforge.plantuml.svek.IEntityImage;
|
||||
import net.sourceforge.plantuml.svek.PackageStyle;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
|
||||
/*
|
||||
* Some notes:
|
||||
@ -209,7 +208,7 @@ public class CucaDiagramFileMakerElk implements CucaDiagramFileMaker {
|
||||
}
|
||||
|
||||
// The Drawing class does the real drawing
|
||||
class Drawing extends AbstractTextBlock implements TextBlockBackcolored {
|
||||
class Drawing extends AbstractTextBlock {
|
||||
|
||||
// min and max of all coord
|
||||
private final MinMax minMax;
|
||||
@ -273,9 +272,9 @@ public class CucaDiagramFileMakerElk implements CucaDiagramFileMaker {
|
||||
final TextBlock ztitle = getTitleBlock(group);
|
||||
final TextBlock zstereo = TextBlockUtils.empty(0, 0);
|
||||
|
||||
final ClusterPosition clusterPosition = new ClusterPosition(0, 0, elkNode.getWidth(), elkNode.getHeight());
|
||||
final RectangleArea rectangleArea = new RectangleArea(0, 0, elkNode.getWidth(), elkNode.getHeight());
|
||||
final ClusterDecoration decoration = new ClusterDecoration(packageStyle, group.getUSymbol(), ztitle,
|
||||
zstereo, clusterPosition, stroke);
|
||||
zstereo, rectangleArea, stroke);
|
||||
|
||||
final HColor borderColor = HColors.BLACK;
|
||||
decoration.drawU(ug.apply(new UTranslate(corner)), backColor, borderColor, shadowing, roundCorner,
|
||||
|
@ -48,8 +48,8 @@ import net.sourceforge.plantuml.klimt.UTranslate;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.shape.GraphicStrings;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.UDrawable;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
|
||||
public class PSystemListEmoji extends PlainDiagram {
|
||||
// ::remove file when CORE
|
||||
@ -60,7 +60,7 @@ public class PSystemListEmoji extends PlainDiagram {
|
||||
protected UDrawable getRootDrawable(FileFormatOption fileFormatOption) throws IOException {
|
||||
return new UDrawable() {
|
||||
public void drawU(UGraphic ug) {
|
||||
final TextBlockBackcolored header = GraphicStrings
|
||||
final TextBlock header = GraphicStrings
|
||||
.createBlackOnWhite(Arrays.asList("<b><size:16>Emoji available on Unicode Block " + text,
|
||||
"(Blocks available: 26, 27, 1F3, 1F4, 1F5, 1F6, 1F9)"));
|
||||
header.drawU(ug);
|
||||
@ -92,7 +92,7 @@ public class PSystemListEmoji extends PlainDiagram {
|
||||
sb.append("\"\"<U+003C>:" + shortcut + ":<U+003E> \"\"");
|
||||
}
|
||||
|
||||
final TextBlockBackcolored tmp = GraphicStrings.createBlackOnWhite(Arrays.asList(sb.toString()));
|
||||
final TextBlock tmp = GraphicStrings.createBlackOnWhite(Arrays.asList(sb.toString()));
|
||||
tmp.drawU(ug);
|
||||
ug = ug.apply(UTranslate.dy(tmp.calculateDimension(stringBounder).getHeight()));
|
||||
|
||||
|
@ -45,7 +45,6 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import net.atmp.ImageBuilder;
|
||||
import net.atmp.InnerStrategy;
|
||||
import net.atmp.PixelImage;
|
||||
import net.sourceforge.plantuml.ErrorUml;
|
||||
import net.sourceforge.plantuml.FileFormat;
|
||||
@ -76,7 +75,7 @@ import net.sourceforge.plantuml.klimt.geom.HorizontalAlignment;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.VerticalAlignment;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.AbstractTextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.GraphicStrings;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlockRaw;
|
||||
@ -86,7 +85,6 @@ import net.sourceforge.plantuml.klimt.shape.UImage;
|
||||
import net.sourceforge.plantuml.klimt.sprite.SpriteContainerEmpty;
|
||||
import net.sourceforge.plantuml.security.SecurityUtils;
|
||||
import net.sourceforge.plantuml.svek.GraphvizCrash;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
import net.sourceforge.plantuml.text.BackSlash;
|
||||
import net.sourceforge.plantuml.text.StringLocated;
|
||||
import net.sourceforge.plantuml.utils.LineLocation;
|
||||
@ -144,7 +142,7 @@ public abstract class PSystemError extends PlainDiagram {
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private TextBlockBackcolored getGraphicalFormatted() {
|
||||
private TextBlock getGraphicalFormatted() {
|
||||
final FontConfiguration fc0 = GraphicStrings.sansSerif14(HColors.BLACK).bold();
|
||||
final FontConfiguration fc1 = GraphicStrings.sansSerif14(HColors.MY_GREEN).bold();
|
||||
final FontConfiguration fc2 = GraphicStrings.sansSerif14(HColors.RED).bold();
|
||||
@ -247,7 +245,7 @@ public abstract class PSystemError extends PlainDiagram {
|
||||
|
||||
@Override
|
||||
protected UDrawable getRootDrawable(FileFormatOption fileFormatOption) throws IOException {
|
||||
final TextBlockBackcolored result = getGraphicalFormatted();
|
||||
final TextBlock result = getGraphicalFormatted();
|
||||
|
||||
TextBlock udrawable;
|
||||
if (getSource().getTotalLineCountLessThan5()) {
|
||||
@ -291,12 +289,12 @@ public abstract class PSystemError extends PlainDiagram {
|
||||
return full.subList(full.size() - 1, full.size());
|
||||
}
|
||||
|
||||
private TextBlockBackcolored getWelcome() throws IOException {
|
||||
private TextBlock getWelcome() throws IOException {
|
||||
return new PSystemWelcome(getSource(), GraphicPosition.BACKGROUND_CORNER_TOP_RIGHT).getGraphicStrings();
|
||||
}
|
||||
|
||||
private TextBlock addWelcome(final TextBlockBackcolored result) throws IOException {
|
||||
final TextBlockBackcolored welcome = getWelcome();
|
||||
private TextBlock addWelcome(final TextBlock result) throws IOException {
|
||||
final TextBlock welcome = getWelcome();
|
||||
return TextBlockUtils.mergeTB(welcome, result, HorizontalAlignment.LEFT);
|
||||
}
|
||||
|
||||
@ -353,7 +351,7 @@ public abstract class PSystemError extends PlainDiagram {
|
||||
}
|
||||
// ::done
|
||||
|
||||
private TextBlockBackcolored getMessageDedication() {
|
||||
private TextBlock getMessageDedication() {
|
||||
final HColorSimple backColor = (HColorSimple) HColorSet.instance().getColorOrWhite("#eae2c9");
|
||||
|
||||
// ::comment when CORE
|
||||
@ -382,7 +380,7 @@ public abstract class PSystemError extends PlainDiagram {
|
||||
|
||||
}
|
||||
|
||||
private TextBlockBackcolored getMessageAdopt() {
|
||||
private TextBlock getMessageAdopt() {
|
||||
final HColor backColor = HColorSet.instance().getColorOrWhite("#eff4d2");
|
||||
|
||||
final Display disp = Display.create("<b>Adopt-a-Word and put your message here!", " ",
|
||||
@ -398,7 +396,7 @@ public abstract class PSystemError extends PlainDiagram {
|
||||
|
||||
}
|
||||
|
||||
private TextBlockBackcolored getMessagePatreon() {
|
||||
private TextBlock getMessagePatreon() {
|
||||
final UImage message = new UImage(
|
||||
new PixelImage(PSystemVersion.getTime01(), AffineTransformType.TYPE_BILINEAR));
|
||||
final Color back = new Color(message.getImage(1).getRGB(0, 0));
|
||||
@ -424,7 +422,7 @@ public abstract class PSystemError extends PlainDiagram {
|
||||
imHeight = Math.max(message.getHeight(), qrcode.getHeight() * scale + 10);
|
||||
}
|
||||
// ::done
|
||||
return new TextBlockBackcolored() {
|
||||
return new AbstractTextBlock() {
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
// ::comment when CORE
|
||||
@ -441,10 +439,6 @@ public abstract class PSystemError extends PlainDiagram {
|
||||
// ::done
|
||||
}
|
||||
|
||||
public XRectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public XDimension2D calculateDimension(StringBounder stringBounder) {
|
||||
return new XDimension2D(imWidth + 1, imHeight + 1);
|
||||
}
|
||||
@ -460,7 +454,7 @@ public abstract class PSystemError extends PlainDiagram {
|
||||
|
||||
}
|
||||
|
||||
private TextBlockBackcolored getMessageLiberapay() {
|
||||
private TextBlock getMessageLiberapay() {
|
||||
final UImage message = new UImage(
|
||||
new PixelImage(PSystemVersion.getTime15(), AffineTransformType.TYPE_BILINEAR));
|
||||
final Color back = new Color(message.getImage(1).getRGB(0, 0));
|
||||
@ -487,7 +481,7 @@ public abstract class PSystemError extends PlainDiagram {
|
||||
}
|
||||
// ::done
|
||||
|
||||
return new TextBlockBackcolored() {
|
||||
return new AbstractTextBlock() {
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
// ::comment when CORE
|
||||
@ -504,10 +498,6 @@ public abstract class PSystemError extends PlainDiagram {
|
||||
// ::done
|
||||
}
|
||||
|
||||
public XRectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public XDimension2D calculateDimension(StringBounder stringBounder) {
|
||||
return new XDimension2D(imWidth + 1, imHeight + 1);
|
||||
}
|
||||
|
@ -58,9 +58,12 @@ import net.sourceforge.plantuml.golem.TileGeometry;
|
||||
import net.sourceforge.plantuml.golem.TilesField;
|
||||
import net.sourceforge.plantuml.klimt.UShape;
|
||||
import net.sourceforge.plantuml.klimt.UTranslate;
|
||||
import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.color.HColors;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorderNone;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XPoint2D;
|
||||
@ -229,4 +232,14 @@ public class FlowDiagram extends UmlDiagram implements TextBlock {
|
||||
protected TextBlock getTextBlock() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagneticBorder getMagneticBorder() {
|
||||
return new MagneticBorderNone();
|
||||
}
|
||||
|
||||
@Override
|
||||
public HColor getBackcolor() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
BIN
src/net/sourceforge/plantuml/font/Roboto-Black.ttf
Normal file
BIN
src/net/sourceforge/plantuml/font/Roboto-Black.ttf
Normal file
Binary file not shown.
BIN
src/net/sourceforge/plantuml/font/Roboto-BlackItalic.ttf
Normal file
BIN
src/net/sourceforge/plantuml/font/Roboto-BlackItalic.ttf
Normal file
Binary file not shown.
BIN
src/net/sourceforge/plantuml/font/Roboto-Bold.ttf
Normal file
BIN
src/net/sourceforge/plantuml/font/Roboto-Bold.ttf
Normal file
Binary file not shown.
BIN
src/net/sourceforge/plantuml/font/Roboto-BoldItalic.ttf
Normal file
BIN
src/net/sourceforge/plantuml/font/Roboto-BoldItalic.ttf
Normal file
Binary file not shown.
BIN
src/net/sourceforge/plantuml/font/Roboto-Italic.ttf
Normal file
BIN
src/net/sourceforge/plantuml/font/Roboto-Italic.ttf
Normal file
Binary file not shown.
BIN
src/net/sourceforge/plantuml/font/Roboto-Light.ttf
Normal file
BIN
src/net/sourceforge/plantuml/font/Roboto-Light.ttf
Normal file
Binary file not shown.
BIN
src/net/sourceforge/plantuml/font/Roboto-LightItalic.ttf
Normal file
BIN
src/net/sourceforge/plantuml/font/Roboto-LightItalic.ttf
Normal file
Binary file not shown.
BIN
src/net/sourceforge/plantuml/font/Roboto-Medium.ttf
Normal file
BIN
src/net/sourceforge/plantuml/font/Roboto-Medium.ttf
Normal file
Binary file not shown.
BIN
src/net/sourceforge/plantuml/font/Roboto-MediumItalic.ttf
Normal file
BIN
src/net/sourceforge/plantuml/font/Roboto-MediumItalic.ttf
Normal file
Binary file not shown.
BIN
src/net/sourceforge/plantuml/font/Roboto-Regular.ttf
Normal file
BIN
src/net/sourceforge/plantuml/font/Roboto-Regular.ttf
Normal file
Binary file not shown.
BIN
src/net/sourceforge/plantuml/font/Roboto-Thin.ttf
Normal file
BIN
src/net/sourceforge/plantuml/font/Roboto-Thin.ttf
Normal file
Binary file not shown.
BIN
src/net/sourceforge/plantuml/font/Roboto-ThinItalic.ttf
Normal file
BIN
src/net/sourceforge/plantuml/font/Roboto-ThinItalic.ttf
Normal file
Binary file not shown.
BIN
src/net/sourceforge/plantuml/font/RobotoCondensed-Bold.ttf
Normal file
BIN
src/net/sourceforge/plantuml/font/RobotoCondensed-Bold.ttf
Normal file
Binary file not shown.
BIN
src/net/sourceforge/plantuml/font/RobotoCondensed-BoldItalic.ttf
Normal file
BIN
src/net/sourceforge/plantuml/font/RobotoCondensed-BoldItalic.ttf
Normal file
Binary file not shown.
BIN
src/net/sourceforge/plantuml/font/RobotoCondensed-Italic.ttf
Normal file
BIN
src/net/sourceforge/plantuml/font/RobotoCondensed-Italic.ttf
Normal file
Binary file not shown.
BIN
src/net/sourceforge/plantuml/font/RobotoCondensed-Light.ttf
Normal file
BIN
src/net/sourceforge/plantuml/font/RobotoCondensed-Light.ttf
Normal file
Binary file not shown.
Binary file not shown.
BIN
src/net/sourceforge/plantuml/font/RobotoCondensed-Medium.ttf
Normal file
BIN
src/net/sourceforge/plantuml/font/RobotoCondensed-Medium.ttf
Normal file
Binary file not shown.
Binary file not shown.
BIN
src/net/sourceforge/plantuml/font/RobotoCondensed-Regular.ttf
Normal file
BIN
src/net/sourceforge/plantuml/font/RobotoCondensed-Regular.ttf
Normal file
Binary file not shown.
@ -38,20 +38,17 @@ import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.util.Collection;
|
||||
|
||||
import net.atmp.InnerStrategy;
|
||||
import net.sourceforge.plantuml.FileFormatOption;
|
||||
import net.sourceforge.plantuml.UmlDiagram;
|
||||
import net.sourceforge.plantuml.core.DiagramDescription;
|
||||
import net.sourceforge.plantuml.core.ImageData;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.AbstractTextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.skin.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
|
||||
public class GitDiagram extends UmlDiagram {
|
||||
|
||||
@ -87,28 +84,17 @@ public class GitDiagram extends UmlDiagram {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected TextBlockBackcolored getTextBlock() {
|
||||
return new TextBlockBackcolored() {
|
||||
protected TextBlock getTextBlock() {
|
||||
return new AbstractTextBlock() {
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
drawInternal(ug);
|
||||
}
|
||||
|
||||
public MinMax getMinMax(StringBounder stringBounder) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public XRectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public XDimension2D calculateDimension(StringBounder stringBounder) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public HColor getBackcolor() {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -38,7 +38,6 @@ import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.util.List;
|
||||
|
||||
import net.atmp.InnerStrategy;
|
||||
import net.sourceforge.plantuml.FileFormatOption;
|
||||
import net.sourceforge.plantuml.ScaleSimple;
|
||||
import net.sourceforge.plantuml.TitledDiagram;
|
||||
@ -47,7 +46,6 @@ import net.sourceforge.plantuml.core.ImageData;
|
||||
import net.sourceforge.plantuml.core.UmlSource;
|
||||
import net.sourceforge.plantuml.json.JsonArray;
|
||||
import net.sourceforge.plantuml.json.JsonValue;
|
||||
import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.creole.Display;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.drawing.hand.UGraphicHandwritten;
|
||||
@ -55,13 +53,11 @@ import net.sourceforge.plantuml.klimt.font.FontConfiguration;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.font.UFont;
|
||||
import net.sourceforge.plantuml.klimt.geom.HorizontalAlignment;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.AbstractTextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlockUtils;
|
||||
import net.sourceforge.plantuml.skin.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
import net.sourceforge.plantuml.yaml.Highlighted;
|
||||
|
||||
public class JsonDiagram extends TitledDiagram {
|
||||
@ -117,28 +113,16 @@ public class JsonDiagram extends TitledDiagram {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected TextBlockBackcolored getTextBlock() {
|
||||
return new TextBlockBackcolored() {
|
||||
protected TextBlock getTextBlock() {
|
||||
return new AbstractTextBlock() {
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
drawInternal(ug);
|
||||
}
|
||||
|
||||
public MinMax getMinMax(StringBounder stringBounder) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public XRectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public XDimension2D calculateDimension(StringBounder stringBounder) {
|
||||
return TextBlockUtils.getMinMax(getTextBlock(), stringBounder, true).getDimension();
|
||||
}
|
||||
|
||||
public HColor getBackcolor() {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -66,11 +66,10 @@ import net.sourceforge.plantuml.style.Style;
|
||||
import net.sourceforge.plantuml.style.StyleBuilder;
|
||||
import net.sourceforge.plantuml.style.StyleSignature;
|
||||
import net.sourceforge.plantuml.style.StyleSignatureBasic;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
import net.sourceforge.plantuml.yaml.Highlighted;
|
||||
|
||||
//See TextBlockMap
|
||||
public class TextBlockJson extends AbstractTextBlock implements TextBlockBackcolored {
|
||||
public class TextBlockJson extends AbstractTextBlock {
|
||||
|
||||
private final List<Line> lines = new ArrayList<>();
|
||||
|
||||
|
@ -43,9 +43,8 @@ import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.AbstractTextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlockUtils;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
|
||||
public class PiecewiseAffineOnXorYBuilder extends AbstractTextBlock implements TextBlock, TextBlockBackcolored {
|
||||
public class PiecewiseAffineOnXorYBuilder extends AbstractTextBlock {
|
||||
|
||||
private final TextBlock textBlock;
|
||||
private final CompressionMode mode;
|
||||
|
@ -47,6 +47,7 @@ import net.sourceforge.plantuml.klimt.UPath;
|
||||
import net.sourceforge.plantuml.klimt.UShape;
|
||||
import net.sourceforge.plantuml.klimt.color.ColorMapper;
|
||||
import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.creole.legacy.AtomText;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMaxMutable;
|
||||
@ -142,6 +143,10 @@ public abstract class AbstractUGraphic<O> extends AbstractCommonUGraphic {
|
||||
}
|
||||
|
||||
private void updateMinMax(UShape shape) {
|
||||
if (matchesProperty("SPECIALTXT") && shape instanceof AtomText) {
|
||||
return;
|
||||
}
|
||||
|
||||
final double x = getTranslate().getDx();
|
||||
final double y = getTranslate().getDy();
|
||||
if (shape instanceof UText) {
|
||||
@ -179,8 +184,7 @@ public abstract class AbstractUGraphic<O> extends AbstractCommonUGraphic {
|
||||
} else if (shape instanceof UPixel) {
|
||||
addPoint(x, y);
|
||||
} else {
|
||||
System.err.println("ERROR ignoring " + shape.getClass().getName());
|
||||
// throw new UnsupportedOperationException(shape.getClass().getName());
|
||||
throw new UnsupportedOperationException(shape.getClass().getName());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -107,9 +107,9 @@ public class UGraphicTikz extends AbstractUGraphic<TikzGraphics> implements Clip
|
||||
|
||||
@Override
|
||||
public boolean matchesProperty(String propertyName) {
|
||||
if ("SPECIALTXT".equalsIgnoreCase(propertyName)) {
|
||||
if ("SPECIALTXT".equalsIgnoreCase(propertyName))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -33,13 +33,13 @@
|
||||
*
|
||||
*
|
||||
*/
|
||||
package net.sourceforge.plantuml.svek;
|
||||
package net.sourceforge.plantuml.klimt.geom;
|
||||
|
||||
import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.klimt.UTranslate;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
|
||||
public interface TextBlockBackcolored extends TextBlock {
|
||||
public interface MagneticBorder {
|
||||
|
||||
HColor getBackcolor();
|
||||
public UTranslate getForceAt(StringBounder stringBounder, XPoint2D position);
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,48 @@
|
||||
/* ========================================================================
|
||||
* PlantUML : a free UML diagram generator
|
||||
* ========================================================================
|
||||
*
|
||||
* (C) Copyright 2009-2024, Arnaud Roques
|
||||
*
|
||||
* Project Info: https://plantuml.com
|
||||
*
|
||||
* If you like this project or if you find it useful, you can support us at:
|
||||
*
|
||||
* https://plantuml.com/patreon (only 1$ per month!)
|
||||
* https://plantuml.com/paypal
|
||||
*
|
||||
* This file is part of PlantUML.
|
||||
*
|
||||
* PlantUML is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PlantUML distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||
* License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
* USA.
|
||||
*
|
||||
*
|
||||
* Original Author: Arnaud Roques
|
||||
*
|
||||
*
|
||||
*/
|
||||
package net.sourceforge.plantuml.klimt.geom;
|
||||
|
||||
import net.sourceforge.plantuml.klimt.UTranslate;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
|
||||
public class MagneticBorderNone implements MagneticBorder {
|
||||
|
||||
@Override
|
||||
public UTranslate getForceAt(StringBounder stringBounder, XPoint2D position) {
|
||||
return new UTranslate();
|
||||
}
|
||||
|
||||
}
|
@ -37,26 +37,26 @@ package net.sourceforge.plantuml.klimt.geom;
|
||||
|
||||
import net.sourceforge.plantuml.klimt.UTranslate;
|
||||
|
||||
public class ClusterPosition {
|
||||
public class RectangleArea {
|
||||
|
||||
private final double minX;
|
||||
private final double minY;
|
||||
private final double maxX;
|
||||
private final double maxY;
|
||||
|
||||
public ClusterPosition(double minX, double minY, double maxX, double maxY) {
|
||||
public RectangleArea(double minX, double minY, double maxX, double maxY) {
|
||||
this.minX = minX;
|
||||
this.minY = minY;
|
||||
this.maxX = maxX;
|
||||
this.maxY = maxY;
|
||||
}
|
||||
|
||||
public ClusterPosition(XPoint2D min, XPoint2D max) {
|
||||
public RectangleArea(XPoint2D min, XPoint2D max) {
|
||||
this(min.x, min.y, max.x, max.y);
|
||||
}
|
||||
|
||||
public ClusterPosition move(double deltaX, double deltaY) {
|
||||
return new ClusterPosition(minX + deltaX, minY + deltaY, maxX + deltaX, maxY + deltaY);
|
||||
public RectangleArea move(double deltaX, double deltaY) {
|
||||
return new RectangleArea(minX + deltaX, minY + deltaY, maxX + deltaX, maxY + deltaY);
|
||||
}
|
||||
|
||||
public double getWidth() {
|
||||
@ -71,15 +71,15 @@ public class ClusterPosition {
|
||||
return x >= minX && x < maxX && y >= minY && y < maxY;
|
||||
}
|
||||
|
||||
public ClusterPosition merge(ClusterPosition other) {
|
||||
return new ClusterPosition(Math.min(this.minX, other.minX), Math.min(this.minY, other.minY),
|
||||
public RectangleArea merge(RectangleArea other) {
|
||||
return new RectangleArea(Math.min(this.minX, other.minX), Math.min(this.minY, other.minY),
|
||||
Math.max(this.maxX, other.maxX), Math.max(this.maxY, other.maxY));
|
||||
}
|
||||
|
||||
public ClusterPosition merge(XPoint2D point) {
|
||||
public RectangleArea merge(XPoint2D point) {
|
||||
final double x = point.getX();
|
||||
final double y = point.getY();
|
||||
return new ClusterPosition(Math.min(this.minX, x), Math.min(this.minY, y), Math.max(this.maxX, x),
|
||||
return new RectangleArea(Math.min(this.minX, x), Math.min(this.minY, y), Math.max(this.maxX, x),
|
||||
Math.max(this.maxY, y));
|
||||
}
|
||||
|
||||
@ -135,58 +135,58 @@ public class ClusterPosition {
|
||||
return new XPoint2D((minX + maxX) / 2, (minY + maxY) / 2);
|
||||
}
|
||||
|
||||
public ClusterPosition withMinX(double d) {
|
||||
return new ClusterPosition(d, minY, maxX, maxY);
|
||||
public RectangleArea withMinX(double d) {
|
||||
return new RectangleArea(d, minY, maxX, maxY);
|
||||
}
|
||||
|
||||
public ClusterPosition withMaxX(double d) {
|
||||
return new ClusterPosition(minX, minY, d, maxY);
|
||||
public RectangleArea withMaxX(double d) {
|
||||
return new RectangleArea(minX, minY, d, maxY);
|
||||
}
|
||||
|
||||
public ClusterPosition addMaxX(double d) {
|
||||
return new ClusterPosition(minX, minY, maxX + d, maxY);
|
||||
public RectangleArea addMaxX(double d) {
|
||||
return new RectangleArea(minX, minY, maxX + d, maxY);
|
||||
}
|
||||
|
||||
public ClusterPosition addMaxY(double d) {
|
||||
return new ClusterPosition(minX, minY, maxX, maxY + d);
|
||||
public RectangleArea addMaxY(double d) {
|
||||
return new RectangleArea(minX, minY, maxX, maxY + d);
|
||||
}
|
||||
|
||||
public ClusterPosition addMinX(double d) {
|
||||
return new ClusterPosition(minX + d, minY, maxX, maxY);
|
||||
public RectangleArea addMinX(double d) {
|
||||
return new RectangleArea(minX + d, minY, maxX, maxY);
|
||||
}
|
||||
|
||||
public ClusterPosition addMinY(double d) {
|
||||
return new ClusterPosition(minX, minY + d, maxX, maxY);
|
||||
public RectangleArea addMinY(double d) {
|
||||
return new RectangleArea(minX, minY + d, maxX, maxY);
|
||||
}
|
||||
|
||||
public ClusterPosition withMinY(double d) {
|
||||
return new ClusterPosition(minX, d, maxX, maxY);
|
||||
public RectangleArea withMinY(double d) {
|
||||
return new RectangleArea(minX, d, maxX, maxY);
|
||||
}
|
||||
|
||||
public ClusterPosition withMaxY(double d) {
|
||||
return new ClusterPosition(minX, minY, maxX, d);
|
||||
public RectangleArea withMaxY(double d) {
|
||||
return new RectangleArea(minX, minY, maxX, d);
|
||||
}
|
||||
|
||||
public XPoint2D getProjectionOnFrontier(XPoint2D pt) {
|
||||
final double x = pt.getX();
|
||||
final double y = pt.getY();
|
||||
if (x > maxX && y >= minY && y <= maxY)
|
||||
return new XPoint2D(maxX - 1, y);
|
||||
// public XPoint2D getProjectionOnFrontier(XPoint2D pt) {
|
||||
// final double x = pt.getX();
|
||||
// final double y = pt.getY();
|
||||
// if (x > maxX && y >= minY && y <= maxY)
|
||||
// return new XPoint2D(maxX - 1, y);
|
||||
//
|
||||
// if (x < minX && y >= minY && y <= maxY)
|
||||
// return new XPoint2D(minX + 1, y);
|
||||
//
|
||||
// if (y > maxY && x >= minX && x <= maxX)
|
||||
// return new XPoint2D(x, maxY - 1);
|
||||
//
|
||||
// if (y < minY && x >= minX && x <= maxX)
|
||||
// return new XPoint2D(x, minY + 1);
|
||||
//
|
||||
// return new XPoint2D(x, y);
|
||||
// }
|
||||
|
||||
if (x < minX && y >= minY && y <= maxY)
|
||||
return new XPoint2D(minX + 1, y);
|
||||
|
||||
if (y > maxY && x >= minX && x <= maxX)
|
||||
return new XPoint2D(x, maxY - 1);
|
||||
|
||||
if (y < minY && x >= minX && x <= maxX)
|
||||
return new XPoint2D(x, minY + 1);
|
||||
|
||||
return new XPoint2D(x, y);
|
||||
}
|
||||
|
||||
public ClusterPosition delta(double m1, double m2) {
|
||||
return new ClusterPosition(minX, minY, maxX + m1, maxY + m2);
|
||||
public RectangleArea delta(double m1, double m2) {
|
||||
return new RectangleArea(minX, minY, maxX + m1, maxY + m2);
|
||||
}
|
||||
|
||||
public XDimension2D getDimension() {
|
||||
@ -197,12 +197,12 @@ public class ClusterPosition {
|
||||
return new UTranslate(getMinX(), getMinY());
|
||||
}
|
||||
|
||||
public boolean isPointJustUpper(XPoint2D pt) {
|
||||
if (pt.getX() >= minX && pt.getX() <= maxX && pt.getY() <= minY) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
// public boolean isPointJustUpper(XPoint2D pt) {
|
||||
// if (pt.getX() >= minX && pt.getX() <= maxX && pt.getY() <= minY) {
|
||||
// return true;
|
||||
// }
|
||||
// return false;
|
||||
// }
|
||||
|
||||
public Side getClosestSide(XPoint2D pt) {
|
||||
final double distNorth = Math.abs(minY - pt.getY());
|
@ -36,7 +36,10 @@
|
||||
package net.sourceforge.plantuml.klimt.shape;
|
||||
|
||||
import net.atmp.InnerStrategy;
|
||||
import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorderNone;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
|
||||
@ -51,4 +54,15 @@ public abstract class AbstractTextBlock implements TextBlock {
|
||||
public MinMax getMinMax(StringBounder stringBounder) {
|
||||
throw new UnsupportedOperationException(getClass().toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagneticBorder getMagneticBorder() {
|
||||
return new MagneticBorderNone();
|
||||
}
|
||||
|
||||
@Override
|
||||
public HColor getBackcolor() {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
@ -49,8 +49,9 @@ import java.util.Set;
|
||||
|
||||
import net.sourceforge.plantuml.klimt.UPath;
|
||||
import net.sourceforge.plantuml.klimt.UShape;
|
||||
import net.sourceforge.plantuml.klimt.UTranslate;
|
||||
import net.sourceforge.plantuml.klimt.geom.BezierUtils;
|
||||
import net.sourceforge.plantuml.klimt.geom.ClusterPosition;
|
||||
import net.sourceforge.plantuml.klimt.geom.RectangleArea;
|
||||
import net.sourceforge.plantuml.klimt.geom.EnsureVisible;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinFinder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
@ -193,6 +194,14 @@ public class DotPath implements UShape, Moveable {
|
||||
beziers.get(0).ctrly1 = y;
|
||||
}
|
||||
|
||||
public void moveStartPoint(UTranslate move) {
|
||||
moveStartPoint(move.getDx(), move.getDy());
|
||||
}
|
||||
|
||||
public void moveEndPoint(UTranslate move) {
|
||||
moveEndPoint(move.getDx(), move.getDy());
|
||||
}
|
||||
|
||||
public void moveStartPoint(double dx, double dy) {
|
||||
beziers.get(0).x1 += dx;
|
||||
beziers.get(0).y1 += dy;
|
||||
@ -400,7 +409,7 @@ public class DotPath implements UShape, Moveable {
|
||||
return Collections.unmodifiableList(beziers);
|
||||
}
|
||||
|
||||
public DotPath simulateCompound(ClusterPosition head, ClusterPosition tail) {
|
||||
public DotPath simulateCompound(RectangleArea head, RectangleArea tail) {
|
||||
if (head == null && tail == null)
|
||||
return this;
|
||||
|
||||
|
@ -57,7 +57,6 @@ import net.sourceforge.plantuml.klimt.sprite.SpriteContainerEmpty;
|
||||
import net.sourceforge.plantuml.svek.IEntityImage;
|
||||
import net.sourceforge.plantuml.svek.Margins;
|
||||
import net.sourceforge.plantuml.svek.ShapeType;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
|
||||
public class GraphicStrings extends AbstractTextBlock implements IEntityImage {
|
||||
|
||||
@ -97,21 +96,20 @@ public class GraphicStrings extends AbstractTextBlock implements IEntityImage {
|
||||
return HColors.BLACK;
|
||||
}
|
||||
|
||||
public static TextBlockBackcolored createGreenOnBlackMonospaced(List<String> strings) {
|
||||
public static TextBlock createGreenOnBlackMonospaced(List<String> strings) {
|
||||
return new GraphicStrings(strings, monospaced14(HColors.GREEN), HColors.BLACK, null, null,
|
||||
CreoleMode.SIMPLE_LINE);
|
||||
}
|
||||
|
||||
public static TextBlockBackcolored createBlackOnWhite(List<String> strings) {
|
||||
public static TextBlock createBlackOnWhite(List<String> strings) {
|
||||
return new GraphicStrings(strings, sansSerif12(HColors.BLACK), HColors.WHITE, null, null, CreoleMode.FULL);
|
||||
}
|
||||
|
||||
public static TextBlockBackcolored createBlackOnWhiteMonospaced(List<String> strings) {
|
||||
public static TextBlock createBlackOnWhiteMonospaced(List<String> strings) {
|
||||
return new GraphicStrings(strings, monospaced14(HColors.BLACK), HColors.WHITE, null, null, CreoleMode.FULL);
|
||||
}
|
||||
|
||||
public static TextBlockBackcolored createBlackOnWhite(List<String> strings, BufferedImage image,
|
||||
GraphicPosition position) {
|
||||
public static TextBlock createBlackOnWhite(List<String> strings, BufferedImage image, GraphicPosition position) {
|
||||
return new GraphicStrings(strings, sansSerif12(HColors.BLACK), HColors.WHITE, image, position,
|
||||
CreoleMode.FULL_BUT_UNDERSCORE);
|
||||
}
|
||||
|
@ -37,7 +37,9 @@ package net.sourceforge.plantuml.klimt.shape;
|
||||
|
||||
import net.atmp.InnerStrategy;
|
||||
import net.sourceforge.plantuml.klimt.UShape;
|
||||
import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
@ -50,4 +52,8 @@ public interface TextBlock extends UDrawable, UShape {
|
||||
|
||||
public XRectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy);
|
||||
|
||||
public MagneticBorder getMagneticBorder();
|
||||
|
||||
public HColor getBackcolor();
|
||||
|
||||
}
|
@ -41,9 +41,8 @@ import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
|
||||
public class TextBlockRecentred extends AbstractTextBlock implements TextBlockBackcolored {
|
||||
public class TextBlockRecentred extends AbstractTextBlock {
|
||||
|
||||
private final TextBlock textBlock;
|
||||
|
||||
@ -80,10 +79,7 @@ public class TextBlockRecentred extends AbstractTextBlock implements TextBlockBa
|
||||
}
|
||||
|
||||
public HColor getBackcolor() {
|
||||
if (textBlock instanceof TextBlockBackcolored) {
|
||||
return ((TextBlockBackcolored) textBlock).getBackcolor();
|
||||
}
|
||||
return null;
|
||||
return textBlock.getBackcolor();
|
||||
}
|
||||
|
||||
}
|
@ -38,14 +38,17 @@ package net.sourceforge.plantuml.klimt.shape;
|
||||
import net.atmp.InnerStrategy;
|
||||
import net.sourceforge.plantuml.klimt.LineBreakStrategy;
|
||||
import net.sourceforge.plantuml.klimt.UTranslate;
|
||||
import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.creole.CreoleMode;
|
||||
import net.sourceforge.plantuml.klimt.creole.Display;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.FontConfiguration;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.HorizontalAlignment;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XPoint2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
import net.sourceforge.plantuml.style.ISkinSimple;
|
||||
|
||||
@ -83,4 +86,20 @@ public class TextBlockTitle implements TextBlock {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagneticBorder getMagneticBorder() {
|
||||
return new MagneticBorder() {
|
||||
|
||||
@Override
|
||||
public UTranslate getForceAt(StringBounder stringBounder, XPoint2D position) {
|
||||
return textBlock.getMagneticBorder().getForceAt(stringBounder, position.move(-outMargin, 0));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public HColor getBackcolor() {
|
||||
return textBlock.getBackcolor();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -42,6 +42,7 @@ import net.sourceforge.plantuml.klimt.drawing.LimitFinder;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.HorizontalAlignment;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.Positionable;
|
||||
import net.sourceforge.plantuml.klimt.geom.PositionableImpl;
|
||||
@ -50,7 +51,6 @@ import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XPoint2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
import net.sourceforge.plantuml.style.ClockwiseTopRightBottomLeft;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
|
||||
public class TextBlockUtils {
|
||||
|
||||
@ -176,11 +176,19 @@ public class TextBlockUtils {
|
||||
return null;
|
||||
}
|
||||
|
||||
public MagneticBorder getMagneticBorder() {
|
||||
return bloc.getMagneticBorder();
|
||||
}
|
||||
|
||||
public HColor getBackcolor() {
|
||||
return bloc.getBackcolor();
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
public static TextBlockBackcolored addBackcolor(final TextBlock text, final HColor backColor) {
|
||||
return new TextBlockBackcolored() {
|
||||
public static TextBlock addBackcolor(final TextBlock text, final HColor backColor) {
|
||||
return new TextBlock() {
|
||||
public void drawU(UGraphic ug) {
|
||||
text.drawU(ug);
|
||||
}
|
||||
@ -200,11 +208,15 @@ public class TextBlockUtils {
|
||||
public HColor getBackcolor() {
|
||||
return backColor;
|
||||
}
|
||||
|
||||
public MagneticBorder getMagneticBorder() {
|
||||
return text.getMagneticBorder();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static TextBlock fromUImage(final UImage image) {
|
||||
return new TextBlock() {
|
||||
return new AbstractTextBlock() {
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
ug.draw(image);
|
||||
@ -218,10 +230,6 @@ public class TextBlockUtils {
|
||||
return MinMax.fromMax(image.getWidth(), image.getHeight());
|
||||
}
|
||||
|
||||
public XRectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
|
||||
return null;
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -47,7 +47,6 @@ import net.sourceforge.plantuml.klimt.geom.HorizontalAlignment;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
import net.sourceforge.plantuml.svek.Ports;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
import net.sourceforge.plantuml.svek.WithPorts;
|
||||
|
||||
public class TextBlockVertical2 extends AbstractTextBlock implements TextBlock, WithPorts {
|
||||
@ -100,13 +99,12 @@ public class TextBlockVertical2 extends AbstractTextBlock implements TextBlock,
|
||||
|
||||
for (TextBlock block : blocks) {
|
||||
final XDimension2D dimb = block.calculateDimension(ug.getStringBounder());
|
||||
if (block instanceof TextBlockBackcolored) {
|
||||
final HColor back = ((TextBlockBackcolored) block).getBackcolor();
|
||||
if (back != null && back.isTransparent() == false)
|
||||
ug.apply(UTranslate.dy(y)).apply(back).apply(back.bg())
|
||||
.draw(new URectangle(dimtotal.getWidth(), dimb.getHeight()));
|
||||
|
||||
}
|
||||
final HColor back = block.getBackcolor();
|
||||
if (back != null && back.isTransparent() == false)
|
||||
ug.apply(UTranslate.dy(y)).apply(back).apply(back.bg())
|
||||
.draw(new URectangle(dimtotal.getWidth(), dimb.getHeight()));
|
||||
|
||||
if (horizontalAlignment == HorizontalAlignment.LEFT) {
|
||||
block.drawU(ug.apply(UTranslate.dy(y)));
|
||||
} else if (horizontalAlignment == HorizontalAlignment.CENTER) {
|
||||
|
@ -36,8 +36,10 @@
|
||||
package net.sourceforge.plantuml.klimt.shape;
|
||||
|
||||
import net.atmp.InnerStrategy;
|
||||
import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
@ -49,9 +51,9 @@ public class TextBlockWithUrl implements TextBlock {
|
||||
private final Url url;
|
||||
|
||||
public static TextBlock withUrl(TextBlock block, Url url) {
|
||||
if (url == null) {
|
||||
if (url == null)
|
||||
return block;
|
||||
}
|
||||
|
||||
return new TextBlockWithUrl(block, url);
|
||||
|
||||
}
|
||||
@ -79,4 +81,14 @@ public class TextBlockWithUrl implements TextBlock {
|
||||
return block.getInnerPosition(member, stringBounder, strategy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagneticBorder getMagneticBorder() {
|
||||
return block.getMagneticBorder();
|
||||
}
|
||||
|
||||
@Override
|
||||
public HColor getBackcolor() {
|
||||
return block.getBackcolor();
|
||||
}
|
||||
|
||||
}
|
@ -54,10 +54,10 @@ import net.sourceforge.plantuml.klimt.AffineTransformType;
|
||||
import net.sourceforge.plantuml.klimt.MutableImage;
|
||||
import net.sourceforge.plantuml.klimt.drawing.eps.EpsGraphics;
|
||||
import net.sourceforge.plantuml.klimt.shape.GraphicStrings;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.UImageSvg;
|
||||
import net.sourceforge.plantuml.log.Logme;
|
||||
import net.sourceforge.plantuml.security.SImageIO;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
import net.sourceforge.plantuml.utils.Log;
|
||||
|
||||
public class ScientificEquationSafe {
|
||||
@ -133,7 +133,7 @@ public class ScientificEquationSafe {
|
||||
Logme.error(e);
|
||||
}
|
||||
|
||||
private TextBlockBackcolored getRollback() {
|
||||
private TextBlock getRollback() {
|
||||
return GraphicStrings.createBlackOnWhiteMonospaced(Arrays.asList(formula));
|
||||
}
|
||||
|
||||
|
@ -40,7 +40,6 @@ import java.io.OutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.atmp.InnerStrategy;
|
||||
import net.sourceforge.plantuml.FileFormatOption;
|
||||
import net.sourceforge.plantuml.UmlDiagram;
|
||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||
@ -52,13 +51,12 @@ import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.creole.Display;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.Rankdir;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.AbstractTextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.skin.SkinParam;
|
||||
import net.sourceforge.plantuml.skin.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
import net.sourceforge.plantuml.utils.Direction;
|
||||
|
||||
public class MindMapDiagram extends UmlDiagram {
|
||||
@ -89,8 +87,8 @@ public class MindMapDiagram extends UmlDiagram {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected TextBlockBackcolored getTextBlock() {
|
||||
return new TextBlockBackcolored() {
|
||||
protected TextBlock getTextBlock() {
|
||||
return new AbstractTextBlock() {
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
for (MindMap mindmap : mindmaps) {
|
||||
@ -100,10 +98,6 @@ public class MindMapDiagram extends UmlDiagram {
|
||||
}
|
||||
}
|
||||
|
||||
public XRectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public XDimension2D calculateDimension(StringBounder stringBounder) {
|
||||
double width = 0;
|
||||
double height = 0;
|
||||
@ -115,13 +109,6 @@ public class MindMapDiagram extends UmlDiagram {
|
||||
return new XDimension2D(width, height);
|
||||
}
|
||||
|
||||
public MinMax getMinMax(StringBounder stringBounder) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public HColor getBackcolor() {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -44,7 +44,6 @@ import java.util.Map;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import net.atmp.InnerStrategy;
|
||||
import net.sourceforge.plantuml.FileFormatOption;
|
||||
import net.sourceforge.plantuml.UmlDiagram;
|
||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||
@ -58,9 +57,8 @@ import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.FontConfiguration;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.HorizontalAlignment;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.AbstractTextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlockUtils;
|
||||
import net.sourceforge.plantuml.klimt.shape.UDrawable;
|
||||
@ -80,7 +78,6 @@ import net.sourceforge.plantuml.style.SName;
|
||||
import net.sourceforge.plantuml.style.Style;
|
||||
import net.sourceforge.plantuml.style.StyleBuilder;
|
||||
import net.sourceforge.plantuml.style.StyleSignatureBasic;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
|
||||
public class NwDiagram extends UmlDiagram {
|
||||
|
||||
@ -263,28 +260,16 @@ public class NwDiagram extends UmlDiagram {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected TextBlockBackcolored getTextBlock() {
|
||||
return new TextBlockBackcolored() {
|
||||
protected TextBlock getTextBlock() {
|
||||
return new AbstractTextBlock() {
|
||||
public void drawU(UGraphic ug) {
|
||||
drawMe(ug);
|
||||
}
|
||||
|
||||
public XRectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public XDimension2D calculateDimension(StringBounder stringBounder) {
|
||||
return getTotalDimension(stringBounder);
|
||||
}
|
||||
|
||||
public MinMax getMinMax(StringBounder stringBounder) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public HColor getBackcolor() {
|
||||
return null;
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -36,8 +36,11 @@ package net.sourceforge.plantuml.nwdiag.next;
|
||||
|
||||
import net.atmp.InnerStrategy;
|
||||
import net.sourceforge.plantuml.klimt.UTranslate;
|
||||
import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorderNone;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
@ -126,4 +129,14 @@ public class GridTextBlockSimple implements TextBlock {
|
||||
return skinParam;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagneticBorder getMagneticBorder() {
|
||||
return new MagneticBorderNone();
|
||||
}
|
||||
|
||||
@Override
|
||||
public HColor getBackcolor() {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -51,7 +51,6 @@ import java.util.Set;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import net.atmp.InnerStrategy;
|
||||
import net.sourceforge.plantuml.FileFormat;
|
||||
import net.sourceforge.plantuml.FileFormatOption;
|
||||
import net.sourceforge.plantuml.TitledDiagram;
|
||||
@ -68,9 +67,8 @@ import net.sourceforge.plantuml.klimt.creole.Display;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.HorizontalAlignment;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.AbstractTextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.UDrawable;
|
||||
import net.sourceforge.plantuml.klimt.shape.URectangle;
|
||||
@ -115,7 +113,6 @@ import net.sourceforge.plantuml.style.SName;
|
||||
import net.sourceforge.plantuml.style.Style;
|
||||
import net.sourceforge.plantuml.style.StyleSignatureBasic;
|
||||
import net.sourceforge.plantuml.svek.GraphvizCrash;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
|
||||
public class GanttDiagram extends TitledDiagram implements ToTaskDraw, WithSprite {
|
||||
|
||||
@ -211,7 +208,7 @@ public class GanttDiagram extends TitledDiagram implements ToTaskDraw, WithSprit
|
||||
return getTextBlock(stringBounder);
|
||||
}
|
||||
|
||||
private TextBlockBackcolored getTextBlock(StringBounder stringBounder) {
|
||||
private TextBlock getTextBlock(StringBounder stringBounder) {
|
||||
if (printStart == null) {
|
||||
initMinMax();
|
||||
} else {
|
||||
@ -220,7 +217,7 @@ public class GanttDiagram extends TitledDiagram implements ToTaskDraw, WithSprit
|
||||
}
|
||||
final TimeHeader timeHeader = getTimeHeader();
|
||||
initTaskAndResourceDraws(timeHeader.getTimeScale(), timeHeader.getFullHeaderHeight(), stringBounder);
|
||||
return new TextBlockBackcolored() {
|
||||
return new AbstractTextBlock() {
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
try {
|
||||
@ -279,10 +276,6 @@ public class GanttDiagram extends TitledDiagram implements ToTaskDraw, WithSprit
|
||||
return width;
|
||||
}
|
||||
|
||||
public XRectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public XDimension2D calculateDimension(StringBounder stringBounder) {
|
||||
return new XDimension2D(getTitlesColumnWidth(stringBounder) + getBarsColumnWidth(timeHeader),
|
||||
getTotalHeight(timeHeader));
|
||||
@ -294,13 +287,6 @@ public class GanttDiagram extends TitledDiagram implements ToTaskDraw, WithSprit
|
||||
return xmax - xmin;
|
||||
}
|
||||
|
||||
public MinMax getMinMax(StringBounder stringBounder) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public HColor getBackcolor() {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -71,7 +71,6 @@ import net.sourceforge.plantuml.skin.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.style.ISkinParam;
|
||||
import net.sourceforge.plantuml.style.PName;
|
||||
import net.sourceforge.plantuml.style.Style;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
import net.sourceforge.plantuml.utils.BlocLines;
|
||||
import net.sourceforge.plantuml.utils.CharInspector;
|
||||
|
||||
@ -127,7 +126,7 @@ public class PSystemRegex extends TitledDiagram {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected TextBlockBackcolored getTextBlock() {
|
||||
protected TextBlock getTextBlock() {
|
||||
// while (stack.size() > 1)
|
||||
// concatenation();
|
||||
final ETile peekFirst = stack.peekFirst();
|
||||
|
@ -42,7 +42,6 @@ import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import net.atmp.InnerStrategy;
|
||||
import net.sourceforge.plantuml.FileFormat;
|
||||
import net.sourceforge.plantuml.FileFormatOption;
|
||||
import net.sourceforge.plantuml.ScaleSimple;
|
||||
@ -61,9 +60,8 @@ import net.sourceforge.plantuml.klimt.color.HColors;
|
||||
import net.sourceforge.plantuml.klimt.color.NoSuchColorException;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.AbstractTextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.klimt.sprite.Sprite;
|
||||
import net.sourceforge.plantuml.log.Logme;
|
||||
@ -89,7 +87,6 @@ import net.sourceforge.plantuml.salt.factory.ElementFactoryTextField;
|
||||
import net.sourceforge.plantuml.salt.factory.ElementFactoryTree;
|
||||
import net.sourceforge.plantuml.skin.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.style.ClockwiseTopRightBottomLeft;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
import net.sourceforge.plantuml.utils.BlocLines;
|
||||
import net.sourceforge.plantuml.utils.Log;
|
||||
|
||||
@ -137,8 +134,8 @@ public class PSystemSalt extends TitledDiagram implements WithSprite {
|
||||
return getTextBlock(salt, size);
|
||||
}
|
||||
|
||||
private TextBlockBackcolored getTextBlock(final Element salt, final XDimension2D size) {
|
||||
return new TextBlockBackcolored() {
|
||||
private TextBlock getTextBlock(final Element salt, final XDimension2D size) {
|
||||
return new AbstractTextBlock() {
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
ug = ug.apply(getBlack());
|
||||
@ -150,14 +147,6 @@ public class PSystemSalt extends TitledDiagram implements WithSprite {
|
||||
return size;
|
||||
}
|
||||
|
||||
public MinMax getMinMax(StringBounder stringBounder) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public XRectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public HColor getBackcolor() {
|
||||
return getSkinParam().getBackgroundColor();
|
||||
}
|
||||
|
@ -99,7 +99,6 @@ import net.sourceforge.plantuml.svek.GeneralImageBuilder;
|
||||
import net.sourceforge.plantuml.svek.GraphvizCrash;
|
||||
import net.sourceforge.plantuml.svek.IEntityImage;
|
||||
import net.sourceforge.plantuml.svek.SvekNode;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
import smetana.core.CString;
|
||||
import smetana.core.Globals;
|
||||
import smetana.core.JUtils;
|
||||
@ -148,7 +147,7 @@ public class CucaDiagramFileMakerSmetana implements CucaDiagramFileMaker {
|
||||
return result;
|
||||
}
|
||||
|
||||
class Drawing extends AbstractTextBlock implements TextBlockBackcolored {
|
||||
class Drawing extends AbstractTextBlock {
|
||||
|
||||
private final YMirror ymirror;
|
||||
private final MinMaxMutable minMax;
|
||||
|
@ -45,16 +45,14 @@ import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
import net.atmp.InnerStrategy;
|
||||
import net.sourceforge.plantuml.klimt.UClip;
|
||||
import net.sourceforge.plantuml.klimt.UStroke;
|
||||
import net.sourceforge.plantuml.klimt.UTranslate;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.drawing.txt.UGraphicTxt;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.AbstractTextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.sequencediagram.Doll;
|
||||
import net.sourceforge.plantuml.sequencediagram.Event;
|
||||
@ -245,7 +243,7 @@ public class DrawableSet {
|
||||
}
|
||||
|
||||
TextBlock asTextBlock(final double delta, final double width, final Page page, final boolean showTail) {
|
||||
return new TextBlock() {
|
||||
return new AbstractTextBlock() {
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
drawU22(ug, delta, width, page, showTail);
|
||||
@ -256,14 +254,6 @@ public class DrawableSet {
|
||||
return new XDimension2D(width, height);
|
||||
}
|
||||
|
||||
public MinMax getMinMax(StringBounder stringBounder) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public XRectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -40,6 +40,8 @@ import java.util.Objects;
|
||||
import net.sourceforge.plantuml.abel.Entity;
|
||||
import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorderNone;
|
||||
import net.sourceforge.plantuml.klimt.shape.AbstractTextBlock;
|
||||
import net.sourceforge.plantuml.stereo.Stereotype;
|
||||
import net.sourceforge.plantuml.style.ISkinParam;
|
||||
|
@ -67,8 +67,8 @@ import net.sourceforge.plantuml.klimt.color.HColorSet;
|
||||
import net.sourceforge.plantuml.klimt.color.HColors;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.ClusterPosition;
|
||||
import net.sourceforge.plantuml.klimt.geom.Moveable;
|
||||
import net.sourceforge.plantuml.klimt.geom.RectangleArea;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XPoint2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
@ -114,7 +114,7 @@ public class Cluster implements Moveable {
|
||||
private XPoint2D xyNoteTop;
|
||||
private XPoint2D xyNoteBottom;
|
||||
|
||||
private ClusterPosition clusterPosition;
|
||||
private RectangleArea rectangleArea;
|
||||
|
||||
public void moveSvek(double deltaX, double deltaY) {
|
||||
if (this.xyNoteTop != null)
|
||||
@ -123,8 +123,8 @@ public class Cluster implements Moveable {
|
||||
this.xyNoteBottom = this.xyNoteBottom.move(deltaX, deltaY);
|
||||
if (this.xyTitle != null)
|
||||
this.xyTitle = this.xyTitle.move(deltaX, deltaY);
|
||||
if (this.clusterPosition != null)
|
||||
this.clusterPosition = this.clusterPosition.move(deltaX, deltaY);
|
||||
if (this.rectangleArea != null)
|
||||
this.rectangleArea = this.rectangleArea.move(deltaX, deltaY);
|
||||
|
||||
}
|
||||
|
||||
@ -257,8 +257,8 @@ public class Cluster implements Moveable {
|
||||
return clusterHeader.getTitleAndAttributeHeight();
|
||||
}
|
||||
|
||||
public ClusterPosition getClusterPosition() {
|
||||
return clusterPosition;
|
||||
public RectangleArea getRectangleArea() {
|
||||
return rectangleArea;
|
||||
}
|
||||
|
||||
public void setTitlePosition(XPoint2D pos) {
|
||||
@ -339,7 +339,7 @@ public class Cluster implements Moveable {
|
||||
group.getUSymbol(), skinParam.getCurrentStyleBuilder(), skinParam.getIHtmlColorSet());
|
||||
|
||||
final ClusterDecoration decoration = new ClusterDecoration(packageStyle, group.getUSymbol(),
|
||||
clusterHeader.getTitle(), clusterHeader.getStereo(), clusterPosition, stroke);
|
||||
clusterHeader.getTitle(), clusterHeader.getStereo(), rectangleArea, stroke);
|
||||
decoration.drawU(ug, backColor, borderColor, shadowing, rounded,
|
||||
skinParam.getHorizontalAlignment(AlignmentParam.packageTitleAlignment, null, false, null),
|
||||
skinParam.getStereotypeAlignment(), diagonalCorner);
|
||||
@ -371,43 +371,44 @@ public class Cluster implements Moveable {
|
||||
}
|
||||
|
||||
void manageEntryExitPoint(StringBounder stringBounder) {
|
||||
final Collection<ClusterPosition> insides = new ArrayList<>();
|
||||
final Collection<RectangleArea> insides = new ArrayList<>();
|
||||
final List<XPoint2D> points = new ArrayList<>();
|
||||
for (SvekNode sh : nodes)
|
||||
if (isNormalPosition(sh))
|
||||
insides.add(sh.getClusterPosition());
|
||||
insides.add(sh.getRectangleArea());
|
||||
else
|
||||
points.add(sh.getClusterPosition().getPointCenter());
|
||||
points.add(sh.getRectangleArea().getPointCenter());
|
||||
|
||||
for (Cluster in : children)
|
||||
insides.add(in.getClusterPosition());
|
||||
insides.add(in.getRectangleArea());
|
||||
|
||||
final FrontierCalculator frontierCalculator = new FrontierCalculator(getClusterPosition(), insides, points);
|
||||
final FrontierCalculator frontierCalculator = new FrontierCalculator(getRectangleArea(), insides, points,
|
||||
skinParam.getRankdir());
|
||||
if (getTitleAndAttributeWidth() > 0 && getTitleAndAttributeHeight() > 0)
|
||||
frontierCalculator.ensureMinWidth(getTitleAndAttributeWidth() + 10);
|
||||
|
||||
this.clusterPosition = frontierCalculator.getSuggestedPosition();
|
||||
this.rectangleArea = frontierCalculator.getSuggestedPosition();
|
||||
|
||||
final double widthTitle = clusterHeader.getTitle().calculateDimension(stringBounder).getWidth();
|
||||
final double minX = clusterPosition.getMinX();
|
||||
final double minY = clusterPosition.getMinY();
|
||||
this.xyTitle = new XPoint2D(minX + ((clusterPosition.getWidth() - widthTitle) / 2), minY + IEntityImage.MARGIN);
|
||||
final double minX = rectangleArea.getMinX();
|
||||
final double minY = rectangleArea.getMinY();
|
||||
this.xyTitle = new XPoint2D(minX + ((rectangleArea.getWidth() - widthTitle) / 2), minY + IEntityImage.MARGIN);
|
||||
}
|
||||
|
||||
private void drawSwinLinesState(UGraphic ug, HColor borderColor) {
|
||||
clusterHeader.getTitle().drawU(ug.apply(UTranslate.dx(xyTitle.x)));
|
||||
|
||||
final ULine line = ULine.vline(clusterPosition.getHeight());
|
||||
final ULine line = ULine.vline(rectangleArea.getHeight());
|
||||
ug = ug.apply(borderColor);
|
||||
ug.apply(UTranslate.dx(clusterPosition.getMinX())).draw(line);
|
||||
ug.apply(UTranslate.dx(clusterPosition.getMaxX())).draw(line);
|
||||
ug.apply(UTranslate.dx(rectangleArea.getMinX())).draw(line);
|
||||
ug.apply(UTranslate.dx(rectangleArea.getMaxX())).draw(line);
|
||||
|
||||
}
|
||||
|
||||
// GroupPngMakerState
|
||||
|
||||
private void drawUState(UGraphic ug, UmlDiagramType umlDiagramType, double rounded, double shadowing) {
|
||||
final XDimension2D total = clusterPosition.getDimension();
|
||||
final XDimension2D total = rectangleArea.getDimension();
|
||||
final double suppY = clusterHeader.getTitle().calculateDimension(ug.getStringBounder()).getHeight()
|
||||
+ IEntityImage.MARGIN;
|
||||
|
||||
@ -438,23 +439,23 @@ public class Cluster implements Moveable {
|
||||
final RoundedContainer r = new RoundedContainer(total, suppY,
|
||||
attributeHeight + (attributeHeight > 0 ? IEntityImage.MARGIN : 0), borderColor, backColor, imgBackcolor,
|
||||
stroke, rounded, shadowing);
|
||||
r.drawU(ug.apply(clusterPosition.getPosition()));
|
||||
r.drawU(ug.apply(rectangleArea.getPosition()));
|
||||
|
||||
clusterHeader.getTitle().drawU(ug.apply(new UTranslate(xyTitle)));
|
||||
|
||||
if (attributeHeight > 0)
|
||||
attribute.drawU(ug.apply(new UTranslate(clusterPosition.getMinX() + IEntityImage.MARGIN,
|
||||
clusterPosition.getMinY() + suppY + IEntityImage.MARGIN / 2.0)));
|
||||
attribute.drawU(ug.apply(new UTranslate(rectangleArea.getMinX() + IEntityImage.MARGIN,
|
||||
rectangleArea.getMinY() + suppY + IEntityImage.MARGIN / 2.0)));
|
||||
|
||||
final Stereotype stereotype = group.getStereotype();
|
||||
final boolean withSymbol = stereotype != null && stereotype.isWithOOSymbol();
|
||||
if (withSymbol)
|
||||
EntityImageState.drawSymbol(ug.apply(borderColor), clusterPosition.getMaxX(), clusterPosition.getMaxY());
|
||||
EntityImageState.drawSymbol(ug.apply(borderColor), rectangleArea.getMaxX(), rectangleArea.getMaxY());
|
||||
|
||||
}
|
||||
|
||||
public void setPosition(XPoint2D min, XPoint2D max) {
|
||||
this.clusterPosition = new ClusterPosition(min, max);
|
||||
this.rectangleArea = new RectangleArea(min, max);
|
||||
}
|
||||
|
||||
// ::comment when CORE
|
||||
@ -641,18 +642,18 @@ public class Cluster implements Moveable {
|
||||
return backColor;
|
||||
}
|
||||
|
||||
double checkFolderPosition(XPoint2D pt, StringBounder stringBounder) {
|
||||
if (getClusterPosition().isPointJustUpper(pt)) {
|
||||
|
||||
final XDimension2D dimTitle = clusterHeader.getTitle().calculateDimension(stringBounder);
|
||||
|
||||
if (pt.getX() < getClusterPosition().getMinX() + dimTitle.getWidth())
|
||||
return 0;
|
||||
|
||||
return getClusterPosition().getMinY() - pt.getY() + dimTitle.getHeight();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
// double checkFolderPosition(XPoint2D pt, StringBounder stringBounder) {
|
||||
// if (getClusterPosition().isPointJustUpper(pt)) {
|
||||
//
|
||||
// final XDimension2D dimTitle = clusterHeader.getTitle().calculateDimension(stringBounder);
|
||||
//
|
||||
// if (pt.getX() < getClusterPosition().getMinX() + dimTitle.getWidth())
|
||||
// return 0;
|
||||
//
|
||||
// return getClusterPosition().getMinY() - pt.getY() + dimTitle.getHeight();
|
||||
// }
|
||||
// return 0;
|
||||
// }
|
||||
|
||||
public final int getColorNoteTop() {
|
||||
return colorNoteTop;
|
||||
|
@ -41,7 +41,7 @@ import net.sourceforge.plantuml.klimt.Fashion;
|
||||
import net.sourceforge.plantuml.klimt.UStroke;
|
||||
import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.geom.ClusterPosition;
|
||||
import net.sourceforge.plantuml.klimt.geom.RectangleArea;
|
||||
import net.sourceforge.plantuml.klimt.geom.HorizontalAlignment;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
|
||||
@ -52,14 +52,14 @@ public class ClusterDecoration {
|
||||
final private TextBlock title;
|
||||
final private TextBlock stereo;
|
||||
|
||||
final private ClusterPosition clusterPosition;
|
||||
final private RectangleArea rectangleArea;
|
||||
|
||||
public ClusterDecoration(PackageStyle style, USymbol symbol, TextBlock title, TextBlock stereo,
|
||||
ClusterPosition clusterPosition, UStroke stroke) {
|
||||
RectangleArea rectangleArea, UStroke stroke) {
|
||||
this.symbol = guess(symbol, style);
|
||||
this.stereo = stereo;
|
||||
this.title = title;
|
||||
this.clusterPosition = clusterPosition;
|
||||
this.rectangleArea = rectangleArea;
|
||||
this.defaultStroke = stroke;
|
||||
}
|
||||
|
||||
@ -78,8 +78,8 @@ public class ClusterDecoration {
|
||||
|
||||
final Fashion symbolContext = biColor.withShadow(shadowing).withStroke(defaultStroke).withCorner(roundCorner,
|
||||
diagonalCorner);
|
||||
symbol.asBig(title, titleAlignment, stereo, clusterPosition.getWidth(), clusterPosition.getHeight(),
|
||||
symbolContext, stereoAlignment).drawU(ug.apply(clusterPosition.getPosition()));
|
||||
symbol.asBig(title, titleAlignment, stereo, rectangleArea.getWidth(), rectangleArea.getHeight(),
|
||||
symbolContext, stereoAlignment).drawU(ug.apply(rectangleArea.getPosition()));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -51,6 +51,7 @@ import net.sourceforge.plantuml.dot.CucaDiagramSimplifierState;
|
||||
import net.sourceforge.plantuml.dot.DotData;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.log.Logme;
|
||||
import net.sourceforge.plantuml.skin.UmlDiagramType;
|
||||
|
||||
@ -101,7 +102,7 @@ public final class CucaDiagramFileMakerSvek implements CucaDiagramFileMaker {
|
||||
if (fileFormatOption.isDebugSvek() && os instanceof NamedOutputStream)
|
||||
basefile = ((NamedOutputStream) os).getBasefile();
|
||||
|
||||
TextBlockBackcolored result = svek2.buildImage(basefile, diagram.getDotStringSkek());
|
||||
TextBlock result = svek2.buildImage(basefile, diagram.getDotStringSkek());
|
||||
if (result instanceof GraphvizCrash) {
|
||||
svek2 = createDotDataImageBuilder(DotMode.NO_LEFT_RIGHT_AND_XLABEL, stringBounder);
|
||||
result = svek2.buildImage(basefile, diagram.getDotStringSkek());
|
||||
|
@ -48,7 +48,7 @@ import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.AbstractTextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
|
||||
public class DecorateEntityImage extends AbstractTextBlock implements TextBlockBackcolored {
|
||||
public class DecorateEntityImage extends AbstractTextBlock {
|
||||
|
||||
private final TextBlock original;
|
||||
private final HorizontalAlignment horizontal1;
|
||||
@ -134,10 +134,7 @@ public class DecorateEntityImage extends AbstractTextBlock implements TextBlockB
|
||||
}
|
||||
|
||||
public HColor getBackcolor() {
|
||||
if (original instanceof TextBlockBackcolored)
|
||||
return ((TextBlockBackcolored) original).getBackcolor();
|
||||
|
||||
throw new UnsupportedOperationException();
|
||||
return original.getBackcolor();
|
||||
}
|
||||
|
||||
public XDimension2D calculateDimension(StringBounder stringBounder) {
|
||||
|
@ -42,7 +42,7 @@ import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.AbstractTextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
|
||||
public class DecorateEntityImage3 extends AbstractTextBlock implements TextBlockBackcolored {
|
||||
public class DecorateEntityImage3 extends AbstractTextBlock {
|
||||
|
||||
private final TextBlock original;
|
||||
private final HColor color;
|
||||
|
@ -448,9 +448,6 @@ public class DotStringFactory implements Moveable {
|
||||
for (SvekLine line : bibliotekon.allLines())
|
||||
line.manageCollision(bibliotekon.allNodes());
|
||||
|
||||
// corner1.manage(0, 0);
|
||||
// return new ClusterPosition(corner1.getMinX(), corner1.getMinY(), fullWidth, fullHeight);
|
||||
// // return new ClusterPosition(0, 0, fullWidth, fullHeight);
|
||||
}
|
||||
|
||||
private int getClusterIndex(final String svg, int colorInt) {
|
||||
|
@ -40,8 +40,10 @@ import net.sourceforge.plantuml.klimt.UTranslate;
|
||||
import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XPoint2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.UEmpty;
|
||||
|
||||
@ -87,6 +89,16 @@ public class EntityImageDegenerated implements IEntityImage {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagneticBorder getMagneticBorder() {
|
||||
return new MagneticBorder() {
|
||||
@Override
|
||||
public UTranslate getForceAt(StringBounder stringBounder, XPoint2D position) {
|
||||
return orig.getMagneticBorder().getForceAt(stringBounder, position.move(delta, delta));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public ShapeType getShapeType() {
|
||||
return orig.getShapeType();
|
||||
}
|
||||
|
@ -38,19 +38,20 @@ package net.sourceforge.plantuml.svek;
|
||||
import java.util.Collection;
|
||||
|
||||
import net.sourceforge.plantuml.abel.EntityPosition;
|
||||
import net.sourceforge.plantuml.klimt.geom.ClusterPosition;
|
||||
import net.sourceforge.plantuml.klimt.geom.Rankdir;
|
||||
import net.sourceforge.plantuml.klimt.geom.RectangleArea;
|
||||
import net.sourceforge.plantuml.klimt.geom.XPoint2D;
|
||||
|
||||
public class FrontierCalculator {
|
||||
|
||||
private static final double DELTA = 3 * EntityPosition.RADIUS;
|
||||
private ClusterPosition core;
|
||||
private final ClusterPosition initial;
|
||||
private RectangleArea core;
|
||||
private final RectangleArea initial;
|
||||
|
||||
public FrontierCalculator(final ClusterPosition initial, Collection<ClusterPosition> insides,
|
||||
Collection<XPoint2D> points) {
|
||||
public FrontierCalculator(RectangleArea initial, Collection<RectangleArea> insides, Collection<XPoint2D> points,
|
||||
Rankdir rankdir) {
|
||||
this.initial = initial;
|
||||
for (ClusterPosition in : insides)
|
||||
for (RectangleArea in : insides)
|
||||
if (core == null)
|
||||
core = in;
|
||||
else
|
||||
@ -58,7 +59,7 @@ public class FrontierCalculator {
|
||||
|
||||
if (core == null) {
|
||||
final XPoint2D center = initial.getPointCenter();
|
||||
core = new ClusterPosition(center.getX() - 1, center.getY() - 1, center.getX() + 1, center.getY() + 1);
|
||||
core = new RectangleArea(center.getX() - 1, center.getY() - 1, center.getX() + 1, center.getY() + 1);
|
||||
}
|
||||
for (XPoint2D p : points)
|
||||
core = core.merge(p);
|
||||
@ -116,11 +117,20 @@ public class FrontierCalculator {
|
||||
}
|
||||
}
|
||||
for (XPoint2D p : points) {
|
||||
if (p.getY() == core.getMinY() && (p.getX() == core.getMinX() || p.getX() == core.getMaxX()))
|
||||
pushMinY = false;
|
||||
if (rankdir == Rankdir.LEFT_TO_RIGHT) {
|
||||
if (p.getX() == core.getMinX() && (p.getY() == core.getMinY() || p.getY() == core.getMaxY()))
|
||||
pushMinX = false;
|
||||
|
||||
if (p.getY() == core.getMaxY() && (p.getX() == core.getMinX() || p.getX() == core.getMaxX()))
|
||||
pushMaxY = false;
|
||||
if (p.getX() == core.getMaxX() && (p.getY() == core.getMinY() || p.getY() == core.getMaxY()))
|
||||
pushMaxX = false;
|
||||
} else {
|
||||
|
||||
if (p.getY() == core.getMinY() && (p.getX() == core.getMinX() || p.getX() == core.getMaxX()))
|
||||
pushMinY = false;
|
||||
|
||||
if (p.getY() == core.getMaxY() && (p.getX() == core.getMinX() || p.getX() == core.getMaxX()))
|
||||
pushMaxY = false;
|
||||
}
|
||||
|
||||
}
|
||||
if (pushMaxX)
|
||||
@ -137,7 +147,7 @@ public class FrontierCalculator {
|
||||
|
||||
}
|
||||
|
||||
public ClusterPosition getSuggestedPosition() {
|
||||
public RectangleArea getSuggestedPosition() {
|
||||
return core;
|
||||
}
|
||||
|
||||
|
@ -74,6 +74,8 @@ import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.FontConfiguration;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorderNone;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
@ -372,6 +374,11 @@ public final class GeneralImageBuilder {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagneticBorder getMagneticBorder() {
|
||||
return new MagneticBorderNone();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Duplicate SvekResult / GeneralImageBuilder
|
||||
|
@ -37,8 +37,10 @@ package net.sourceforge.plantuml.svek;
|
||||
|
||||
import net.sourceforge.plantuml.abel.Hideable;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorder;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
|
||||
public interface IEntityImage extends Hideable, TextBlockBackcolored {
|
||||
public interface IEntityImage extends Hideable, TextBlock {
|
||||
|
||||
public static final int CORNER = 25;
|
||||
public static final int MARGIN = 5;
|
||||
@ -50,4 +52,6 @@ public interface IEntityImage extends Hideable, TextBlockBackcolored {
|
||||
|
||||
public double getOverscanX(StringBounder stringBounder);
|
||||
|
||||
public MagneticBorder getMagneticBorder();
|
||||
|
||||
}
|
@ -56,7 +56,6 @@ import net.sourceforge.plantuml.decoration.LinkDecor;
|
||||
import net.sourceforge.plantuml.decoration.LinkMiddleDecor;
|
||||
import net.sourceforge.plantuml.decoration.LinkType;
|
||||
import net.sourceforge.plantuml.decoration.Rainbow;
|
||||
import net.sourceforge.plantuml.decoration.symbol.USymbolFolder;
|
||||
import net.sourceforge.plantuml.descdiagram.command.StringWithArrow;
|
||||
import net.sourceforge.plantuml.dot.DotSplines;
|
||||
import net.sourceforge.plantuml.dot.GraphvizVersion;
|
||||
@ -74,6 +73,7 @@ import net.sourceforge.plantuml.klimt.font.FontConfiguration;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.BezierUtils;
|
||||
import net.sourceforge.plantuml.klimt.geom.HorizontalAlignment;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorder;
|
||||
import net.sourceforge.plantuml.klimt.geom.Moveable;
|
||||
import net.sourceforge.plantuml.klimt.geom.PointAndAngle;
|
||||
import net.sourceforge.plantuml.klimt.geom.Positionable;
|
||||
@ -139,8 +139,8 @@ public class SvekLine implements Moveable, Hideable, GuideLine {
|
||||
private Positionable endHeadLabelXY;
|
||||
private Positionable labelXY;
|
||||
|
||||
private UDrawable extremity2;
|
||||
private UDrawable extremity1;
|
||||
private UDrawable extremity2;
|
||||
|
||||
private double dx;
|
||||
private double dy;
|
||||
@ -490,7 +490,7 @@ public class SvekLine implements Moveable, Hideable, GuideLine {
|
||||
return endUid.getPrefix();
|
||||
}
|
||||
|
||||
private UDrawable getExtremity(LinkDecor decor, PointListIterator pointListIterator, final XPoint2D center,
|
||||
private UDrawable getExtremity(final XPoint2D center, LinkDecor decor, PointListIterator pointListIterator,
|
||||
double angle, Cluster cluster, SvekNode nodeContact) {
|
||||
final ExtremityFactory extremityFactory = decor.getExtremityFactory(backgroundColor);
|
||||
|
||||
@ -515,7 +515,7 @@ public class SvekLine implements Moveable, Hideable, GuideLine {
|
||||
final XPoint2D p2 = points.get(2);
|
||||
Side side = null;
|
||||
if (nodeContact != null)
|
||||
side = nodeContact.getClusterPosition().getClosestSide(p1);
|
||||
side = nodeContact.getRectangleArea().getClosestSide(p1);
|
||||
|
||||
return extremityFactory.createUDrawable(p0, p1, p2, side);
|
||||
} else if (decor == LinkDecor.NONE) {
|
||||
@ -570,23 +570,23 @@ public class SvekLine implements Moveable, Hideable, GuideLine {
|
||||
// if (ltail != null)
|
||||
// System.err.println("Line::solveLine ltail=" + ltail.getClusterPosition());
|
||||
}
|
||||
dotPath = dotPath.simulateCompound(lhead == null ? null : lhead.getClusterPosition(),
|
||||
ltail == null ? null : ltail.getClusterPosition());
|
||||
dotPath = dotPath.simulateCompound(lhead == null ? null : lhead.getRectangleArea(),
|
||||
ltail == null ? null : ltail.getRectangleArea());
|
||||
|
||||
final SvgResult lineSvg = fullSvg.substring(end);
|
||||
PointListIterator pointListIterator = lineSvg.getPointsWithThisColor(lineColor);
|
||||
|
||||
final LinkType linkType = link.getType();
|
||||
this.extremity1 = getExtremity(linkType.getDecor2(), pointListIterator, dotPath.getStartPoint(),
|
||||
dotPath.getStartAngle() + Math.PI, ltail, bibliotekon.getNode(link.getEntity1()));
|
||||
this.extremity2 = getExtremity(linkType.getDecor1(), pointListIterator, dotPath.getEndPoint(),
|
||||
dotPath.getEndAngle(), lhead, bibliotekon.getNode(link.getEntity2()));
|
||||
this.extremity1 = getExtremity(dotPath.getStartPoint(), linkType.getDecor2(), pointListIterator,
|
||||
dotPath.getStartAngle() + Math.PI, ltail, getSvekNode1());
|
||||
this.extremity2 = getExtremity(dotPath.getEndPoint(), linkType.getDecor1(), pointListIterator,
|
||||
dotPath.getEndAngle(), lhead, getSvekNode2());
|
||||
|
||||
if (link.getEntity1().getLeafType() == LeafType.LOLLIPOP_HALF)
|
||||
bibliotekon.getNode(link.getEntity1()).addImpact(dotPath.getStartAngle() + Math.PI);
|
||||
getSvekNode1().addImpact(dotPath.getStartAngle() + Math.PI);
|
||||
|
||||
if (link.getEntity2().getLeafType() == LeafType.LOLLIPOP_HALF)
|
||||
bibliotekon.getNode(link.getEntity2()).addImpact(dotPath.getEndAngle());
|
||||
getSvekNode2().addImpact(dotPath.getEndAngle());
|
||||
|
||||
if (extremity1 instanceof Extremity && extremity2 instanceof Extremity) {
|
||||
final XPoint2D p1 = ((Extremity) extremity1).somePoint();
|
||||
@ -599,10 +599,10 @@ public class SvekLine implements Moveable, Hideable, GuideLine {
|
||||
final double dist2end = p2.distance(dotPath.getEndPoint());
|
||||
if (dist1start > dist1end && dist2end > dist2start) {
|
||||
pointListIterator = lineSvg.getPointsWithThisColor(lineColor);
|
||||
this.extremity2 = getExtremity(linkType.getDecor1(), pointListIterator, dotPath.getEndPoint(),
|
||||
dotPath.getEndAngle(), lhead, bibliotekon.getNode(link.getEntity2()));
|
||||
this.extremity1 = getExtremity(linkType.getDecor2(), pointListIterator, dotPath.getStartPoint(),
|
||||
dotPath.getStartAngle() + Math.PI, ltail, bibliotekon.getNode(link.getEntity1()));
|
||||
this.extremity2 = getExtremity(dotPath.getEndPoint(), linkType.getDecor1(), pointListIterator,
|
||||
dotPath.getEndAngle(), lhead, getSvekNode2());
|
||||
this.extremity1 = getExtremity(dotPath.getStartPoint(), linkType.getDecor2(), pointListIterator,
|
||||
dotPath.getStartAngle() + Math.PI, ltail, getSvekNode1());
|
||||
}
|
||||
}
|
||||
|
||||
@ -639,6 +639,14 @@ public class SvekLine implements Moveable, Hideable, GuideLine {
|
||||
|
||||
}
|
||||
|
||||
private SvekNode getSvekNode2() {
|
||||
return bibliotekon.getNode(link.getEntity2());
|
||||
}
|
||||
|
||||
private SvekNode getSvekNode1() {
|
||||
return bibliotekon.getNode(link.getEntity1());
|
||||
}
|
||||
|
||||
private boolean isOpalisable() {
|
||||
return dotPath.getBeziers().size() <= 1;
|
||||
}
|
||||
@ -679,8 +687,8 @@ public class SvekLine implements Moveable, Hideable, GuideLine {
|
||||
if (link.isAutoLinkOfAGroup()) {
|
||||
final Cluster cl = bibliotekon.getCluster((Entity) link.getEntity1());
|
||||
if (cl != null) {
|
||||
x += cl.getClusterPosition().getWidth();
|
||||
x -= dotPath.getStartPoint().getX() - cl.getClusterPosition().getMinX();
|
||||
x += cl.getRectangleArea().getWidth();
|
||||
x -= dotPath.getStartPoint().getX() - cl.getRectangleArea().getMinX();
|
||||
}
|
||||
}
|
||||
|
||||
@ -715,37 +723,54 @@ public class SvekLine implements Moveable, Hideable, GuideLine {
|
||||
ug = ug.apply(stroke);
|
||||
// double moveEndY = 0;
|
||||
|
||||
DotPath todraw = dotPath;
|
||||
if (link.getEntity2().isGroup() && link.getEntity2().getUSymbol() instanceof USymbolFolder) {
|
||||
final Cluster endCluster = bibliotekon.getCluster((Entity) link.getEntity2());
|
||||
if (endCluster != null) {
|
||||
final double deltaFolderH = endCluster.checkFolderPosition(dotPath.getEndPoint(),
|
||||
ug.getStringBounder());
|
||||
todraw = dotPath.copy();
|
||||
todraw.moveEndPoint(0, deltaFolderH);
|
||||
// moveEndY = deltaFolderH;
|
||||
}
|
||||
DotPath todraw = dotPath.copy();
|
||||
|
||||
UTranslate magneticForce1 = new UTranslate();
|
||||
if (getSvekNode1() != null) {
|
||||
final MagneticBorder magneticBorder1 = getSvekNode1().getMagneticBorder();
|
||||
magneticForce1 = magneticBorder1.getForceAt(ug.getStringBounder(), todraw.getStartPoint());
|
||||
todraw.moveStartPoint(magneticForce1);
|
||||
}
|
||||
|
||||
if (extremity1 instanceof Extremity && extremity2 instanceof Extremity) {
|
||||
// http://forum.plantuml.net/9421/arrow-inversion-with-skinparam-linetype-ortho-missing-arrow
|
||||
final XPoint2D p1 = ((Extremity) extremity1)
|
||||
.isTooSmallSoGiveThePointCloserToThisOne(todraw.getStartPoint());
|
||||
if (p1 != null)
|
||||
todraw.forceStartPoint(p1.getX(), p1.getY());
|
||||
|
||||
final XPoint2D p2 = ((Extremity) extremity2).isTooSmallSoGiveThePointCloserToThisOne(todraw.getEndPoint());
|
||||
if (p2 != null)
|
||||
todraw.forceEndPoint(p2.getX(), p2.getY());
|
||||
|
||||
UTranslate magneticForce2 = new UTranslate();
|
||||
if (getSvekNode2() != null) {
|
||||
final MagneticBorder magneticBorder2 = getSvekNode2().getMagneticBorder();
|
||||
magneticForce2 = magneticBorder2.getForceAt(ug.getStringBounder(), todraw.getEndPoint());
|
||||
todraw.moveEndPoint(magneticForce2);
|
||||
}
|
||||
|
||||
// final MagneticBorder magneticBorder2 = getSvekNode2().getMagneticBorder();
|
||||
|
||||
// if (link.getEntity2().isGroup() && link.getEntity2().getUSymbol() instanceof USymbolFolder) {
|
||||
// final Cluster endCluster = bibliotekon.getCluster((Entity) link.getEntity2());
|
||||
// if (endCluster != null) {
|
||||
// final double deltaFolderH = endCluster.checkFolderPosition(dotPath.getEndPoint(),
|
||||
// ug.getStringBounder());
|
||||
// todraw = dotPath.copy();
|
||||
// todraw.moveEndPoint(0, deltaFolderH);
|
||||
// // moveEndY = deltaFolderH;
|
||||
// }
|
||||
// }
|
||||
|
||||
// if (extremity1 instanceof Extremity && extremity2 instanceof Extremity) {
|
||||
// // http://forum.plantuml.net/9421/arrow-inversion-with-skinparam-linetype-ortho-missing-arrow
|
||||
// final XPoint2D p1 = ((Extremity) extremity1)
|
||||
// .isTooSmallSoGiveThePointCloserToThisOne(todraw.getStartPoint());
|
||||
// if (p1 != null)
|
||||
// todraw.forceStartPoint(p1.getX(), p1.getY());
|
||||
//
|
||||
// final XPoint2D p2 = ((Extremity) extremity2).isTooSmallSoGiveThePointCloserToThisOne(todraw.getEndPoint());
|
||||
// if (p2 != null)
|
||||
// todraw.forceEndPoint(p2.getX(), p2.getY());
|
||||
//
|
||||
// }
|
||||
|
||||
final String comment = link.idCommentForSvg();
|
||||
final String tmp = uniq(ids, comment);
|
||||
todraw.setCommentAndCodeLine(tmp, link.getCodeLine());
|
||||
|
||||
drawRainbow(ug.apply(new UTranslate(x, y)), color, arrowHeadColor, todraw, link.getSupplementaryColors(),
|
||||
stroke);
|
||||
stroke, magneticForce1, magneticForce2);
|
||||
|
||||
ug = ug.apply(new UStroke()).apply(color);
|
||||
|
||||
@ -779,7 +804,7 @@ public class SvekLine implements Moveable, Hideable, GuideLine {
|
||||
final double yConstraint = y + this.labelXY.getPosition().getY();
|
||||
// ug.apply(new UTranslate(xConstraint, yConstraint)).draw(new URectangle(10, 10));
|
||||
final List<XPoint2D> square = getSquare(xConstraint, yConstraint);
|
||||
final Set<XPoint2D> bez = dotPath.sample();
|
||||
final Set<XPoint2D> bez = todraw.sample();
|
||||
XPoint2D minPt = null;
|
||||
double minDist = Double.MAX_VALUE;
|
||||
for (XPoint2D pt : square)
|
||||
@ -839,14 +864,14 @@ public class SvekLine implements Moveable, Hideable, GuideLine {
|
||||
}
|
||||
|
||||
private void drawRainbow(UGraphic ug, HColor color, HColor headColor, DotPath todraw,
|
||||
List<Colors> supplementaryColors, UStroke stroke) {
|
||||
List<Colors> supplementaryColors, UStroke stroke, UTranslate magneticForce1, UTranslate magneticForce2) {
|
||||
ug.draw(todraw);
|
||||
final LinkType linkType = link.getType();
|
||||
|
||||
if (headColor.isTransparent()) {
|
||||
if (this.extremity1 instanceof ExtremityArrow) {
|
||||
final UGraphic ugHead = ug.apply(color).apply(stroke.onlyThickness());
|
||||
((ExtremityArrow) this.extremity1).drawLineIfTransparent(ugHead);
|
||||
((ExtremityArrow) this.extremity1).drawLineIfTransparent(ugHead.apply(magneticForce1));
|
||||
}
|
||||
} else if (this.extremity1 != null) {
|
||||
UGraphic ugHead = ug.apply(headColor).apply(stroke.onlyThickness());
|
||||
@ -854,13 +879,13 @@ public class SvekLine implements Moveable, Hideable, GuideLine {
|
||||
ugHead = ugHead.apply(color.bg());
|
||||
else
|
||||
ugHead = ugHead.apply(HColors.none().bg());
|
||||
this.extremity1.drawU(ugHead);
|
||||
this.extremity1.drawU(ugHead.apply(magneticForce1));
|
||||
}
|
||||
|
||||
if (headColor.isTransparent()) {
|
||||
if (this.extremity2 instanceof ExtremityArrow) {
|
||||
final UGraphic ugHead = ug.apply(color).apply(stroke.onlyThickness());
|
||||
((ExtremityArrow) this.extremity2).drawLineIfTransparent(ugHead);
|
||||
((ExtremityArrow) this.extremity2).drawLineIfTransparent(ugHead.apply(magneticForce2));
|
||||
}
|
||||
} else if (this.extremity2 != null) {
|
||||
UGraphic ugHead = ug.apply(headColor).apply(stroke.onlyThickness());
|
||||
@ -868,7 +893,7 @@ public class SvekLine implements Moveable, Hideable, GuideLine {
|
||||
ugHead = ugHead.apply(color.bg());
|
||||
else
|
||||
ugHead = ugHead.apply(HColors.none().bg());
|
||||
this.extremity2.drawU(ugHead);
|
||||
this.extremity2.drawU(ugHead.apply(magneticForce2));
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
|
@ -43,14 +43,15 @@ import net.sourceforge.plantuml.abel.EntityPosition;
|
||||
import net.sourceforge.plantuml.abel.Hideable;
|
||||
import net.sourceforge.plantuml.abel.Together;
|
||||
import net.sourceforge.plantuml.klimt.Shadowable;
|
||||
import net.sourceforge.plantuml.klimt.UTranslate;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.ClusterPosition;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorder;
|
||||
import net.sourceforge.plantuml.klimt.geom.Positionable;
|
||||
import net.sourceforge.plantuml.klimt.geom.RectangleArea;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XPoint2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.UPolygon;
|
||||
import net.sourceforge.plantuml.svek.image.EntityImageDescription;
|
||||
import net.sourceforge.plantuml.svek.image.EntityImageLollipopInterface;
|
||||
import net.sourceforge.plantuml.svek.image.EntityImagePort;
|
||||
import net.sourceforge.plantuml.svek.image.EntityImageStateBorder;
|
||||
@ -369,8 +370,8 @@ public class SvekNode implements Positionable, Hideable {
|
||||
return getDimImage();
|
||||
}
|
||||
|
||||
public ClusterPosition getClusterPosition() {
|
||||
return new ClusterPosition(minX, minY, minX + getWidth(), minY + getHeight());
|
||||
public RectangleArea getRectangleArea() {
|
||||
return new RectangleArea(minX, minY, minX + getWidth(), minY + getHeight());
|
||||
}
|
||||
|
||||
public boolean isShielded() {
|
||||
@ -400,21 +401,6 @@ public class SvekNode implements Positionable, Hideable {
|
||||
return new XPoint2D(minX + x, minY + y);
|
||||
}
|
||||
|
||||
public XPoint2D projection(XPoint2D pt, StringBounder stringBounder) {
|
||||
if (getType() != ShapeType.FOLDER)
|
||||
return pt;
|
||||
|
||||
final ClusterPosition clusterPosition = new ClusterPosition(minX, minY, minX + getWidth(), minY + getHeight());
|
||||
if (clusterPosition.isPointJustUpper(pt)) {
|
||||
final XDimension2D dimName = ((EntityImageDescription) image).getNameDimension(stringBounder);
|
||||
if (pt.getX() < minX + dimName.getWidth())
|
||||
return pt;
|
||||
|
||||
return new XPoint2D(pt.getX(), pt.getY() + dimName.getHeight() + 4);
|
||||
}
|
||||
return pt;
|
||||
}
|
||||
|
||||
public double getOverscanX(StringBounder stringBounder) {
|
||||
return image.getOverscanX(stringBounder);
|
||||
}
|
||||
@ -427,10 +413,10 @@ public class SvekNode implements Positionable, Hideable {
|
||||
if (leaf instanceof Entity == false)
|
||||
return;
|
||||
|
||||
drawList(ug, ((Entity) leaf).getKals(Direction.DOWN));
|
||||
drawList(ug, ((Entity) leaf).getKals(Direction.UP));
|
||||
drawList(ug, ((Entity) leaf).getKals(Direction.LEFT));
|
||||
drawList(ug, ((Entity) leaf).getKals(Direction.RIGHT));
|
||||
drawList(ug, leaf.getKals(Direction.DOWN));
|
||||
drawList(ug, leaf.getKals(Direction.UP));
|
||||
drawList(ug, leaf.getKals(Direction.LEFT));
|
||||
drawList(ug, leaf.getKals(Direction.RIGHT));
|
||||
|
||||
}
|
||||
|
||||
@ -438,8 +424,8 @@ public class SvekNode implements Positionable, Hideable {
|
||||
if (leaf instanceof Entity == false)
|
||||
return;
|
||||
|
||||
fixHoverlap(((Entity) leaf).getKals(Direction.DOWN));
|
||||
fixHoverlap(((Entity) leaf).getKals(Direction.UP));
|
||||
fixHoverlap(leaf.getKals(Direction.DOWN));
|
||||
fixHoverlap(leaf.getKals(Direction.UP));
|
||||
}
|
||||
|
||||
private void fixHoverlap(final List<Kal> list) {
|
||||
@ -459,4 +445,46 @@ public class SvekNode implements Positionable, Hideable {
|
||||
for (Kal kal : list)
|
||||
kal.drawU(ug);
|
||||
}
|
||||
|
||||
// public XPoint2D projection(XPoint2D pt, StringBounder stringBounder) {
|
||||
// if (getType() != ShapeType.FOLDER)
|
||||
// return pt;
|
||||
//
|
||||
//// final ClusterPosition clusterPosition = new ClusterPosition(minX, minY, minX + getWidth(), minY + getHeight());
|
||||
//// if (clusterPosition.isPointJustUpper(pt)) {
|
||||
//// final XDimension2D dimName = ((EntityImageDescription) image).getNameDimension(stringBounder);
|
||||
//// if (pt.getX() < minX + dimName.getWidth())
|
||||
//// return pt;
|
||||
////
|
||||
//// return new XPoint2D(pt.getX(), pt.getY() + dimName.getHeight() + 4);
|
||||
//// }
|
||||
// return pt;
|
||||
//}
|
||||
|
||||
public MagneticBorder getMagneticBorder() {
|
||||
return new MagneticBorder() {
|
||||
public UTranslate getForceAt(StringBounder stringBounder, XPoint2D position) {
|
||||
final MagneticBorder orig = image.getMagneticBorder();
|
||||
return orig.getForceAt(stringBounder, position.move(-minX, -minY));
|
||||
}
|
||||
};
|
||||
// return image.getMagneticBorder();
|
||||
// if (getType() != ShapeType.FOLDER)
|
||||
// return new MagneticBorderNone();
|
||||
//
|
||||
// return new MagneticBorder() {
|
||||
// @Override
|
||||
// public UTranslate getForceAt(XPoint2D pt) {
|
||||
// if ((pt.getX() >= minX && pt.getX() <= minX + getWidth() && pt.getY() <= minY)) {
|
||||
// final XDimension2D dimName = ((EntityImageDescription) image).getNameDimension(stringBounder);
|
||||
// if (pt.getX() < minX + dimName.getWidth())
|
||||
// return new UTranslate();
|
||||
//
|
||||
// return new UTranslate(0, dimName.getHeight() + 4);
|
||||
// }
|
||||
// return new UTranslate();
|
||||
// }
|
||||
// };
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -64,7 +64,10 @@ import net.sourceforge.plantuml.klimt.drawing.UGraphicStencil;
|
||||
import net.sourceforge.plantuml.klimt.font.FontConfiguration;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.HorizontalAlignment;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MagneticBorderNone;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XPoint2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlockUtils;
|
||||
import net.sourceforge.plantuml.klimt.shape.UComment;
|
||||
@ -325,4 +328,26 @@ public class EntityImageDescription extends AbstractEntityImage {
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagneticBorder getMagneticBorder() {
|
||||
if (shapeType == ShapeType.FOLDER)
|
||||
return asSmall.getMagneticBorder();
|
||||
// return new MagneticBorder() {
|
||||
//
|
||||
// @Override
|
||||
// public UTranslate getForceAt(StringBounder stringBounder, XPoint2D pt) {
|
||||
// if ((pt.getX() >= 0 && pt.getX() <= 0 + calculateDimension(stringBounder).getWidth()
|
||||
// && pt.getY() <= 0)) {
|
||||
// final XDimension2D dimName = getNameDimension(stringBounder);
|
||||
// if (pt.getX() < 0 + dimName.getWidth())
|
||||
// return new UTranslate();
|
||||
//
|
||||
// return new UTranslate(0, dimName.getHeight() + 4);
|
||||
// }
|
||||
// return new UTranslate();
|
||||
// }
|
||||
// };
|
||||
return new MagneticBorderNone();
|
||||
}
|
||||
}
|
||||
|
@ -49,7 +49,7 @@ import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.FontConfiguration;
|
||||
import net.sourceforge.plantuml.klimt.font.FontParam;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.ClusterPosition;
|
||||
import net.sourceforge.plantuml.klimt.geom.RectangleArea;
|
||||
import net.sourceforge.plantuml.klimt.geom.HorizontalAlignment;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
@ -149,9 +149,9 @@ public class EntityImageEmptyPackage extends AbstractEntityImage {
|
||||
final double widthTotal = dimTotal.getWidth();
|
||||
final double heightTotal = dimTotal.getHeight();
|
||||
|
||||
final ClusterPosition clusterPosition = new ClusterPosition(0, 0, widthTotal, heightTotal);
|
||||
final RectangleArea rectangleArea = new RectangleArea(0, 0, widthTotal, heightTotal);
|
||||
final ClusterDecoration decoration = new ClusterDecoration(getSkinParam().packageStyle(), null, desc,
|
||||
stereoBlock, clusterPosition, stroke);
|
||||
stereoBlock, rectangleArea, stroke);
|
||||
|
||||
final HorizontalAlignment horizontalAlignment = getSkinParam()
|
||||
.getHorizontalAlignment(AlignmentParam.packageTitleAlignment, null, false, null);
|
||||
|
@ -206,26 +206,25 @@ public class EntityImageNote extends AbstractEntityImage implements Stencil {
|
||||
} else {
|
||||
final StringBounder stringBounder = ug.getStringBounder();
|
||||
DotPath path = opaleLine.getDotPath();
|
||||
|
||||
final UTranslate force1 = getMagneticBorder().getForceAt(stringBounder, path.getStartPoint());
|
||||
final UTranslate force2 = other.getMagneticBorder().getForceAt(stringBounder, path.getEndPoint());
|
||||
|
||||
path.moveSvek(-node.getMinX(), -node.getMinY());
|
||||
XPoint2D p1 = path.getStartPoint();
|
||||
XPoint2D p2 = path.getEndPoint();
|
||||
|
||||
final double textWidth = getTextWidth(stringBounder);
|
||||
final double textHeight = getTextHeight(stringBounder);
|
||||
final XPoint2D center = new XPoint2D(textWidth / 2, textHeight / 2);
|
||||
if (p1.distance(center) > p2.distance(center)) {
|
||||
if (path.getStartPoint().distance(center) > path.getEndPoint().distance(center))
|
||||
path = path.reverse();
|
||||
p1 = path.getStartPoint();
|
||||
// p2 = path.getEndPoint();
|
||||
}
|
||||
final Direction strategy = getOpaleStrategy(textWidth, textHeight, p1);
|
||||
final XPoint2D pp1 = path.getStartPoint();
|
||||
final XPoint2D pp2 = path.getEndPoint();
|
||||
final XPoint2D newRefpp2 = move(pp2, node.getMinX(), node.getMinY());
|
||||
final XPoint2D projection = move(other.projection(newRefpp2, stringBounder), -node.getMinX(),
|
||||
-node.getMinY());
|
||||
|
||||
final Direction strategy = getOpaleStrategy(textWidth, textHeight, path.getStartPoint());
|
||||
final XPoint2D pp1 = force1.getTranslated(path.getStartPoint());
|
||||
final XPoint2D pp2 = force2.getTranslated(path.getEndPoint());
|
||||
|
||||
final Opale opale = new Opale(shadowing, borderColor, noteBackgroundColor, textBlock, true, getStroke());
|
||||
opale.setRoundCorner(getRoundCorner());
|
||||
opale.setOpale(strategy, pp1, projection);
|
||||
opale.setOpale(strategy, pp1, pp2);
|
||||
final UGraphic stroked = applyStroke(ug2);
|
||||
opale.drawU(Colors.applyStroke(stroked, getEntity().getColors()));
|
||||
}
|
||||
@ -239,10 +238,6 @@ public class EntityImageNote extends AbstractEntityImage implements Stencil {
|
||||
return skinParam.getRoundCorner(CornerParam.DEFAULT, null);
|
||||
}
|
||||
|
||||
private static XPoint2D move(XPoint2D pt, double dx, double dy) {
|
||||
return new XPoint2D(pt.getX() + dx, pt.getY() + dy);
|
||||
}
|
||||
|
||||
private void drawNormal(UGraphic ug) {
|
||||
final StringBounder stringBounder = ug.getStringBounder();
|
||||
final UPath polygon = Opale.getPolygonNormal(getTextWidth(stringBounder), getTextHeight(stringBounder),
|
||||
|
@ -75,7 +75,7 @@ public class EntityImagePort extends AbstractEntityImageBorder {
|
||||
}
|
||||
|
||||
private boolean upPosition() {
|
||||
final XPoint2D clusterCenter = parent.getClusterPosition().getPointCenter();
|
||||
final XPoint2D clusterCenter = parent.getRectangleArea().getPointCenter();
|
||||
final SvekNode node = bibliotekon.getNode(getEntity());
|
||||
return node.getMinY() < clusterCenter.getY();
|
||||
}
|
||||
|
@ -75,7 +75,7 @@ public class EntityImageStateBorder extends AbstractEntityImageBorder {
|
||||
if (parent == null)
|
||||
return false;
|
||||
|
||||
final XPoint2D clusterCenter = parent.getClusterPosition().getPointCenter();
|
||||
final XPoint2D clusterCenter = parent.getRectangleArea().getPointCenter();
|
||||
final SvekNode node = bibliotekon.getNode(getEntity());
|
||||
return node.getMinY() < clusterCenter.getY();
|
||||
}
|
||||
|
@ -69,10 +69,10 @@ import javax.swing.WindowConstants;
|
||||
import net.atmp.ImageBuilder;
|
||||
import net.sourceforge.plantuml.GeneratedImage;
|
||||
import net.sourceforge.plantuml.klimt.shape.GraphicStrings;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.log.Logme;
|
||||
import net.sourceforge.plantuml.security.SFile;
|
||||
import net.sourceforge.plantuml.security.SImageIO;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
import net.sourceforge.plantuml.version.PSystemVersion;
|
||||
|
||||
class ImageWindow extends JFrame {
|
||||
@ -334,7 +334,7 @@ class ImageWindow extends JFrame {
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
final String msg = "Error reading file: " + ex.toString();
|
||||
final TextBlockBackcolored error = GraphicStrings.createForError(Arrays.asList(msg), false);
|
||||
final TextBlock error = GraphicStrings.createForError(Arrays.asList(msg), false);
|
||||
try {
|
||||
final byte[] bytes = ImageBuilder.plainPngBuilder(error).writeByteArray();
|
||||
image = SImageIO.read(bytes);
|
||||
|
@ -45,7 +45,6 @@ import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import net.atmp.InnerStrategy;
|
||||
import net.sourceforge.plantuml.FileFormatOption;
|
||||
import net.sourceforge.plantuml.UmlDiagram;
|
||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||
@ -59,9 +58,8 @@ import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.creole.Display;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.AbstractTextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.ULine;
|
||||
import net.sourceforge.plantuml.skin.UmlDiagramType;
|
||||
@ -70,7 +68,6 @@ import net.sourceforge.plantuml.style.PName;
|
||||
import net.sourceforge.plantuml.style.SName;
|
||||
import net.sourceforge.plantuml.style.Style;
|
||||
import net.sourceforge.plantuml.style.StyleSignatureBasic;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
import net.sourceforge.plantuml.timingdiagram.graphic.IntricatedPoint;
|
||||
import net.sourceforge.plantuml.timingdiagram.graphic.TimeArrow;
|
||||
|
||||
@ -106,30 +103,19 @@ public class TimingDiagram extends UmlDiagram implements Clocks {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected TextBlockBackcolored getTextBlock() {
|
||||
return new TextBlockBackcolored() {
|
||||
protected TextBlock getTextBlock() {
|
||||
return new AbstractTextBlock() {
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
drawInternal(ug);
|
||||
}
|
||||
|
||||
public XRectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public XDimension2D calculateDimension(StringBounder stringBounder) {
|
||||
final double withBeforeRuler = getPart1MaxWidth(stringBounder);
|
||||
final double totalWith = withBeforeRuler + ruler.getWidth() + marginX1 + marginX2;
|
||||
return new XDimension2D(totalWith, getHeightTotal(stringBounder));
|
||||
}
|
||||
|
||||
public MinMax getMinMax(StringBounder stringBounder) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public HColor getBackcolor() {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -48,9 +48,9 @@ import net.sourceforge.plantuml.klimt.AffineTransformType;
|
||||
import net.sourceforge.plantuml.klimt.UTranslate;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.shape.GraphicStrings;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.UDrawable;
|
||||
import net.sourceforge.plantuml.klimt.shape.UImage;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
|
||||
public class PSystemLicense extends PlainDiagram implements UDrawable {
|
||||
|
||||
@ -67,7 +67,7 @@ public class PSystemLicense extends PlainDiagram implements UDrawable {
|
||||
super(source);
|
||||
}
|
||||
|
||||
private TextBlockBackcolored getGraphicStrings(List<String> strings) {
|
||||
private TextBlock getGraphicStrings(List<String> strings) {
|
||||
return GraphicStrings.createBlackOnWhite(strings);
|
||||
}
|
||||
|
||||
@ -98,20 +98,20 @@ public class PSystemLicense extends PlainDiagram implements UDrawable {
|
||||
strings1.addAll(License.getCurrent().getText1(licenseInfo));
|
||||
strings2.addAll(License.getCurrent().getText2(licenseInfo));
|
||||
|
||||
final TextBlockBackcolored result1 = getGraphicStrings(strings1);
|
||||
final TextBlock result1 = getGraphicStrings(strings1);
|
||||
result1.drawU(ug);
|
||||
ug = ug.apply(UTranslate.dy(4 + result1.calculateDimension(ug.getStringBounder()).getHeight()));
|
||||
UImage im = new UImage(new PixelImage(logo, AffineTransformType.TYPE_BILINEAR));
|
||||
ug.apply(UTranslate.dx(20)).draw(im);
|
||||
|
||||
ug = ug.apply(UTranslate.dy(im.getHeight()));
|
||||
final TextBlockBackcolored result2 = getGraphicStrings(strings2);
|
||||
final TextBlock result2 = getGraphicStrings(strings2);
|
||||
result2.drawU(ug);
|
||||
}
|
||||
// ::done
|
||||
}
|
||||
|
||||
protected TextBlockBackcolored getTextBlock(final LicenseInfo licenseInfo) {
|
||||
protected TextBlock getTextBlock(final LicenseInfo licenseInfo) {
|
||||
final List<String> strings = new ArrayList<>();
|
||||
strings.addAll(License.getCurrent().getText1(licenseInfo));
|
||||
strings.addAll(License.getCurrent().getText2(licenseInfo));
|
||||
|
@ -45,7 +45,7 @@ public class Version {
|
||||
private static final int MAJOR_SEPARATOR = 1000000;
|
||||
|
||||
public static int version() {
|
||||
return 1202301;
|
||||
return 1202302;
|
||||
}
|
||||
|
||||
public static int versionPatched() {
|
||||
@ -81,7 +81,7 @@ public class Version {
|
||||
}
|
||||
|
||||
public static int beta() {
|
||||
final int beta = 7;
|
||||
final int beta = 0;
|
||||
return beta;
|
||||
}
|
||||
|
||||
@ -94,7 +94,7 @@ public class Version {
|
||||
}
|
||||
|
||||
public static long compileTime() {
|
||||
return 1674997136325L;
|
||||
return 1677403547300L;
|
||||
}
|
||||
|
||||
public static String compileTimeString() {
|
||||
|
@ -42,7 +42,6 @@ import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import net.atmp.InnerStrategy;
|
||||
import net.sourceforge.plantuml.FileFormatOption;
|
||||
import net.sourceforge.plantuml.UmlDiagram;
|
||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||
@ -57,9 +56,9 @@ import net.sourceforge.plantuml.klimt.creole.Display;
|
||||
import net.sourceforge.plantuml.klimt.drawing.AbstractCommonUGraphic;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.AbstractTextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.mindmap.IdeaShape;
|
||||
import net.sourceforge.plantuml.regex.Matcher2;
|
||||
import net.sourceforge.plantuml.regex.MyPattern;
|
||||
@ -71,7 +70,6 @@ import net.sourceforge.plantuml.style.PName;
|
||||
import net.sourceforge.plantuml.style.SName;
|
||||
import net.sourceforge.plantuml.style.Style;
|
||||
import net.sourceforge.plantuml.style.StyleSignatureBasic;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
import net.sourceforge.plantuml.utils.Direction;
|
||||
|
||||
public class WBSDiagram extends UmlDiagram {
|
||||
@ -98,28 +96,15 @@ public class WBSDiagram extends UmlDiagram {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected TextBlockBackcolored getTextBlock() {
|
||||
return new TextBlockBackcolored() {
|
||||
protected TextBlock getTextBlock() {
|
||||
return new AbstractTextBlock() {
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
drawMe(ug);
|
||||
}
|
||||
|
||||
public XRectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public XDimension2D calculateDimension(StringBounder stringBounder) {
|
||||
return getDrawingElement().calculateDimension(stringBounder);
|
||||
|
||||
}
|
||||
|
||||
public MinMax getMinMax(StringBounder stringBounder) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public HColor getBackcolor() {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -40,7 +40,6 @@ import java.io.OutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.atmp.InnerStrategy;
|
||||
import net.sourceforge.plantuml.FileFormat;
|
||||
import net.sourceforge.plantuml.FileFormatOption;
|
||||
import net.sourceforge.plantuml.UmlDiagram;
|
||||
@ -53,12 +52,10 @@ import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.creole.Display;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XRectangle2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.AbstractTextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.skin.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.svek.TextBlockBackcolored;
|
||||
|
||||
public class WireDiagram extends UmlDiagram {
|
||||
|
||||
@ -84,29 +81,18 @@ public class WireDiagram extends UmlDiagram {
|
||||
|
||||
@Override
|
||||
protected TextBlock getTextBlock() {
|
||||
return new TextBlockBackcolored() {
|
||||
return new AbstractTextBlock() {
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
drawMe(ug);
|
||||
}
|
||||
|
||||
public XRectangle2D getInnerPosition(String member, StringBounder stringBounder, InnerStrategy strategy) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public XDimension2D calculateDimension(StringBounder stringBounder) {
|
||||
// return getDrawingElement().calculateDimension(stringBounder);
|
||||
throw new UnsupportedOperationException();
|
||||
|
||||
}
|
||||
|
||||
public MinMax getMinMax(StringBounder stringBounder) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public HColor getBackcolor() {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user