1 package de.lathanda.eos.gui.structogram;
3 import de.lathanda.eos.baseparser.AbstractProgram;
4 import de.lathanda.eos.baseparser.CompilerListener;
5 import de.lathanda.eos.baseparser.ProgramUnit;
6 import de.lathanda.eos.common.gui.BackgroundCompiler;
7 import de.lathanda.eos.common.gui.Messages;
8 import de.lathanda.eos.gui.diagram.Diagram;
9 import de.lathanda.eos.gui.diagram.Drawing;
10 import de.lathanda.eos.gui.diagram.Unit;
11 import de.lathanda.eos.gui.text.Text;
12 import de.lathanda.eos.vm.ErrorInformation;
14 import java.awt.Color;
15 import java.awt.Dimension;
16 import java.awt.Graphics;
17 import java.awt.Graphics2D;
18 import java.awt.image.BufferedImage;
19 import java.util.LinkedList;
31 private static final long serialVersionUID = 9105813643158968038L;
33 private final LinkedList<Procedure> procedures;
34 private static final float SPACE = 10;
38 procedures =
new LinkedList<>();
44 super.paintComponent(g);
45 render((Graphics2D) g);
64 procedures.add(
new Procedure(pu.getName(), pu.getSequence()));
67 this.setPreferredSize(layout(d));
73 public BufferedImage
export(
float dpi) {
75 Dimension dim = layout(drawing);
76 BufferedImage image =
new BufferedImage(dim.width, dim.height, BufferedImage.TYPE_INT_RGB);
77 Graphics2D g = image.createGraphics();
78 g.setBackground(Color.WHITE);
79 g.clearRect(0, 0, dim.width, dim.height);
86 private Dimension layout(
Drawing d) {
87 procedures.forEach(p -> p.layout(d));
90 for (
Unit u : procedures) {
92 h = h + u.getHeight() + SPACE;
93 if (w < u.getWidth()) {
100 private void render(Drawing d) {
102 d.translate(SPACE, SPACE);
103 d.setDrawWidth(0.5f);
104 procedures.stream().forEachOrdered(p -> p.draw(d));
void removeCompilerListener(CompilerListener cl)
void addCompilerListener(CompilerListener cl)
static String getString(String id)
int convertmm2pixel(float mm)
void render(Graphics2D g)
void paintComponent(Graphics g)
void compileComplete(LinkedList< ErrorInformation > errors, AbstractProgram program)
BufferedImage export(float dpi)
void deinit(BackgroundCompiler bc)
void init(BackgroundCompiler bc)
LinkedList< ProgramUnit > getSubPrograms()
ProgramSequence getProgram()