Triangle tools from the text book Programming Processors in Java.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

61 lines
1.6 KiB

/*
* @(#)Drawer.java 2.1 2003/10/07
*
* Copyright (C) 1999, 2003 D.A. Watt and D.F. Brown
* Dept. of Computing Science, University of Glasgow, Glasgow G12 8QQ Scotland
* and School of Computer and Math Sciences, The Robert Gordon University,
* St. Andrew Street, Aberdeen AB25 1HG, Scotland.
* All rights reserved.
*
* This software is provided free for educational use only. It may
* not be used for commercial purposes without the prior written permission
* of the authors.
*/
package Triangle.TreeDrawer;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Point;
import Triangle.AbstractSyntaxTrees.Program;
public class Drawer {
private DrawerFrame frame;
private DrawerPanel panel;
private Program theAST;
private DrawingTree theDrawing;
// Draw the AST representing a complete program.
public void draw(Program ast) {
theAST = ast;
panel = new DrawerPanel(this);
frame = new DrawerFrame(panel);
Font font = new Font("SansSerif", Font.PLAIN, 12);
frame.setFont(font);
FontMetrics fontMetrics = frame.getFontMetrics(font);
LayoutVisitor layout = new LayoutVisitor(fontMetrics);
theDrawing = (DrawingTree) theAST.visit(layout, null);
theDrawing.position(new Point(2048, 10));
frame.setVisible(true);
}
public void paintAST(Graphics g) {
g.setColor(panel.getBackground());
Dimension d = panel.getSize();
g.fillRect(0, 0, d.width, d.height);
if (theDrawing != null) {
theDrawing.paint(g);
}
}
}