Junicon Improvements Page

2D Graphics

Design a Unicon2DWindow class in Java/libGDX
API to match "Graphics Programming in Icon" and/or UTR5
public class Unicon2DWindow {
  // public Unicon-level stuff
  boolean     open(String...);			// opens a visible window
						// takes initial attributes
						// such as window size, e.g.
						// "height=700"
  void        close();
  String      write(String...);			// writes w/ current font
						// appends newline
  String      writes(String...);		// writes w/out newline
						// once written, stays written
						// in font used at the time


  UniconEvent Event();				// returns key or mouseclick
						// sets some public variables

  // "current" attributes applied to subsequent drawing, not previous drawing
  String      Fg();				// gets foreground color
  String      Fg(String);			// sets foreground color
  String      Bg();				// gets background color
  String      Bg(String);			// sets background color
  String      Font();				// gets font
  String      Font(String);			// sets font

  void        DrawPoint(int, int);		// set pixel
  void        DrawLine(int, int, int, int);	// draws line
  void        DrawRectangle(int, int, int, int);// draws rectangle
  void        DrawCircle(int, int, int, int, int);// draws circle

  void        DrawPolygon(int[]);		// Scott's version
  void        DrawPolygon(int...);		// variable # of args


  void        FillPolygon(int[]);		// Scott's version
  void        FillPolygon(int...);		// variable # of arguments

  UniconList  Pending();
  String      WAttrib(String...);               // variable # of arguments

  // private UTR5 stuff
  colorPhrase(s);			// used internally by Fg/Bg/WAttrib
}
Preliminary Milestones (under construction, feel free to suggest milestones)
  1. open() correct-sized blank window, wait for keystroke, close(), write key to stdout using Unicon2DWindow class organization in conjunction with libGDX
  2. add DrawLine()
Culminating test/demo by producing a Java equivalent of gpxtest.icn

Integration into Junicon

After enough milestones, we will start making functionality accessible from Junicon programs.
  1. Download junicon from github
  2. Read/follow instructions to build Junicon
  3. See how Junicon is doing with Icon's standard test suite
  4. Figure out where Junicon's open() function is.
  5. Modify Junicon's open() to include mode "g" and/or mode "gl" for 2D and 3D graphics, have it create a Unicon2DWindow or Unicon3DWindow when requested

3D Graphics

Design a Unicon3DWindow class in Java/libGDX
API to match UTR9 and/or UTR5 and/or Chapter 7 of the Unicon book.
public class Unicon3DWindow { // consider "extends Unicon2DWindow"
  boolean     open();
  void        close();
  String      WAttrib(String...);               // variable # of arguments
  String      Fg(String);
  void        FillPolygon(double...);           // variable # of arguments (multiple of 3)
  void        PushTranslate();
  void        Rotate();
  void        DrawTorus(double...);             // variable # of arguments (multiple of 5)
  void        PushMatrix();
  void        DrawCylinder(double...);          // variable # of arguments (multiple of 6)
  UniconList  Pending();
  UniconEvent Event();
}
Test/demo by producing a Java equivalent of Korrey Jacobs' Crib.