summaryrefslogtreecommitdiff
path: root/src/net/sourceforge/plantuml/svek/SvekResult.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/sourceforge/plantuml/svek/SvekResult.java')
-rw-r--r--src/net/sourceforge/plantuml/svek/SvekResult.java134
1 files changed, 134 insertions, 0 deletions
diff --git a/src/net/sourceforge/plantuml/svek/SvekResult.java b/src/net/sourceforge/plantuml/svek/SvekResult.java
new file mode 100644
index 0000000..803d6d7
--- /dev/null
+++ b/src/net/sourceforge/plantuml/svek/SvekResult.java
@@ -0,0 +1,134 @@
+/* ========================================================================
+ * PlantUML : a free UML diagram generator
+ * ========================================================================
+ *
+ * (C) Copyright 2009-2014, Arnaud Roques
+ *
+ * Project Info: http://plantuml.sourceforge.net
+ *
+ * This file is part of PlantUML.
+ *
+ * Licensed under The MIT License (Massachusetts Institute of Technology License)
+ *
+ * See http://opensource.org/licenses/MIT
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+ * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ *
+ * Original Author: Arnaud Roques
+ */
+package net.sourceforge.plantuml.svek;
+
+import java.awt.geom.Dimension2D;
+
+import net.sourceforge.plantuml.ColorParam;
+import net.sourceforge.plantuml.UmlDiagramType;
+import net.sourceforge.plantuml.cucadiagram.dot.DotData;
+import net.sourceforge.plantuml.graphic.HtmlColor;
+import net.sourceforge.plantuml.graphic.HtmlColorUtils;
+import net.sourceforge.plantuml.graphic.StringBounder;
+import net.sourceforge.plantuml.posimo.Moveable;
+import net.sourceforge.plantuml.skin.rose.Rose;
+import net.sourceforge.plantuml.ugraphic.UChangeColor;
+import net.sourceforge.plantuml.ugraphic.UGraphic;
+import net.sourceforge.plantuml.ugraphic.UHidden;
+import net.sourceforge.plantuml.ugraphic.UStroke;
+import net.sourceforge.plantuml.ugraphic.UTranslate;
+
+public final class SvekResult implements IEntityImage, Moveable {
+
+ private final Rose rose = new Rose();
+
+ private ClusterPosition dim;
+ private final DotData dotData;
+ private final DotStringFactory dotStringFactory;
+
+ public SvekResult(ClusterPosition dim, DotData dotData, DotStringFactory dotStringFactory) {
+ this.dim = dim;
+ this.dotData = dotData;
+ this.dotStringFactory = dotStringFactory;
+ }
+
+ public void drawU(UGraphic ug) {
+
+ for (Cluster cluster : dotStringFactory.getBibliotekon().allCluster()) {
+ cluster.drawU(ug, dotData, new UStroke(1.5));
+ }
+
+ final HtmlColor color = rose.getHtmlColor(dotData.getSkinParam(), getArrowColorParam(), null);
+
+ for (Shape shape : dotStringFactory.getBibliotekon().allShapes()) {
+ final double minX = shape.getMinX();
+ final double minY = shape.getMinY();
+ final UGraphic ug2 = shape.isHidden() ? ug.apply(UHidden.HIDDEN) : ug;
+ final IEntityImage image = shape.getImage();
+ image.drawU(ug2.apply(new UTranslate(minX, minY)));
+ if (image instanceof Untranslated) {
+ ((Untranslated) image).drawUntranslated(ug.apply(new UChangeColor(color)), minX, minY);
+ }
+ // shape.getImage().drawNeighborhood(ug2, minX, minY);
+ }
+
+ for (Line line : dotStringFactory.getBibliotekon().allLines()) {
+ final UGraphic ug2 = line.isHidden() ? ug.apply(UHidden.HIDDEN) : ug;
+ line.drawU(ug2, color);
+ }
+
+ }
+
+ private ColorParam getArrowColorParam() {
+ if (dotData.getUmlDiagramType() == UmlDiagramType.CLASS) {
+ return ColorParam.classArrow;
+ } else if (dotData.getUmlDiagramType() == UmlDiagramType.OBJECT) {
+ return ColorParam.objectArrow;
+ } else if (dotData.getUmlDiagramType() == UmlDiagramType.DESCRIPTION) {
+ return ColorParam.usecaseArrow;
+ } else if (dotData.getUmlDiagramType() == UmlDiagramType.ACTIVITY) {
+ return ColorParam.activityArrow;
+ } else if (dotData.getUmlDiagramType() == UmlDiagramType.STATE) {
+ return ColorParam.stateArrow;
+ }
+ throw new IllegalStateException();
+ }
+
+ public HtmlColor getBackcolor() {
+ return dotData.getSkinParam().getBackgroundColor();
+ }
+
+ public Dimension2D calculateDimension(StringBounder stringBounder) {
+ return dim.getDimension();
+ }
+
+ public ShapeType getShapeType() {
+ return ShapeType.RECTANGLE;
+ }
+
+ public int getShield() {
+ return 0;
+ }
+
+ public void moveSvek(double deltaX, double deltaY) {
+ dotStringFactory.moveSvek(deltaX, deltaY);
+ dim = dim.delta(deltaX > 0 ? deltaX : 0, deltaY > 0 ? deltaY : 0);
+ }
+
+ public boolean isHidden() {
+ return false;
+ }
+
+}