summaryrefslogtreecommitdiff
path: root/src/net/sourceforge/plantuml/project/draw/ResourceDraw.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/sourceforge/plantuml/project/draw/ResourceDraw.java')
-rw-r--r--src/net/sourceforge/plantuml/project/draw/ResourceDraw.java122
1 files changed, 122 insertions, 0 deletions
diff --git a/src/net/sourceforge/plantuml/project/draw/ResourceDraw.java b/src/net/sourceforge/plantuml/project/draw/ResourceDraw.java
new file mode 100644
index 0000000..e95c350
--- /dev/null
+++ b/src/net/sourceforge/plantuml/project/draw/ResourceDraw.java
@@ -0,0 +1,122 @@
+/* ========================================================================
+ * PlantUML : a free UML diagram generator
+ * ========================================================================
+ *
+ * (C) Copyright 2009-2020, Arnaud Roques
+ *
+ * Project Info: http://plantuml.com
+ *
+ * If you like this project or if you find it useful, you can support us at:
+ *
+ * http://plantuml.com/patreon (only 1$ per month!)
+ * http://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.project.draw;
+
+import net.sourceforge.plantuml.SpriteContainerEmpty;
+import net.sourceforge.plantuml.cucadiagram.Display;
+import net.sourceforge.plantuml.graphic.FontConfiguration;
+import net.sourceforge.plantuml.graphic.HorizontalAlignment;
+import net.sourceforge.plantuml.graphic.HtmlColor;
+import net.sourceforge.plantuml.graphic.HtmlColorUtils;
+import net.sourceforge.plantuml.graphic.TextBlock;
+import net.sourceforge.plantuml.graphic.UDrawable;
+import net.sourceforge.plantuml.project.GanttDiagram;
+import net.sourceforge.plantuml.project.core.Resource;
+import net.sourceforge.plantuml.project.core.Wink;
+import net.sourceforge.plantuml.project.timescale.TimeScale;
+import net.sourceforge.plantuml.ugraphic.UChangeColor;
+import net.sourceforge.plantuml.ugraphic.UFont;
+import net.sourceforge.plantuml.ugraphic.UGraphic;
+import net.sourceforge.plantuml.ugraphic.ULine;
+import net.sourceforge.plantuml.ugraphic.UTranslate;
+
+public class ResourceDraw implements UDrawable {
+
+ private final Resource res;
+ private final TimeScale timeScale;
+ private final double y;
+ private final Wink min;
+ private final Wink max;
+ private final GanttDiagram gantt;
+
+ public ResourceDraw(GanttDiagram gantt, Resource res, TimeScale timeScale, double y, Wink min, Wink max) {
+ this.res = res;
+ this.timeScale = timeScale;
+ this.y = y;
+ this.min = min;
+ this.max = max;
+ this.gantt = gantt;
+ }
+
+ public void drawU(UGraphic ug) {
+ final TextBlock title = Display.getWithNewlines(res.getName()).create(getFontConfiguration(13),
+ HorizontalAlignment.LEFT, new SpriteContainerEmpty());
+ title.drawU(ug);
+ final ULine line = new ULine(timeScale.getEndingPosition(max) - timeScale.getStartingPosition(min), 0);
+ ug.apply(new UChangeColor(HtmlColorUtils.BLACK))
+ .apply(new UTranslate(0, title.calculateDimension(ug.getStringBounder()).getHeight())).draw(line);
+ for (Wink i = min; i.compareTo(max) <= 0; i = i.increment()) {
+ final int load = gantt.getLoadForResource(res, i);
+ if (load > 0) {
+ final FontConfiguration fontConfiguration = getFontConfiguration(9, load > 100 ? HtmlColorUtils.RED
+ : HtmlColorUtils.BLACK);
+ final TextBlock value = Display.getWithNewlines("" + load).create(fontConfiguration,
+ HorizontalAlignment.LEFT, new SpriteContainerEmpty());
+ final double start = (timeScale.getStartingPosition(i) + timeScale.getEndingPosition(i)) / 2
+ - value.calculateDimension(ug.getStringBounder()).getWidth() / 2;
+ value.drawU(ug.apply(new UTranslate(start, 16)));
+ }
+
+ }
+
+ }
+
+ private FontConfiguration getFontConfiguration(int size) {
+ return getFontConfiguration(size, HtmlColorUtils.BLACK);
+ }
+
+ private FontConfiguration getFontConfiguration(int size, HtmlColor color) {
+ final UFont font = UFont.serif(size);
+ return new FontConfiguration(font, color, color, false);
+ }
+
+ // public void setColors(ComplementColors colors);
+ //
+ // public double getY();
+ //
+ // public double getY(Direction direction);
+ //
+ // public void drawTitle(UGraphic ug);
+
+ public double getHeight() {
+ return 16 * 2;
+ }
+
+ public double getY() {
+ return y;
+ }
+
+}