summaryrefslogtreecommitdiff
path: root/TAO/examples/Simulator/DOVEBrowser/PersianVisComp.java
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/examples/Simulator/DOVEBrowser/PersianVisComp.java')
-rw-r--r--TAO/examples/Simulator/DOVEBrowser/PersianVisComp.java209
1 files changed, 209 insertions, 0 deletions
diff --git a/TAO/examples/Simulator/DOVEBrowser/PersianVisComp.java b/TAO/examples/Simulator/DOVEBrowser/PersianVisComp.java
new file mode 100644
index 00000000000..bf29e9aaf19
--- /dev/null
+++ b/TAO/examples/Simulator/DOVEBrowser/PersianVisComp.java
@@ -0,0 +1,209 @@
+// $Id$
+//
+// = FILENAME
+// PersianVisComp.java
+//
+// = AUTHOR
+// Chris Gill <cdgill@cs.wustl.edu>
+//
+// = DESCRIPTION
+// This is a Visualization Component for displaying a Persian
+// Recursion drawing.
+//
+// ============================================================================
+
+
+
+
+import java.awt.*;
+import java.util.*;
+
+// This was needed to help the class loader.
+import java.awt.image.MemoryImageSource;
+
+public class PersianVisComp extends Canvas implements VisComp
+{
+ private static final Font FONT = new Font ("Dialog", Font.PLAIN, 10);
+ private static final int PIXELS_WIDE = 256;
+ private static final int TOTAL_PIXELS = PIXELS_WIDE * PIXELS_WIDE;
+ private static final int DRAW_OFFSET = 32;
+
+ private String title_;
+ private Graphics offgraphics_;
+ private Image offscreen_;
+ private Dimension offscreensize_;
+ private int pixel_array_ [];
+ private MemoryImageSource image_source_;
+ public PersianVisComp ()
+ {
+ super ();
+ title_ = "";
+ this.setBackground (Color.white);
+ this.setForeground (Color.black);
+ pixel_array_ = new int [TOTAL_PIXELS];
+ for (int i = 0; i < TOTAL_PIXELS; ++i)
+ pixel_array_ [i] = Color.white.getRGB ();
+ image_source_ = new MemoryImageSource (PIXELS_WIDE, PIXELS_WIDE,
+ pixel_array_, 0, PIXELS_WIDE);
+ }
+
+ public void drawPixels (int x1, int y1, int x2, int y2, Color c) {
+
+ int x_min;
+ int x_max;
+ int y_min;
+ int y_max;
+ int rgb_value = c.getRGB ();
+
+ if (x1 < 0 || y1 < 0 || x2 < 0 || y2 < 0
+ || x1 >= PIXELS_WIDE || y1 >= PIXELS_WIDE
+ || x2 >= PIXELS_WIDE || y2 >= PIXELS_WIDE)
+ {
+ System.err.println ("coordinates out of range: ("
+ + x1 + ", " + y1 + ") ("
+ + x2 + ", " + y2 + ")\n");
+ return;
+ }
+
+ if (x1 < x2)
+ {
+ x_min = x1;
+ x_max = x2;
+ }
+ else
+ {
+ x_min = x2;
+ x_max = x1;
+ }
+
+ if (y1 < y2)
+ {
+ y_min = y1;
+ y_max = y2;
+ }
+ else
+ {
+ y_min = y2;
+ y_max = y1;
+ }
+
+ // System.out.println ("Updating pixels: ("
+ // + x1 + ", " + y1 + ") ("
+ // + x2 + ", " + y2 + ")\n");
+
+ for (int x = x_min; x <= x_max; ++x)
+ for (int y = y_min; y <= y_max; ++y)
+ pixel_array_ [y * PIXELS_WIDE + x] = rgb_value;
+ }
+
+ public void setName (String title) {
+ title_ = title;
+ }
+
+ public int getProperty () {
+ return Properties.PERSIAN;
+ }
+
+ public Dimension getMinimumSize () {
+ return new Dimension (PIXELS_WIDE + 2 * DRAW_OFFSET,
+ PIXELS_WIDE + 2 * DRAW_OFFSET);
+ }
+
+ public Dimension getPreferredSize () {
+ return new Dimension (PIXELS_WIDE + 2 * DRAW_OFFSET,
+ PIXELS_WIDE + 2 * DRAW_OFFSET);
+ }
+
+ public String getName () {
+ return title_;
+ }
+
+ public void update (java.util.Observable observable, java.lang.Object obj)
+ {
+ PersianRecursion.Data data_temp_;
+ try {
+ data_temp_ = (PersianRecursion.Data) obj;
+ }
+ catch (Exception excp) {
+ data_temp_ = null;
+ System.out.println (excp);
+ System.out.println ("PR Visualization Component received exception!");
+ return;
+ }
+
+ Color c = Color.black;
+
+ if (data_temp_.line_color == PersianRecursion.Line_Color_t.BLUE)
+ {
+ c = Color.red;
+ // c = Color.blue;
+ }
+ else if (data_temp_.line_color == PersianRecursion.Line_Color_t.RED)
+ {
+ c = Color.yellow;
+ // c = Color.red;
+ }
+ else if (data_temp_.line_color == PersianRecursion.Line_Color_t.GREEN)
+ {
+ c = Color.blue;
+ // c = Color.green;
+ }
+ else if (data_temp_.line_color == PersianRecursion.Line_Color_t.YELLOW)
+ {
+ c = Color.green;
+ // c = Color.yellow;
+ }
+
+ drawPixels (data_temp_.x1, data_temp_.y1,
+ data_temp_.x2, data_temp_.y2, c);
+
+ // System.out.println ("PersianVisComp: drawing {"
+ // + data_temp_.x1 + ", " + data_temp_.y1 + ", "
+ // + data_temp_.x2 + ", " + data_temp_.y2 + "}");
+
+ repaint ();
+ }
+
+ public void update (Graphics g)
+ {
+ Dimension d = getSize ();
+ FontMetrics fm = g.getFontMetrics ();
+ int x1 = d.width - 8, y1, x2, y2, fheight = fm.getHeight (), i;
+ PersianRecursion.Data data_temp_;
+
+ if ((offscreen_ == null) ||
+ (offscreensize_.width != d.width - 8) ||
+ (offscreensize_.height != d.height - 8))
+ {
+ offscreen_ = createImage (d.width - 8, d.height - 8);
+ offscreensize_ = new Dimension (d.width - 8, d.height - 8);
+ offgraphics_ = offscreen_.getGraphics ();
+ offgraphics_.setFont (FONT);
+ }
+
+ g.setColor (Color.lightGray);
+ g.draw3DRect (0, 0, d.width - 1, d.height - 1, true);
+ g.draw3DRect (1, 1, d.width - 3, d.height - 3, true);
+ g.draw3DRect (2, 2, d.width - 5, d.height - 5, true);
+
+ offgraphics_.setColor (getBackground ());
+ offgraphics_.fillRect (0, 0, offscreensize_.width, offscreensize_.height);
+ offgraphics_.setColor (getForeground ());
+ offgraphics_.drawString (title_, 5, fheight);
+
+ Image img = createImage (image_source_);
+ offgraphics_.drawImage (img, DRAW_OFFSET, DRAW_OFFSET, null);
+
+ g.drawImage (offscreen_, 3, 3, null);
+
+ // System.out.println ("updated.");
+ }
+
+ public void paint (Graphics g)
+ {
+ update (g);
+ // System.out.println ("painted.");
+ }
+}
+
+