summaryrefslogtreecommitdiff
path: root/java/ImageProcessing/framework
diff options
context:
space:
mode:
Diffstat (limited to 'java/ImageProcessing/framework')
-rw-r--r--java/ImageProcessing/framework/BaseButton.java234
-rw-r--r--java/ImageProcessing/framework/BenchmarkApplet.java622
-rw-r--r--java/ImageProcessing/framework/DialogManager.java277
-rw-r--r--java/ImageProcessing/framework/DialogType.java11
-rw-r--r--java/ImageProcessing/framework/FileBrowser.java173
-rw-r--r--java/ImageProcessing/framework/FilePanel.java161
-rw-r--r--java/ImageProcessing/framework/FilterTest.java62
-rw-r--r--java/ImageProcessing/framework/GIFHandler.java75
-rw-r--r--java/ImageProcessing/framework/GifEncoder.java693
-rw-r--r--java/ImageProcessing/framework/Hierarchy.java347
-rw-r--r--java/ImageProcessing/framework/HierarchyAdapter.java34
-rw-r--r--java/ImageProcessing/framework/Icon.java70
-rw-r--r--java/ImageProcessing/framework/ImageApp.java303
-rw-r--r--java/ImageProcessing/framework/ImageByteCounter.java94
-rw-r--r--java/ImageProcessing/framework/ImageCanvas.java166
-rw-r--r--java/ImageProcessing/framework/ImageEncoder.java271
-rw-r--r--java/ImageProcessing/framework/ImageProcessor.java111
-rw-r--r--java/ImageProcessing/framework/ImageSender.java128
-rw-r--r--java/ImageProcessing/framework/IntHashtable.java396
-rw-r--r--java/ImageProcessing/framework/ListFiles.java167
-rwxr-xr-xjava/ImageProcessing/framework/LoadURLFrame.java142
-rw-r--r--java/ImageProcessing/framework/Makefile45
-rw-r--r--java/ImageProcessing/framework/MedJava.html15
-rw-r--r--java/ImageProcessing/framework/Options.java25
-rwxr-xr-xjava/ImageProcessing/framework/SaveURLFrame.java133
-rw-r--r--java/ImageProcessing/framework/Separator.java90
-rw-r--r--java/ImageProcessing/framework/ServerHandler.java50
-rw-r--r--java/ImageProcessing/framework/ServerTest.java67
-rw-r--r--java/ImageProcessing/framework/StatusDisplay.java23
-rw-r--r--java/ImageProcessing/framework/StatusIndicator.java70
-rw-r--r--java/ImageProcessing/framework/TestHandler.java149
-rw-r--r--java/ImageProcessing/framework/Tester.java148
-rw-r--r--java/ImageProcessing/framework/doc01.gifbin223 -> 0 bytes
-rw-r--r--java/ImageProcessing/framework/file03.gifbin267 -> 0 bytes
-rw-r--r--java/ImageProcessing/framework/filter.conf15
-rw-r--r--java/ImageProcessing/framework/help.conf216
-rw-r--r--java/ImageProcessing/framework/test.html19
-rw-r--r--java/ImageProcessing/framework/testFilter.conf15
38 files changed, 0 insertions, 5617 deletions
diff --git a/java/ImageProcessing/framework/BaseButton.java b/java/ImageProcessing/framework/BaseButton.java
deleted file mode 100644
index 794670b2f3f..00000000000
--- a/java/ImageProcessing/framework/BaseButton.java
+++ /dev/null
@@ -1,234 +0,0 @@
-package imaging.framework;
-
-import java.awt.*;
-import imaging.filters.*;
-
-public class BaseButton extends Panel
-{
- public BaseButton (String title, String description, ImageApp parent)
- {
- this.setLayout (new BorderLayout ());
- this.button_ = new Button (title);
- this.add ("Center", this.button_);
- this.resize (100, 100);
- this.description_ = description;
- this.parent_ = parent;
- }
-
- public boolean mouseEnter(Event evt, int x, int y)
- {
- this.parent_.displayStatus (this.description_);
- return true;
- }
-
- public boolean mouseExit(Event evt, int x, int y)
- {
- this.parent_.displayStatus ("");
- return true;
- }
-
- protected ImageApp parent_;
- private String description_;
- private Button button_;
-}
-
-class URLDialogButton extends BaseButton
-{
- public URLDialogButton (String title, String desc, ImageApp parent)
- {
- super (title, desc, parent);
- this.openURLFrame_ = new LoadURLFrame ("Open URL <2>", this.parent_);
- }
-
- public boolean action (Event e, Object arg)
- {
- this.openURLFrame_.show ();
- return true;
- }
- private LoadURLFrame openURLFrame_;
-}
-
-// ******************
-// Should continue to remember the password
-// ******************
-class SaveButton extends BaseButton
-{
- public SaveButton (String title, String desc, ImageApp parent)
- {
- super (title, desc, parent);
- this.openURLFrame_ = new SaveURLFrame ("Save Image <2>", this.parent_);
- }
-
- public boolean action (Event e, Object arg)
- {
- this.openURLFrame_.show ();
- return true;
- }
- private SaveURLFrame openURLFrame_;
-}
-
-class ReloadButton extends BaseButton
-{
- public ReloadButton (String title, String desc, ImageApp parent)
- {
- super (title, desc, parent);
- }
-
- public boolean action (Event e, Object arg)
- {
- this.parent_.reloadFilters ();
- return true;
- }
-}
-
-class ApplyButton extends BaseButton
-{
- public ApplyButton (String title, String desc, ImageApp parent)
- {
- super (title, desc, parent);
- }
-
- public boolean action (Event e, Object arg)
- {
- this.parent_.apply ();
- return true;
- }
-}
-
-class ResetButton extends BaseButton
-{
- public ResetButton (String title, String desc, ImageApp parent)
- {
- super (title, desc, parent);
- }
-
- public boolean action (Event e, Object arg)
- {
- this.parent_.resetImage ();
- return true;
- }
-}
-
-class ZoomInButton extends BaseButton
-{
- public ZoomInButton (String title, String desc, ImageApp parent)
- {
- super (title, desc, parent);
- }
-
- public boolean action (Event e, Object arg)
- {
- this.parent_.zoomFactor (1.6);
- return true;
- }
-}
-
-class ZoomOutButton extends BaseButton
-{
- public ZoomOutButton (String title, String desc, ImageApp parent)
- {
- super (title, desc, parent);
- }
-
- public boolean action (Event e, Object arg)
- {
- this.parent_.zoomFactor (0.625);
- return true;
- }
-}
-
-
-class AboutButton extends BaseButton
-{
- public AboutButton (String title, String desc, ImageApp parent)
- {
- super (title, desc, parent);
- }
-
- public boolean action (Event e, Object arg)
- {
- DialogManager.popDialog (DialogType.ABOUT, null);
- return true;
- }
-}
-
-class HelpButton extends BaseButton
-{
- public HelpButton (String title, String desc, ImageApp parent)
- {
- super (title, desc, parent);
- }
-
- public boolean action (Event e, Object arg)
- {
- DialogManager.popDialog (DialogType.HELP, null);
- return true;
- }
-}
-
-class ChoicePanel extends Panel
-{
- public ChoicePanel (String desc, ImageApp parent)
- {
- this.description_ = desc;
- this.parent_ = parent;
-
- this.loadFilters ();
- // Set the layout of the Choice Panel. Note that the Choice Panel
- // holds the choice button of filters.
- this.setLayout (new FlowLayout ());
- this.resize (150, 100);
- }
-
- public void choice (Choice choice)
- {
- this.choice_ = choice;
- }
-
- public Choice choice ()
- {
- return this.choice_;
- }
-
- public void loadFilters ()
- {
- // First remove all components of the panel including the
- // choices of filters
- this.removeAll ();
-
- // Now create new choices
- this.choice_ = this.parent_.getFilters ();
-
- // Add the choices to our choice panel
- this.add (this.choice_);
- }
-
- public boolean mouseEnter(Event evt, int x, int y)
- {
- MedFilter filter = null;
- String displayString = null;
- String filterName = this.choice_.getSelectedItem ();
-
- if (filterName.compareTo ("Filters:") == 0)
- displayString = "No filter selected";
- else
- {
- filter = (MedFilter) this.parent_.getFilter (filterName);
- displayString = filter.info ();
- }
- this.parent_.displayStatus (displayString);
- // this.parent_.displayStatus (this.description_);
- return true;
- }
-
- public boolean mouseExit(Event evt, int x, int y)
- {
- this.parent_.displayStatus ("");
- return true;
- }
-
- private Choice choice_;
- private ImageApp parent_;
- String description_;
-}
-
diff --git a/java/ImageProcessing/framework/BenchmarkApplet.java b/java/ImageProcessing/framework/BenchmarkApplet.java
deleted file mode 100644
index ac125a1d9de..00000000000
--- a/java/ImageProcessing/framework/BenchmarkApplet.java
+++ /dev/null
@@ -1,622 +0,0 @@
-package imaging.framework;
-
-import JACE.Timers.ProfileTimer;
-import imaging.filters.*;
-import java.awt.*;
-import java.awt.image.*;
-import java.applet.*;
-import java.net.*;
-import java.util.*;
-import java.io.*;
-import gjt.*;
-
-public class BenchmarkApplet extends Applet implements Runnable
-{
- public static final Font GLOBAL_FONT = new Font("Dialog", Font.BOLD, 10);
- private static final String NEW_LINE = System.getProperty("line.separator");
- private static final String WELCOME = "Welcome to MedJava Image Processing Benchmarking Tool";
- private static final String COPYRIGHT = "(c) 1997 Distributed Object Computing Group, Washington Univesity";
- private static final String ABORT = "Image Processing Tests Aborted";
- private static final String STOP = "Stop";
- private static final String START= "Start";
- private static final String CLEAR= "Clear";
- private static final String RANDOM= "Create Random Image";
- private static final int INTERNAL_ITERATIONS = 10;
- private static final int TRIALS = 1;
-
- private List images_, filters_;
- private TextArea console_;
- private TextField new_image_;
- private Button start_button_;
- private Button stop_button_;
- private Button clear_button_;
- private Button random_button_;
- private ButtonPanel button_panel_ = new ButtonPanel();
- private Hashtable filter_table_ = new Hashtable();
- private Hashtable image_table_ = new Hashtable();
- private Thread benchmarker_;
- private long elapsed_time_;
- private SpatialFilter filter_;
- private Object monitor_ = new Object();
-
- public void init()
- {
- Panel control_panel = new Panel();
- Panel sub_panel1 = new Panel();
- Panel filter_panel = new Panel();
- Panel image_panel = new Panel();
- Label image_panel_label = new Label("Images");
- Label filter_panel_label = new Label("Filters");
-
- new_image_ = new TextField();
- console_ = new TextArea();
- images_ = new List();
- filters_ = new List();
-
- console_.setEditable(false);
- images_.setMultipleSelections(true);
- filters_.setMultipleSelections(true);
- console_.setFont(GLOBAL_FONT);
- images_.setFont(GLOBAL_FONT);
- filters_.setFont(GLOBAL_FONT);
- image_panel_label.setFont(GLOBAL_FONT);
- filter_panel_label.setFont(GLOBAL_FONT);
-
- console_.appendText(WELCOME + NEW_LINE);
- console_.appendText(COPYRIGHT + NEW_LINE);
-
- image_panel.setLayout(new BorderLayout());
- image_panel.add("North", image_panel_label);
- image_panel.add("Center", images_);
- image_panel.add("South", new_image_);
-
- filter_panel.setLayout(new BorderLayout());
- filter_panel.add("North", filter_panel_label);
- filter_panel.add("Center", filters_);
-
- sub_panel1.setLayout(new GridLayout(1, 2, 5, 5));
- sub_panel1.add(filter_panel);
- sub_panel1.add(image_panel);
-
- control_panel.setLayout(new GridLayout(2, 1, 5, 5));
- control_panel.add(sub_panel1);
- control_panel.add(console_);
-
- setLayout(new BorderLayout());
-
- stop_button_ = button_panel_.add(STOP);
- start_button_ = button_panel_.add(START);
- clear_button_ = button_panel_.add(CLEAR);
- random_button_ = button_panel_.add(RANDOM);
-
- stop_button_.disable();
- add("Center", control_panel);
- add("South", button_panel_);
-
- getFilters();
- getImages();
- }
-
- synchronized public void run()
- {
- Image image;
- String image_name, filter_name;
- int image_height, image_width;
- String[] image_list = images_.getSelectedItems();
- String[] filter_list = filters_.getSelectedItems();
- ImageProducer image_source;
- FilteredImageSource filtered_image;
- // BenchmarkFrame bframe = BenchmarkFrame.instance();
-
- double cumulative_time;
- double best_time;
-
- SpatialFilter.setTimer(INTERNAL_ITERATIONS);
- console_.appendText(NEW_LINE);
- console_.appendText("Benchmark tests: [mem=" +
- Runtime.getRuntime().freeMemory() +"/" +
- Runtime.getRuntime().totalMemory() +"]"
- + NEW_LINE);
-
- for (int i = 0; i < image_list.length; i++)
- {
-
- image_name = image_list[i];
- image = (Image)image_table_.get(image_name);
-
- image_width = image.getWidth(this);
- image_height = image.getHeight(this);
-
- console_.appendText("Begining tests for image " + image_name);
- console_.appendText(" (size " + image_width + "x" + image_height +
- " = " + image_height*image_width*4 + " bytes )");
- console_.appendText(NEW_LINE);
-
- console_.appendText(NEW_LINE + " ********** " + NEW_LINE);
- // bframe.init("Begining tests for image " + image_name, image, image_width, image_height);
-
- // if (! bframe.isShowing())
- // bframe.show();
-
- for (int j = 0; j < filter_list.length; j++)
- {
- filter_name = filter_list[j];
- filter_ = (SpatialFilter)filter_table_.get(filter_name);
-
- if (filter_ == null)
- System.err.println(filter_name + " is null");
-
- best_time = Double.MAX_VALUE;
- cumulative_time = 0;
- image_source = image.getSource();
- filtered_image = new FilteredImageSource(image.getSource(), filter_);
-
- for (int l = 0; l < TRIALS; l++)
- {
- elapsed_time_ = 0;
- prepareImage(createImage(filtered_image), this);
-
- try
- {
- // synchronized(monitor_)
- // {
- while (elapsed_time_ == 0)
- {
- System.out.println("Waiting for image loading to complete.");
- // monitor_.wait();
- wait();
- }
-
- System.out.println("Image loading has completed.");
- // }
- }
- catch(Exception excp)
- {
- System.out.println(excp);
- stop();
- }
-
- cumulative_time = (double)elapsed_time_ / (double)INTERNAL_ITERATIONS;
- System.out.println(image_name + " " + filter_name + " " + elapsed_time_);
-
- if (best_time > cumulative_time)
- best_time = cumulative_time;
- }
-
- console_.appendText(filter_name + ": best time from " +
- TRIALS + " trials of " + INTERNAL_ITERATIONS +
- " iterations equals: " + best_time + " ms");
- console_.appendText(NEW_LINE);
- Thread.yield();
- }
-
- console_.appendText(NEW_LINE);
- }
-
- console_.appendText("Tests concluded." + NEW_LINE);
-
- // if (bframe.isShowing())
- // bframe.hide();
-
- stop_button_.disable();
- start_button_.enable();
- }
-
- synchronized public boolean imageUpdate(Image img, int infoflags, int x, int y,
- int width, int height)
- {
- System.out.println("Image Update called");
-
- boolean return_value = false;
- try
- {
- if ((infoflags & ALLBITS) != 0 ||
- (infoflags & SOMEBITS) != 0)
- {
- System.out.println("notify called" + width + " " + height);
- elapsed_time_ = filter_.filterTime();
- return_value = true;
- // monitor_.notify();
- notifyAll();
- }
- else if ((infoflags & ImageObserver.ABORT) != 0 ||
- (infoflags & ERROR) != 0)
- {
- System.out.println("image error!");
- // stop();
- return_value = true;
- }
- }
- catch(SecurityException excp)
- {
- System.err.println(excp);
- }
-
- return return_value;
- }
-
- public void stop()
- {
- try
- {
- if (benchmarker_.isAlive())
- {
- BenchmarkFrame bframe = BenchmarkFrame.instance();
-
- if (bframe.isShowing())
- bframe.hide();
-
- System.out.println("Stopping tests...");
- benchmarker_.stop();
- console_.appendText(NEW_LINE + ABORT + NEW_LINE);
- }
-
- start_button_.enable();
- stop_button_.disable();
- }
- catch(SecurityException exception)
- {
- console_.appendText(NEW_LINE + "Stop Failed." + NEW_LINE);
- }
- }
-
- public boolean action(Event evt, Object what)
- {
- if (what.equals(START))
- {
- boolean proceed = ! (benchmarker_ != null && benchmarker_.isAlive());
-
- stop_button_.enable();
-
- if (proceed &&
- images_.getSelectedIndexes() != null &&
- filters_.getSelectedIndexes() != null)
- {
- System.out.println("Starting tests...");
- start_button_.disable();
- benchmarker_ = new Thread(this);
- benchmarker_.setPriority(Math.min(Thread.currentThread().getPriority() + 2,
- Thread.MAX_PRIORITY - 1));
- benchmarker_.start();
- }
- }
- else if (what.equals(STOP))
- {
- stop();
- }
- else if (what.equals(CLEAR))
- {
- console_.setText("");
- console_.appendText(WELCOME + NEW_LINE);
- console_.appendText(COPYRIGHT + NEW_LINE);
- }
- else if (what.equals(RANDOM))
- {
- RandomImageDialog.instance(this).show();
- }
- else if (evt.target == new_image_)
- {
- getSingleImage(new_image_.getText());
- }
-
-
- return true;
- }
-
- private void getSingleImage(String image_url)
- {
- Image image;
- MediaTracker tracker = new MediaTracker(this);
-
- try
- {
- image = getImage(new URL(image_url));
- tracker.addImage(image, 0);
- tracker.waitForID(0);
-
- if (image != null)
- {
- int index = image_url.lastIndexOf('/');
-
- if (index != -1)
- image_url = image_url.substring(index + 1);
-
- image_table_.put(image_url, image);
- images_.addItem(image_url);
- }
- }
- catch(MalformedURLException e)
- {
- System.err.println(e);
- }
- catch(InterruptedException excp)
- {
- System.err.println(excp);
- }
-
- }
-
- private void getImages()
- {
- Image image;
- String image_list = getParameter("images"), image_url;
- StringTokenizer str_tok = new StringTokenizer(image_list, ",");
-
- while (str_tok.hasMoreTokens())
- {
- image_url = str_tok.nextToken();
- getSingleImage(image_url);
- }
- }
-
- private void getFilters()
- {
- URL url;
- Object download;
- String config_file;
- String configInfo= null;
- Choice choice = new Choice ();
- ImageFilter filter;
-
- config_file = getParameter ("configFile");
-
- if (config_file == null)
- config_file = "http://www.cs.wustl.edu/~pjain/java/ACE_wrappers/java/ImageProcessing/framework/filter.conf";
-
- try
- {
- System.out.println ("Configuration File: " + config_file);
- // Create a new URL
- url = new URL (config_file);
-
- // Get the input stream and pipe it to a DataInputStream
- DataInputStream iStream = new DataInputStream (url.openStream ());
-
- // Create a buffer to hold all the data we get
- StringBuffer tempBuf = new StringBuffer ();
- // Keep reading the data until we are done
- String tempString = iStream.readLine ();
- while (tempString != null)
- {
- tempBuf.append (tempString);
- tempBuf.append (" ");
- tempString = iStream.readLine ();
- }
-
- configInfo = tempBuf.toString ();
- System.out.println(configInfo);
-
- if (configInfo != null)
- {
- StringTokenizer tokens = new StringTokenizer (configInfo);
- String fullFilterName = null;
- String filterName = null;
- // Now parse the string, picking up filter names. Use these
- // names to load the actual filters as well add new choices to
- // the filter choices.
- while (tokens.hasMoreTokens ())
- {
- // Get the next token
- fullFilterName = tokens.nextToken ();
- filterName = this.extractFilterName (fullFilterName);
-
- System.out.println ("Loading: " + fullFilterName);
- // Load the filter class
- Class c = Class.forName (fullFilterName);
- // Class c = this.filterRepository_.load (filter);
-
- filter = (ImageFilter)c.newInstance();
-
- if (filter instanceof SpatialFilter)
- {
- // Add the filter to the Filter Repository
- filter_table_.put(filterName, filter);
-
- // Add filter name to the list of filter choices
- filters_.addItem (filterName);
- }
- }
- }
- }
- catch (Exception e)
- {
- System.err.println ("Filter not found: " + e);
- }
- }
-
- private String extractFilterName (String s)
- {
- String filterName = null;
- StringTokenizer tokens = new StringTokenizer (s, ".");
- while (tokens.hasMoreTokens ())
- filterName = tokens.nextToken ();
- return filterName;
- }
-
- public void generateRandomImage(String name, int width, int height)
- {
- Image image = createImage(width, height);
- Graphics g = image.getGraphics();
- FilteredImageSource filtered_image;
-
- if (g != null)
- {
- ImageFilter filter = new RandomizeFilter();
- g.fillRect(0, 0, width, height);
- filtered_image = new FilteredImageSource(image.getSource(), filter);
- image_table_.put(name, createImage(filtered_image));
- images_.addItem(name);
- }
- }
-}
-
-class RandomImageDialog extends Frame
-{
- private static String GENERATE = "Generate";
- private static String CANCEL = "Cancel";
-
- private TextField name_ = new TextField(30),
- width_ = new TextField(5),
- height_= new TextField(5);
- private BenchmarkApplet applet_;
- private Button generate_button_;
- private Button cancel_button_;
- private ButtonPanel button_panel_ = new ButtonPanel();
-
- private static RandomImageDialog instance_;
-
- public static RandomImageDialog instance(BenchmarkApplet applet)
- {
- if (instance_ == null)
- instance_ = new RandomImageDialog(applet);
-
- return instance_;
- }
-
- protected RandomImageDialog(BenchmarkApplet applet)
- {
- super("Generate Random Image");
- applet_ = applet;
-
- Panel controls = new Panel();
- GridBagLayout gb = new GridBagLayout();
- GridBagConstraints gc = new GridBagConstraints();
- Label width = new Label("Width: "),
- height = new Label("Height: "),
- name = new Label("Name: ");
-
- reshape (0, 0, 300, 200);
-
- controls.setLayout(gb);
- gc.gridx = 0;
- gc.gridy = 0;
- gc.gridwidth = 1;
- gc.insets = new Insets(5,5,5,5);
- gc.anchor = GridBagConstraints.WEST;
- width.setFont(BenchmarkApplet.GLOBAL_FONT);
- gb.setConstraints(width, gc);
- controls.add(width);
-
- gc.gridx = 1;
- gc.anchor = GridBagConstraints.CENTER;
- gc.fill = GridBagConstraints.HORIZONTAL;
- gb.setConstraints(width_, gc);
- controls.add(width_);
-
- gc.gridx = 2;
- gc.anchor = GridBagConstraints.WEST;
- gc.fill = GridBagConstraints.NONE;
- height.setFont(BenchmarkApplet.GLOBAL_FONT);
- gb.setConstraints(height, gc);
- controls.add(height);
-
- gc.gridx = 3;
- gc.anchor = GridBagConstraints.CENTER;
- gc.fill = GridBagConstraints.HORIZONTAL;
- gb.setConstraints(height_, gc);
- controls.add(height_);
-
- gc.gridx = 0;
- gc.gridy = 1;
- gc.gridwidth = 1;
- gc.fill = GridBagConstraints.NONE;
- gc.anchor = GridBagConstraints.WEST;
- name.setFont(BenchmarkApplet.GLOBAL_FONT);
- gb.setConstraints(name, gc);
- controls.add(name);
-
- gc.gridx = 1;
- gc.gridwidth = GridBagConstraints.REMAINDER;
- gc.anchor = GridBagConstraints.CENTER;
- gc.fill = GridBagConstraints.HORIZONTAL;
- gb.setConstraints(name_, gc);
- controls.add(name_);
-
- setLayout(new BorderLayout());
- generate_button_ = button_panel_.add(GENERATE);
- cancel_button_ = button_panel_.add(CANCEL);
- add("Center", controls);
- add("South", button_panel_);
-
- }
-
- public boolean action(Event evt, Object what)
- {
- if (what.equals(GENERATE))
- {
- String width = width_.getText(),
- height = height_.getText(),
- name = name_.getText();
-
- try
- {
- int width_num = Integer.parseInt(width),
- height_num = Integer.parseInt(height);
-
- applet_.generateRandomImage(name, width_num, height_num);
- dispose();
- }
- catch(NumberFormatException nfe)
- {
- width_.setText("");
- height_.setText("");
- }
- }
- else if (what.equals(CANCEL))
- dispose();
-
- return true;
- }
-}
-
-class BenchmarkFrame extends Frame
-{
- private String desc_;
- private Image image_;
- private int height_, width_;
- private static BenchmarkFrame instance_;
- private static final Font FONT = new Font("Dialog", Font.BOLD, 12);
-
- public static BenchmarkFrame instance()
- {
- if (instance_ == null)
- instance_ = new BenchmarkFrame();
-
- return instance_;
- }
-
- public void init(String desc, Image image, int width, int height)
- {
- reshape(0, 0, width, height + 50);
- setImage(desc, image);
- }
-
- public void setImage(String desc, Image image)
- {/*
- try
- {
- MediaTracker tracker = new MediaTracker(this);
- tracker.addImage(image, 0);
- tracker.waitForID(0);
- }
- catch(InterruptedException excp)
- {
- }
- */
- desc_ = desc;
- image_ = image;
- }
-
- public void paint(Graphics g)
- {
- g.setColor(Color.black);
- g.setFont(FONT);
- g.drawImage(image_, 0, 50, this);
- g.drawString(desc_, 5, 40);
- }
-
- protected BenchmarkFrame()
- {
- super("Benchmark Frame");
- }
-}
diff --git a/java/ImageProcessing/framework/DialogManager.java b/java/ImageProcessing/framework/DialogManager.java
deleted file mode 100644
index cca0c037af1..00000000000
--- a/java/ImageProcessing/framework/DialogManager.java
+++ /dev/null
@@ -1,277 +0,0 @@
-package imaging.framework;
-
-import java.awt.*;
-import java.awt.image.*;
-import java.applet.*;
-import java.util.*;
-import java.io.*;
-import java.net.*;
-
-class DialogManager
-{
- public static void initialize (Applet parent)
- {
- codeBase_ = parent.getCodeBase ().toString ();
- aboutFrame_ = new AboutFrame ();
- helpFrame_ = new HelpFrame (codeBase_);
- }
-
- public static void popDialog (int type, String message)
- {
- Frame frame = null;
-
- switch (type)
- {
- case DialogType.ABOUT:
- aboutFrame_.show ();
- break;
- case DialogType.HELP:
- helpFrame_.show ();
- break;
- case DialogType.MALFORMED_URL:
- case DialogType.NOT_SUPPORTED:
- case DialogType.URL_NOT_FOUND:
- frame = new MessageFrame ("Error", message);
- break;
- case DialogType.NOT_YET_IMPLEMENTED:
- frame = new MessageFrame ("", message);
- break;
- }
- Dimension d = Toolkit.getDefaultToolkit ().getScreenSize ();
- frame.move ((d.width - frame.size ().width)/2,
- (d.height - frame.size ().height)/2);
- frame.show ();
- }
-
- private static String codeBase_ = "";
- private static AboutFrame aboutFrame_;
- private static HelpFrame helpFrame_;
-}
-
-class MessageFrame extends Frame
-{
- public MessageFrame (String title, String message)
- {
- super (title);
-
- this.resize (message.length () * 8, 100);
- this.setLayout (new BorderLayout ());
-
- this.text_ = new TextField (message);
- this.text_.setEditable (false);
-
- Panel okButtonPanel = new Panel ();
- okButtonPanel.add (this.okButton_);
- okButtonPanel.resize (100, 100);
-
- this.add ("Center", this.text_);
- this.add ("South", okButtonPanel);
- }
-
- public boolean handleEvent (Event evt)
- {
- if (evt.id == Event.WINDOW_DESTROY)
- {
- this.dispose ();
- return true;
- }
- return super.handleEvent (evt);
- }
-
- // Handle all action events
- public boolean action (Event e, Object arg)
- {
- if (e.target instanceof Button)
- {
- if (e.target == this.okButton_)
- {
- this.dispose ();
- }
- return true;
- }
- else
- return false;
- }
-
- private Button okButton_ = new Button (" ok ");
- private TextField text_ = null;
-}
-
-class AboutFrame extends Frame
-{
- public AboutFrame ()
- {
- super ("About");
- this.resize (300,300);
- this.setLayout (new BorderLayout ());
-
- Panel okButtonPanel = new Panel ();
- okButtonPanel.add (this.okButton_);
- AboutFrameTextPanel textPanel = new AboutFrameTextPanel ();
-
- this.add ("Center", textPanel);
- this.add ("South", okButtonPanel);
- }
-
- // Handle window destroy events
- public boolean handleEvent (Event evt)
- {
- if (evt.id == Event.WINDOW_DESTROY)
- {
- this.hide ();
- return true;
- }
- return super.handleEvent (evt);
- }
-
- // Handle all action events
- public boolean action (Event e, Object arg)
- {
- if (e.target instanceof Button)
- {
- if (e.target == this.okButton_)
- {
- this.hide ();
- }
- return true;
- }
- else
- return false;
- }
- private Button okButton_ = new Button (" ok ");
-}
-
-class AboutFrameTextPanel extends Panel
-{
- public void paint (Graphics g)
- {
- int width = this.size ().width;
- int height = this.size ().height;
-
- g.clearRect (0, 0, width, height);
- this.setBackground (Color.cyan);
-
- // First draw the title
- g.setFont (new Font ("TimesRoman", Font.BOLD | Font.ITALIC, 48));
- FontMetrics fontMetrics = g.getFontMetrics ();
- int x = (width - fontMetrics.stringWidth (title_))/2;
- int y = 100;
-
- Color color = g.getColor ();
- g.setColor (Color.orange);
- g.drawString(title_, x+2, y+2);
- g.setColor (color);
- g.drawString(title_, x, y);
-
- // Then draw author's name
- g.setFont (new Font ("TimesRoman", Font.ITALIC, 24));
- fontMetrics = g.getFontMetrics ();
- x = (width - fontMetrics.stringWidth (by_))/2;
- y += 50;
- g.drawString(by_, x, y);
-
- x = (width - fontMetrics.stringWidth (author_))/2;
- y += 50;
- g.drawString(author_, x, y);
-
- // Finally draw other information -- version number etc.
- g.setFont (new Font ("TimesRoman", Font.ITALIC, 18));
- fontMetrics = g.getFontMetrics ();
- x = (width - fontMetrics.stringWidth (info_))/2;
- y += 50;
- g.drawString(info_, x, y);
- }
-
- private String title_ = "MedJava";
- private String by_ = "by";
- private String author_ = "Prashant Jain";
- private String info_ = "Version 1.0";
-}
-
-class HelpFrame extends Frame
-{
- public HelpFrame (String codeBase)
- {
- super ("Help");
- this.setBackground (Color.white);
- this.text_.setEditable (false);
- Font defaultFont = new Font ("TimesRoman", Font.PLAIN, 14);
- this.text_.setFont (defaultFont);
-
- try
- {
- URL url = new URL (codeBase + "../ImageProcessing/framework/help.conf");
- String delim = "\n";
-
- // Get the input stream and pipe it to a DataInputStream
- DataInputStream iStream = new DataInputStream (url.openStream ());
-
- // Keep reading the data until we are done
- String tempString = iStream.readLine ();
- while (tempString != null)
- {
- if (tempString.startsWith ("<START>"))
- delim = "";
- else if (tempString.startsWith ("<END>"))
- delim = "\n";
- else if (tempString.startsWith ("<TAB>"))
- this.text_.appendText ("\t");
- else if (tempString.startsWith ("<P>"))
- this.text_.appendText ("\n");
- else
- {
- this.text_.appendText (tempString);
- this.text_.appendText (delim);
- }
- tempString = iStream.readLine ();
- }
- }
- catch (MalformedURLException e)
- {
- System.err.println (e);
- }
- catch (IOException e)
- {
- System.err.println (e);
- }
-
- this.resize (600,700);
- this.setLayout (new BorderLayout ());
-
- Panel okButtonPanel = new Panel ();
- okButtonPanel.add (this.okButton_);
- this.add ("South", okButtonPanel);
- this.add ("Center", this.text_);
- }
-
- // Handle window destroy events
- public boolean handleEvent (Event evt)
- {
- if (evt.id == Event.WINDOW_DESTROY)
- {
- this.hide ();
- return true;
- }
- return super.handleEvent (evt);
- }
-
- // Handle all action events
- public boolean action (Event e, Object arg)
- {
- if (e.target instanceof Button)
- {
- if (e.target == this.okButton_)
- {
- this.hide ();
- }
- return true;
- }
- else
- return false;
- }
-
- private Vector helpInfo_ = new Vector ();
- private Button okButton_ = new Button (" ok ");
- private TextArea text_ = new TextArea ();
-}
-
diff --git a/java/ImageProcessing/framework/DialogType.java b/java/ImageProcessing/framework/DialogType.java
deleted file mode 100644
index c95372c08e1..00000000000
--- a/java/ImageProcessing/framework/DialogType.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package imaging.framework;
-
-public class DialogType
-{
- public static final int ABOUT = 0;
- public static final int MALFORMED_URL = 1;
- public static final int URL_NOT_FOUND = 2;
- public static final int NOT_SUPPORTED = 3;
- public static final int HELP = 4;
- public static final int NOT_YET_IMPLEMENTED = 10;
-}
diff --git a/java/ImageProcessing/framework/FileBrowser.java b/java/ImageProcessing/framework/FileBrowser.java
deleted file mode 100644
index 27245b1f2f4..00000000000
--- a/java/ImageProcessing/framework/FileBrowser.java
+++ /dev/null
@@ -1,173 +0,0 @@
-package imaging.framework;
-
-import java.awt.*;
-import java.awt.image.*;
-import java.net.*;
-import java.applet.*;
-import gjt.Separator;
-import gjt.ComponentScroller;
-
-class FileNode extends HierarchyAdapter
-{
- public FileNode (String name,
- Icon icon,
- boolean root,
- ImageApp app)
- {
- super (name, icon, root);
- this.app_ = app;
- }
-
- public FileNode (String name,
- Icon icon,
- ListFiles list,
- ImageApp app)
- {
- super (name, icon);
- this.list_ = list;
- this.app_ = app;
- }
-
- public ImageApp app ()
- {
- return this.app_;
- }
-
- public void handleEvent ()
- {
- String s = null;
- String pString = "";
- Hierarchy p = this.getHierarchyParent ();
-
- while (p != null)
- {
- pString = p.getName () + pString;
- p = p.getHierarchyParent ();
- }
-
- if (pString.endsWith ("/"))
- s = "http://" + pString + this.getName ();
- else
- s = "http://" + pString + "/" + this.getName ();
-
- System.out.println ("Opening: " + s);
-
- // If list is null, then it is a file, else it is a directory and
- // use list to get the rest of the directory.
- if (this.list_ == null)
- this.app_.openURL (s); // It is a file
- else
- this.list_.listFiles (s, this); // It is a directory.
- }
-
- private ListFiles list_ = null;
- private ImageApp app_ = null;
-}
-
-class BrowserPanel extends Panel
-{
- public BrowserPanel (ImageApp parent)
- {
- this.resize (300, 300);
- this.parent_ = parent;
- this.setLayout (new BorderLayout ());
- }
-
- public int initialize (String url, ListFiles list)
- {
- String directory = null;
- int index = -1;
-
- String pString = list.stripProtocolHeader (url);
- if (!pString.endsWith ("/"))
- pString = pString + "/";
-
- try
- {
- Icon dirIcon = new Icon (this.parent_.getCodeBase () +
- "../ImageProcessing/framework/" +
- "file03.gif", (Applet) this.parent_);
- System.out.println (this.parent_.getCodeBase () +
- "../ImageProcessing/framework/" +
- "file03.gif");
- this.root_ = new FileNode (pString,
- dirIcon, true, this.parent_);
- }
- catch (MalformedURLException e)
- {
- }
-
- int count = list.listFiles (url, this.root_);
- // System.out.println ("Count: " + count);
- if (count > 0)
- {
- // Add the root to the component scroller and then add the
- // component scroller to the panel.
- this.scroller_ = new ComponentScroller (this.root_);
- this.add ("Center", this.scroller_);
- }
- return count;
- }
-
- private FileNode root_ = null;
- private ImageApp parent_;
- private ComponentScroller scroller_;
-}
-
-class FileBrowser extends Frame
-{
- public FileBrowser (String title, ImageApp parent)
- {
- super (title);
- this.resize (300, 300);
- this.browser_ = new BrowserPanel (parent);
- this.setLayout (new BorderLayout ());
-
- this.cancelButton_ = new Button (" cancel ");
- Panel buttonPanel = new Panel ();
- buttonPanel.add (this.cancelButton_);
- buttonPanel.resize (100, 100);
-
- Panel southPanel = new Panel ();
- southPanel.setLayout (new BorderLayout ());
- southPanel.add ("North", new Separator ());
- southPanel.add ("South", buttonPanel);
- this.add ("South", southPanel);
- this.add ("Center", this.browser_);
- }
-
- public int initialize (String url, ListFiles list)
- {
- return this.browser_.initialize (url, list);
- }
-
- // Handle window destroy events
- public boolean handleEvent (Event evt)
- {
- if (evt.id == Event.WINDOW_DESTROY)
- {
- this.dispose ();
- return true;
- }
- return super.handleEvent (evt);
- }
-
- // Handle all action events
- public boolean action (Event e, Object arg)
- {
- if (e.target instanceof Button)
- {
- if (e.target == this.cancelButton_)
- {
- this.dispose ();
- }
- validate ();
- return true;
- }
- else
- return false;
- }
-
- private Button cancelButton_;;
- private BrowserPanel browser_;
-}
diff --git a/java/ImageProcessing/framework/FilePanel.java b/java/ImageProcessing/framework/FilePanel.java
deleted file mode 100644
index f8ffc7dbca8..00000000000
--- a/java/ImageProcessing/framework/FilePanel.java
+++ /dev/null
@@ -1,161 +0,0 @@
-package imaging.framework;
-
-import java.awt.*;
-
-// Create a panel for all the buttons
-class FilePanel extends Panel
-{
- FilePanel (ImageApp parent)
- {
- this.parent_ = parent;
-
- this.setLayout (new GridLayout (2, 1));
-
- // First create all the buttons
- this.URLDialogButton_ = new URLDialogButton ("Open URL", "Download an image", this.parent_);
- this.saveButton_ = new SaveButton ("Save", "Upload an image", this.parent_);
-
- // Place the created buttons in the panel
- this.add (this.URLDialogButton_);
- this.add (this.saveButton_);
-
- // Disable the save button for now
- this.disableSaveButton ();
- this.resize (400, 400);
- }
-
- public void enableSaveButton ()
- {
- this.saveButton_.enable ();
- }
-
- public void disableSaveButton ()
- {
- this.saveButton_.disable ();
- }
-
- // All the created buttons
- private URLDialogButton URLDialogButton_;
- private SaveButton saveButton_;
-
- private ImageApp parent_;
-}
-
-// Create a panel for all the buttons
-class ResetPanel extends Panel
-{
- ResetPanel (ImageApp parent)
- {
- this.parent_ = parent;
-
- this.setLayout (new GridLayout (2, 1));
-
- // First create all the buttons
- this.reloadButton_ = new ReloadButton ("Reload Filters", "Reload all filters", this.parent_);
-
- // **********************
- // Disable this until it works
- // **********************
- this.reloadButton_.disable();
-
-
- this.resetButton_ = new ResetButton ("Reset", "Reset the image", this.parent_);
-
-
- // Place the created buttons in the panel
- this.add (this.resetButton_);
- this.add (this.reloadButton_);
-
- this.resize (400, 400);
- }
-
- // All the created buttons
- private ReloadButton reloadButton_;
- private ResetButton resetButton_;
-
- private ImageApp parent_;
-}
-
-
-class ZoomPanel extends Panel
-{
- ZoomPanel (ImageApp parent)
- {
- this.parent_ = parent;
-
- this.setLayout (new GridLayout (2, 1));
-
- // First create the two zoom buttons
- this.zoomInButton_ = new ZoomInButton ("<< Zoom in", "Zoom into the image", this.parent_);
- this.zoomOutButton_ = new ZoomOutButton ("Zoom out >>", "Zoom out of the image", this.parent_);
-
- // Now add the buttons to the panel
- this.add (this.zoomInButton_);
- this.add (this.zoomOutButton_);
-
- this.resize (100, 100);
- }
-
- private ZoomInButton zoomInButton_;
- private ZoomOutButton zoomOutButton_;
-
- private ImageApp parent_;
-}
-
-
-class FilterPanel extends Panel
-{
- FilterPanel (ImageApp parent)
- {
- this.parent_ = parent;
-
- this.setLayout (new GridLayout (2, 1));
- this.applyButton_ = new ApplyButton ("Apply", "Apply the selected filter", this.parent_);
-
- // Set the layout of the Choice Panel. Note that the Choice Panel
- // holds the choice button of filters.
- this.choicePanel_ = new ChoicePanel ("Select filter", this.parent_);
-
- this.add (this.applyButton_);
- this.add (this.choicePanel_);
- this.resize (200,200);
- }
-
- public Choice choice ()
- {
- return this.choicePanel_.choice ();
- }
-
- public void loadFilters ()
- {
- this.choicePanel_.loadFilters ();
- }
-
- private ChoicePanel choicePanel_;
- private ApplyButton applyButton_;
- private ImageApp parent_;
-}
-
-class HelpPanel extends Panel
-{
- HelpPanel (ImageApp parent)
- {
- this.parent_ = parent;
-
- this.setLayout (new GridLayout (2, 1));
-
- this.aboutButton_ = new AboutButton ("About", "About the applet", this.parent_);
- this.helpButton_ = new HelpButton ("Help", "Help on how to use the applet", this.parent_);
-
- // Now add the buttons to the panel
- this.add (this.aboutButton_);
- this.add (this.helpButton_);
-
- this.resize (100, 100);
- }
-
- private AboutButton aboutButton_;
- private HelpButton helpButton_;
-
- private ImageApp parent_;
-}
diff --git a/java/ImageProcessing/framework/FilterTest.java b/java/ImageProcessing/framework/FilterTest.java
deleted file mode 100644
index b1e33482be9..00000000000
--- a/java/ImageProcessing/framework/FilterTest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package imaging.framework;
-
-import java.awt.*;
-import java.awt.image.*;
-import imaging.filters.Timer;
-
-public class FilterTest
-{
- public static void main(String[] args)
- {
- Timer timer = new Timer();
- ImageProcessor ip = new ImageProcessor();
- ImageFilterFactory iff = new ImageFilterFactory();
- Frame frame = new Frame("Rotate Example");
- Toolkit tk = Toolkit.getDefaultToolkit();
- Dimension d = tk.getScreenSize();
- Image old_image = tk.getImage("myphoto.gif"), image;
- int image_x, image_y, x = 50, y = 50;
- Graphics g;
-
- frame.reshape(d.width/4, d.height/8, d.width/2, 3*d.height/4);
- frame.show();
- g = frame.getGraphics();
- d = frame.size();
-
- MediaTracker tracker = new MediaTracker(frame);
- tracker.addImage(old_image, 0);
- try { tracker.waitForID(0); } catch(InterruptedException excp) {}
- g.drawImage(old_image, x, y, frame);
- x += old_image.getWidth(frame) + 50;
-
- timer.start();
- image = ip.processImage(old_image, iff.createMeanImageFilter(), frame);
- timer.stop();
- System.out.println(timer);
- g.drawImage(image, x, y, frame);
- x += old_image.getWidth(frame) + 50;
-
- timer.start();
- image = ip.processImage(old_image, iff.createSobelFilter(), frame);
- timer.stop();
- System.out.println(timer);
- g.drawImage(image, x, y, frame);
- x = 50;
- y += old_image.getHeight(frame) + 50;
-
- timer.start();
- image = ip.processImage(old_image, iff.createEmbossFilter(), frame);
- timer.stop();
- System.out.println(timer);
- g.drawImage(image, x, y, frame);
- x += old_image.getWidth(frame) + 50;
-
- image = ip.processImage(old_image, iff.createSharpenFilter(), frame);
- g.drawImage(image, x, y, frame);
- x = 50;
- y += old_image.getHeight(frame) + 50;
-
- image = ip.processImage(old_image, iff.createRotateImageFilter(), frame);
- g.drawImage(image, x, y, frame);
- }
-}
diff --git a/java/ImageProcessing/framework/GIFHandler.java b/java/ImageProcessing/framework/GIFHandler.java
deleted file mode 100644
index 3d099ba294c..00000000000
--- a/java/ImageProcessing/framework/GIFHandler.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package imaging.framework;
-
-import java.awt.*;
-import java.io.*;
-import JACE.OS.*;
-import JACE.Connection.*;
-
-
-public class GIFHandler extends BlobWriter
-{
- public GIFHandler (String filename, Image image, int length)
- {
- super (null, length, 0, filename);
- this.image_ = image;
- }
-
- /******************************
- * Used for HTTP 1.1 PUT authorization
- *****************************/
- public GIFHandler (String filename, Image image, int length, String authentication)
- {
- super (null, length, 0, filename, authentication);
- this.image_ = image;
- }
-
- protected int sendRequest ()
- {
- if (this.sendHeader () == -1)
- {
- ACE.ERROR ("GIFHandler::sendHeader failed.");
- return -1;
- }
- else
- if (this.sendData () == -1)
- {
- ACE.ERROR ("GIFHandler::sendData failed.");
- return -1;
- }
- return 0;
- }
-
- // Send the data
- protected int sendData ()
- {
-
-
- try
- {
- if (this.length_ > 0)
- {
- OutputStream ostream = this.peer ().outputStream ();
-
- this.encoder_ = new GifEncoder (this.image_, ostream);
-
- this.encoder_.encode ();
-
- ostream.flush();
-
- // this.encoder_ = new GIFEncoder (this.image_);
- // this.encoder_.Write (ostream);
- }
- this.bytesWritten_ = this.length_;
-
- }
- catch (IOException e)
- {
- ACE.ERROR ("Error writing to server");
- }
- return 0;
- }
-
- GifEncoder encoder_ = null;
- // GIFEncoder encoder_ = null;
- Image image_ = null;
-}
diff --git a/java/ImageProcessing/framework/GifEncoder.java b/java/ImageProcessing/framework/GifEncoder.java
deleted file mode 100644
index 91a3927d95d..00000000000
--- a/java/ImageProcessing/framework/GifEncoder.java
+++ /dev/null
@@ -1,693 +0,0 @@
-// GifEncoder - write out an image as a GIF
-//
-// Transparency handling and variable bit size courtesy of Jack Palevich.
-//
-// Copyright (C) 1996 by Jef Poskanzer <jef@acme.com>. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1. Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// 2. Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-// SUCH DAMAGE.
-//
-// Visit the ACME Labs Java page for up-to-date versions of this and other
-// fine Java utilities: http://www.acme.com/java/
-
-package imaging.framework;
-
-import java.util.*;
-import java.io.*;
-import java.awt.Image;
-import java.awt.image.*;
-
-/// Write out an image as a GIF.
-// <P>
-// <A HREF="/resources/classes/Acme/JPM/Encoders/GifEncoder.java">Fetch the software.</A><BR>
-// <A HREF="/resources/classes/Acme.tar.Z">Fetch the entire Acme package.</A>
-// <P>
-// @see ToGif
-
-public class GifEncoder extends ImageEncoder
- {
-
- private boolean interlace = false;
-
- /// Constructor from Image.
- // @param img The image to encode.
- // @param out The stream to write the GIF to.
- public GifEncoder( Image img, OutputStream out ) throws IOException
- {
- super( img, out );
- }
-
- /// Constructor from Image with interlace setting.
- // @param img The image to encode.
- // @param out The stream to write the GIF to.
- // @param interlace Whether to interlace.
- public GifEncoder( Image img, OutputStream out, boolean interlace ) throws IOException
- {
- super( img, out );
- this.interlace = interlace;
- }
-
- /// Constructor from ImageProducer.
- // @param prod The ImageProducer to encode.
- // @param out The stream to write the GIF to.
- public GifEncoder( ImageProducer prod, OutputStream out ) throws IOException
- {
- super( prod, out );
- }
-
- /// Constructor from ImageProducer with interlace setting.
- // @param prod The ImageProducer to encode.
- // @param out The stream to write the GIF to.
- public GifEncoder( ImageProducer prod, OutputStream out, boolean interlace ) throws IOException
- {
- super( prod, out );
- this.interlace = interlace;
- }
-
-
- int width, height;
- int[][] rgbPixels;
-
- void encodeStart( int width, int height ) throws IOException
- {
- this.width = width;
- this.height = height;
- rgbPixels = new int[height][width];
- }
-
- void encodePixels(
- int x, int y, int w, int h, int[] rgbPixels, int off, int scansize )
- throws IOException
- {
- // Save the pixels.
- for ( int row = 0; row < h; ++row )
- System.arraycopy(
- rgbPixels, row * scansize + off,
- this.rgbPixels[y + row], x, w );
-
- }
-
- IntHashtable colorHash;
-
- void encodeDone() throws IOException
- {
- int transparentIndex = -1;
- int transparentRgb = -1;
- // Put all the pixels into a hash table.
- colorHash = new IntHashtable();
- int index = 0;
- for ( int row = 0; row < height; ++row )
- {
- int rowOffset = row * width;
- for ( int col = 0; col < width; ++col )
- {
- int rgb = rgbPixels[row][col];
- boolean isTransparent = ( ( rgb >>> 24 ) < 0x80 );
- if ( isTransparent )
- {
- if ( transparentIndex < 0 )
- {
- // First transparent color; remember it.
- transparentIndex = index;
- transparentRgb = rgb;
- }
- else if ( rgb != transparentRgb )
- {
- // A second transparent color; replace it with
- // the first one.
- rgbPixels[row][col] = rgb = transparentRgb;
- }
- }
- GifEncoderHashitem item =
- (GifEncoderHashitem) colorHash.get( rgb );
- if ( item == null )
- {
- if ( index >= 256 )
- throw new IOException( "too many colors for a GIF" );
- item = new GifEncoderHashitem(
- rgb, 1, index, isTransparent );
- ++index;
- colorHash.put( rgb, item );
- }
- else
- ++item.count;
- }
- }
-
- // Figure out how many bits to use.
- int logColors;
- if ( index <= 2 )
- logColors = 1;
- else if ( index <= 4 )
- logColors = 2;
- else if ( index <= 16 )
- logColors = 4;
- else
- logColors = 8;
-
- // Turn colors into colormap entries.
- int mapSize = 1 << logColors;
- byte[] reds = new byte[mapSize];
- byte[] grns = new byte[mapSize];
- byte[] blus = new byte[mapSize];
- for ( Enumeration e = colorHash.elements(); e.hasMoreElements(); )
- {
- GifEncoderHashitem item = (GifEncoderHashitem) e.nextElement();
- reds[item.index] = (byte) ( ( item.rgb >> 16 ) & 0xff );
- grns[item.index] = (byte) ( ( item.rgb >> 8 ) & 0xff );
- blus[item.index] = (byte) ( item.rgb & 0xff );
- }
-
- GIFEncode(
- out, width, height, interlace, (byte) 0, transparentIndex,
- logColors, reds, grns, blus );
- }
-
- byte GetPixel( int x, int y ) throws IOException
- {
- GifEncoderHashitem item =
- (GifEncoderHashitem) colorHash.get( rgbPixels[y][x] );
- if ( item == null )
- throw new IOException( "color not found" );
- return (byte) item.index;
- }
-
- static void writeString( OutputStream out, String str ) throws IOException
- {
- int len = str.length();
- byte[] buf = new byte[len];
- str.getBytes( 0, len, buf, 0 );
- out.write( buf );
- }
-
- // Adapted from ppmtogif, which is based on GIFENCOD by David
- // Rowley <mgardi@watdscu.waterloo.edu>. Lempel-Zim compression
- // based on "compress".
-
- int Width, Height;
- boolean Interlace;
- int curx, cury;
- int CountDown;
- int Pass = 0;
-
- void GIFEncode(
- OutputStream outs, int Width, int Height, boolean Interlace, byte Background, int Transparent, int BitsPerPixel, byte[] Red, byte[] Green, byte[] Blue )
- throws IOException
- {
- byte B;
- int LeftOfs, TopOfs;
- int ColorMapSize;
- int InitCodeSize;
- int i;
-
- this.Width = Width;
- this.Height = Height;
- this.Interlace = Interlace;
- ColorMapSize = 1 << BitsPerPixel;
- LeftOfs = TopOfs = 0;
-
- // Calculate number of bits we are expecting
- CountDown = Width * Height;
-
- // Indicate which pass we are on (if interlace)
- Pass = 0;
-
- // The initial code size
- if ( BitsPerPixel <= 1 )
- InitCodeSize = 2;
- else
- InitCodeSize = BitsPerPixel;
-
- // Set up the current x and y position
- curx = 0;
- cury = 0;
-
- // Write the Magic header
- writeString( outs, "GIF89a" );
-
- // Write out the screen width and height
- Putword( Width, outs );
- Putword( Height, outs );
-
- // Indicate that there is a global colour map
- B = (byte) 0x80; // Yes, there is a color map
- // OR in the resolution
- B |= (byte) ( ( 8 - 1 ) << 4 );
- // Not sorted
- // OR in the Bits per Pixel
- B |= (byte) ( ( BitsPerPixel - 1 ) );
-
- // Write it out
- Putbyte( B, outs );
-
- // Write out the Background colour
- Putbyte( Background, outs );
-
- // Pixel aspect ratio - 1:1.
- //Putbyte( (byte) 49, outs );
- // Java's GIF reader currently has a bug, if the aspect ratio byte is
- // not zero it throws an ImageFormatException. It doesn't know that
- // 49 means a 1:1 aspect ratio. Well, whatever, zero works with all
- // the other decoders I've tried so it probably doesn't hurt.
- Putbyte( (byte) 0, outs );
-
- // Write out the Global Colour Map
- for ( i = 0; i < ColorMapSize; ++i )
- {
- Putbyte( Red[i], outs );
- Putbyte( Green[i], outs );
- Putbyte( Blue[i], outs );
- }
-
- // Write out extension for transparent colour index, if necessary.
- if ( Transparent != -1 )
- {
- Putbyte( (byte) '!', outs );
- Putbyte( (byte) 0xf9, outs );
- Putbyte( (byte) 4, outs );
- Putbyte( (byte) 1, outs );
- Putbyte( (byte) 0, outs );
- Putbyte( (byte) 0, outs );
- Putbyte( (byte) Transparent, outs );
- Putbyte( (byte) 0, outs );
- }
-
- // Write an Image separator
- Putbyte( (byte) ',', outs );
-
- // Write the Image header
- Putword( LeftOfs, outs );
- Putword( TopOfs, outs );
- Putword( Width, outs );
- Putword( Height, outs );
-
- // Write out whether or not the image is interlaced
- if ( Interlace )
- Putbyte( (byte) 0x40, outs );
- else
- Putbyte( (byte) 0x00, outs );
-
- // Write out the initial code size
- Putbyte( (byte) InitCodeSize, outs );
-
- // Go and actually compress the data
- compress( InitCodeSize+1, outs );
-
- // Write out a Zero-length packet (to end the series)
- Putbyte( (byte) 0, outs );
-
- // Write the GIF file terminator
- Putbyte( (byte) ';', outs );
- }
-
- // Bump the 'curx' and 'cury' to point to the next pixel
- void BumpPixel()
- {
- // Bump the current X position
- ++curx;
-
- // If we are at the end of a scan line, set curx back to the beginning
- // If we are interlaced, bump the cury to the appropriate spot,
- // otherwise, just increment it.
- if ( curx == Width )
- {
- curx = 0;
-
- if ( ! Interlace )
- ++cury;
- else
- {
- switch( Pass )
- {
- case 0:
- cury += 8;
- if ( cury >= Height )
- {
- ++Pass;
- cury = 4;
- }
- break;
-
- case 1:
- cury += 8;
- if ( cury >= Height )
- {
- ++Pass;
- cury = 2;
- }
- break;
-
- case 2:
- cury += 4;
- if ( cury >= Height )
- {
- ++Pass;
- cury = 1;
- }
- break;
-
- case 3:
- cury += 2;
- break;
- }
- }
- }
- }
-
- static final int EOF = -1;
-
- // Return the next pixel from the image
- int GIFNextPixel() throws IOException
- {
- byte r;
-
- if ( CountDown == 0 )
- return EOF;
-
- --CountDown;
-
- r = GetPixel( curx, cury );
-
- BumpPixel();
-
- return r & 0xff;
- }
-
- // Write out a word to the GIF file
- void Putword( int w, OutputStream outs ) throws IOException
- {
- Putbyte( (byte) ( w & 0xff ), outs );
- Putbyte( (byte) ( ( w >> 8 ) & 0xff ), outs );
- }
-
- // Write out a byte to the GIF file
- void Putbyte( byte b, OutputStream outs ) throws IOException
- {
- outs.write( b );
- }
-
-
- // GIFCOMPR.C - GIF Image compression routines
- //
- // Lempel-Ziv compression based on 'compress'. GIF modifications by
- // David Rowley (mgardi@watdcsu.waterloo.edu)
-
- // General DEFINEs
-
- static final int BITS = 12;
-
- static final int HSIZE = 5003; // 80% occupancy
-
- // GIF Image compression - modified 'compress'
- //
- // Based on: compress.c - File compression ala IEEE Computer, June 1984.
- //
- // By Authors: Spencer W. Thomas (decvax!harpo!utah-cs!utah-gr!thomas)
- // Jim McKie (decvax!mcvax!jim)
- // Steve Davies (decvax!vax135!petsd!peora!srd)
- // Ken Turkowski (decvax!decwrl!turtlevax!ken)
- // James A. Woods (decvax!ihnp4!ames!jaw)
- // Joe Orost (decvax!vax135!petsd!joe)
-
- int n_bits; // number of bits/code
- int maxbits = BITS; // user settable max # bits/code
- int maxcode; // maximum code, given n_bits
- int maxmaxcode = 1 << BITS; // should NEVER generate this code
-
- final int MAXCODE( int n_bits )
- {
- return ( 1 << n_bits ) - 1;
- }
-
- int[] htab = new int[HSIZE];
- int[] codetab = new int[HSIZE];
-
- int hsize = HSIZE; // for dynamic table sizing
-
- int free_ent = 0; // first unused entry
-
- // block compression parameters -- after all codes are used up,
- // and compression rate changes, start over.
- boolean clear_flg = false;
-
- // Algorithm: use open addressing double hashing (no chaining) on the
- // prefix code / next character combination. We do a variant of Knuth's
- // algorithm D (vol. 3, sec. 6.4) along with G. Knott's relatively-prime
- // secondary probe. Here, the modular division first probe is gives way
- // to a faster exclusive-or manipulation. Also do block compression with
- // an adaptive reset, whereby the code table is cleared when the compression
- // ratio decreases, but after the table fills. The variable-length output
- // codes are re-sized at this point, and a special CLEAR code is generated
- // for the decompressor. Late addition: construct the table according to
- // file size for noticeable speed improvement on small files. Please direct
- // questions about this implementation to ames!jaw.
-
- int g_init_bits;
-
- int ClearCode;
- int EOFCode;
-
- void compress( int init_bits, OutputStream outs ) throws IOException
- {
- int fcode;
- int i /* = 0 */;
- int c;
- int ent;
- int disp;
- int hsize_reg;
- int hshift;
-
- // Set up the globals: g_init_bits - initial number of bits
- g_init_bits = init_bits;
-
- // Set up the necessary values
- clear_flg = false;
- n_bits = g_init_bits;
- maxcode = MAXCODE( n_bits );
-
- ClearCode = 1 << ( init_bits - 1 );
- EOFCode = ClearCode + 1;
- free_ent = ClearCode + 2;
-
- char_init();
-
- ent = GIFNextPixel();
-
- hshift = 0;
- for ( fcode = hsize; fcode < 65536; fcode *= 2 )
- ++hshift;
- hshift = 8 - hshift; // set hash code range bound
-
- hsize_reg = hsize;
- cl_hash( hsize_reg ); // clear hash table
-
- output( ClearCode, outs );
-
- outer_loop:
- while ( (c = GIFNextPixel()) != EOF )
- {
- fcode = ( c << maxbits ) + ent;
- i = ( c << hshift ) ^ ent; // xor hashing
-
- if ( htab[i] == fcode )
- {
- ent = codetab[i];
- continue;
- }
- else if ( htab[i] >= 0 ) // non-empty slot
- {
- disp = hsize_reg - i; // secondary hash (after G. Knott)
- if ( i == 0 )
- disp = 1;
- do
- {
- if ( (i -= disp) < 0 )
- i += hsize_reg;
-
- if ( htab[i] == fcode )
- {
- ent = codetab[i];
- continue outer_loop;
- }
- }
- while ( htab[i] >= 0 );
- }
- output( ent, outs );
- ent = c;
- if ( free_ent < maxmaxcode )
- {
- codetab[i] = free_ent++; // code -> hashtable
- htab[i] = fcode;
- }
- else
- cl_block( outs );
- }
- // Put out the final code.
- output( ent, outs );
- output( EOFCode, outs );
- }
-
- // output
- //
- // Output the given code.
- // Inputs:
- // code: A n_bits-bit integer. If == -1, then EOF. This assumes
- // that n_bits =< wordsize - 1.
- // Outputs:
- // Outputs code to the file.
- // Assumptions:
- // Chars are 8 bits long.
- // Algorithm:
- // Maintain a BITS character long buffer (so that 8 codes will
- // fit in it exactly). Use the VAX insv instruction to insert each
- // code in turn. When the buffer fills up empty it and start over.
-
- int cur_accum = 0;
- int cur_bits = 0;
-
- int masks[] = { 0x0000, 0x0001, 0x0003, 0x0007, 0x000F,
- 0x001F, 0x003F, 0x007F, 0x00FF,
- 0x01FF, 0x03FF, 0x07FF, 0x0FFF,
- 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF };
-
- void output( int code, OutputStream outs ) throws IOException
- {
- cur_accum &= masks[cur_bits];
-
- if ( cur_bits > 0 )
- cur_accum |= ( code << cur_bits );
- else
- cur_accum = code;
-
- cur_bits += n_bits;
-
- while ( cur_bits >= 8 )
- {
- char_out( (byte) ( cur_accum & 0xff ), outs );
- cur_accum >>= 8;
- cur_bits -= 8;
- }
-
- // If the next entry is going to be too big for the code size,
- // then increase it, if possible.
- if ( free_ent > maxcode || clear_flg )
- {
- if ( clear_flg )
- {
- maxcode = MAXCODE(n_bits = g_init_bits);
- clear_flg = false;
- }
- else
- {
- ++n_bits;
- if ( n_bits == maxbits )
- maxcode = maxmaxcode;
- else
- maxcode = MAXCODE(n_bits);
- }
- }
-
- if ( code == EOFCode )
- {
- // At EOF, write the rest of the buffer.
- while ( cur_bits > 0 )
- {
- char_out( (byte) ( cur_accum & 0xff ), outs );
- cur_accum >>= 8;
- cur_bits -= 8;
- }
-
- flush_char( outs );
- }
- }
-
- // Clear out the hash table
-
- // table clear for block compress
- void cl_block( OutputStream outs ) throws IOException
- {
- cl_hash( hsize );
- free_ent = ClearCode + 2;
- clear_flg = true;
-
- output( ClearCode, outs );
- }
-
- // reset code table
- void cl_hash( int hsize )
- {
- for ( int i = 0; i < hsize; ++i )
- htab[i] = -1;
- }
-
- // GIF Specific routines
-
- // Number of characters so far in this 'packet'
- int a_count;
-
- // Set up the 'byte output' routine
- void char_init()
- {
- a_count = 0;
- }
-
- // Define the storage for the packet accumulator
- byte[] accum = new byte[256];
-
- // Add a character to the end of the current packet, and if it is 254
- // characters, flush the packet to disk.
- void char_out( byte c, OutputStream outs ) throws IOException
- {
- accum[a_count++] = c;
- if ( a_count >= 254 )
- flush_char( outs );
- }
-
- // Flush the packet to disk, and reset the accumulator
- void flush_char( OutputStream outs ) throws IOException
- {
- if ( a_count > 0 )
- {
- outs.write( a_count );
- outs.write( accum, 0, a_count );
- a_count = 0;
- }
- }
-
- }
-
-class GifEncoderHashitem
- {
-
- public int rgb;
- public int count;
- public int index;
- public boolean isTransparent;
-
- public GifEncoderHashitem( int rgb, int count, int index, boolean isTransparent )
- {
- this.rgb = rgb;
- this.count = count;
- this.index = index;
- this.isTransparent = isTransparent;
- }
-
- }
diff --git a/java/ImageProcessing/framework/Hierarchy.java b/java/ImageProcessing/framework/Hierarchy.java
deleted file mode 100644
index 41b1825ef4d..00000000000
--- a/java/ImageProcessing/framework/Hierarchy.java
+++ /dev/null
@@ -1,347 +0,0 @@
-package imaging.framework;
-
-import java.awt.*;
-import java.util.Vector;
-
-public class Hierarchy extends Canvas
-{
- // Attributes
- private String name_;
- private Hierarchy root_;
- private Hierarchy parent_;
- private Icon icon_ = null;
-
- // State
- private boolean collapsed_ = true;
- private boolean deadend_ = true;
- private Vector contained_ = new Vector();
- private Rectangle self_;
- private Rectangle scope_;
-
- // Constants
- private Color COLOR = Color.black;
- private Font FONT = new Font("Dialog", Font.BOLD, 12);
- private static int TRI_HEIGHT = 8;
- private int SPACE = 15;
-
- static Hierarchy last_lit_ = null;
-
- public Hierarchy(String name, boolean root)
- {
- name_ = name;
-
- if (root)
- {
- deadend_ = false;
- root_ = this;
- parent_ = null;
- }
- }
-
- public Hierarchy(String name, Icon icon, boolean root)
- {
- this(name, root);
- icon_ = icon;
- }
-
- public Hierarchy(String name)
- {
- this(name, false);
- }
-
- public Hierarchy(String name, Icon icon)
- {
- this(name, icon, false);
- }
-
- public void setExpandable(boolean expandable)
- {
- deadend_ = ! expandable;
-
- /*
- if (root_ != null)
- root_.repaint();
- */
- }
-
- public void setCollapsed(boolean collapsed)
- {
- collapsed_ = collapsed;
-
- if (root_ != null)
- root_.repaint();
- }
-
- public void addEntry(Hierarchy entry)
- {
- deadend_ = false;
- entry.parent_ = this;
- entry.root_ = root_;
- entry.FONT = FONT;
- entry.COLOR = COLOR;
- entry.SPACE = SPACE;
-
- contained_.addElement(entry);
- }
-
- public boolean removeEntry(String name)
- {
- if (contained_.size() == 1)
- deadend_ = true;
-
- return contained_.removeElement(name);
- }
-
- public String getName()
- {
- return name_;
- }
-
- public void setName(String name)
- {
- name_ = name;
- }
-
- public Hierarchy getHierarchyParent()
- {
- return parent_;
- }
-
- public void setFont(Font font)
- {
- FONT = font;
- }
-
- public void setColor(Color color)
- {
- COLOR = color;
- }
-
- public void setSpace(int space)
- {
- SPACE = space;
- }
-
- public void handleEvent() {}
-
- public boolean mouseDown(Event evt, int x, int y)
- {
- Hierarchy value = mouseInside(x, y);
-
- if (value != null)
- {
- if (! value.deadend_)
- {
- if (x < value.self_.x + TRI_HEIGHT + SPACE)
- {
- value.collapsed_ = ! value.collapsed_;
- if (value.contained_.isEmpty())
- value.handleEvent();
- repaint();
- }
- }
- else
- {
- if (value.contained_.isEmpty())
- value.handleEvent();
- }
- }
-
- return false;
- }
-
- public boolean mouseMove(Event evt, int x, int y)
- {
- Hierarchy value = mouseInside(x, y);
-
- if ((value != last_lit_) && (last_lit_ != null))
- last_lit_.highlight(getGraphics(), false);
-
- if (value != null && value.deadend_)
- value.highlight(getGraphics(), true);
-
- last_lit_ = value;
-
- return false;
- }
-
- public void paint(Graphics g)
- {
- Dimension d = size();
-
- drawLevel(g, SPACE, SPACE);
-
- if (d.width < scope_.width || d.height < scope_.height ||
- d.width > scope_.width || d.height > scope_.height)
- resize(scope_.width, scope_.height);
- }
-
-
- private Point drawLevel(Graphics g, int x, int y)
- {
- g.setFont(FONT);
- FontMetrics font_metrics = g.getFontMetrics();
- int string_height = font_metrics.getHeight();
- int string_width = font_metrics.stringWidth(name_);
- int entry_height = string_height;
- int entry_width = string_width + 2*SPACE + TRI_HEIGHT;
- int total_height, total_width, initial_x = x, initial_y = y;
- int indent = SPACE + TRI_HEIGHT/2;
- int temp_x = x;
- Point place_marker;
- Hierarchy entry;
-
- if (icon_ != null)
- {
- entry_height = Math.max(string_height, icon_.iconSize().height);
- entry_width += icon_.iconSize().width + SPACE;
- indent += icon_.iconSize().width/2;
- if (! deadend_)
- drawShape(g, x, y + (entry_height - TRI_HEIGHT)/2, deadend_, collapsed_);
- }
- else
- drawShape(g, x, y + (entry_height - TRI_HEIGHT)/2, deadend_, collapsed_);
-
- self_ = new Rectangle(initial_x, initial_y, entry_width, entry_height);
-
- temp_x += TRI_HEIGHT + SPACE;
-
- if (icon_ != null)
- {
- icon_.drawIcon(g, temp_x, y, root_);
- temp_x += SPACE + icon_.iconSize().width;
- }
-
- g.setColor(COLOR);
-
- g.drawString(name_, temp_x, y + (entry_height + string_height)/2);
-
- total_width = entry_width;
- y += entry_height + SPACE;
-
- if (! (deadend_ || collapsed_))
- {
- x += indent;
- for (int i = 0; i < contained_.size(); i++)
- {
- entry = (Hierarchy)contained_.elementAt(i);
- place_marker = entry.drawLevel(g, x, y);
- total_width = Math.max(total_width, entry.scope_.width + indent + SPACE);
- x = place_marker.x;
- y = place_marker.y;
- }
- x -= indent;
- }
-
- total_height = y - initial_y;
- scope_ = new Rectangle(initial_x, initial_y, total_width, total_height);
-
- return new Point(x, y);
- }
-
- private Hierarchy mouseInside(int x, int y)
- {
- Hierarchy entry;
- Hierarchy return_value = null;
-
- if (self_.inside(x, y))
- {
- return_value = this;
- }
- else
- {
- if (scope_.inside(x, y) && (! collapsed_))
- {
- for (int i = 0; i < contained_.size(); i++)
- {
- entry = (Hierarchy)contained_.elementAt(i);
- if ((return_value = entry.mouseInside(x, y)) != null)
- break;
- }
- }
- else
- return_value = null;
- }
-
- return return_value;
- }
-
- private void highlight(Graphics g, boolean lit)
- {
- g.setFont(FONT);
- FontMetrics fm = g.getFontMetrics();
- int string_height = fm.getHeight();
- int x = self_.x + SPACE + TRI_HEIGHT;
- int y = self_.y;
-
- if (icon_ != null)
- x += icon_.iconSize().width + SPACE;
-
- if (lit)
- g.setColor(Color.magenta);
- else
- g.setColor(COLOR);
-
- g.drawString(name_, x, y + (self_.height + string_height)/2);
- }
-
-
- private static void drawShape(Graphics g, int x, int y, boolean dead_end, boolean collapsed)
- {
- int xpoints[] = new int[3];
- int ypoints[] = new int[3];
-
- xpoints[0] = x;
- ypoints[0] = y;
-
- if (dead_end)
- {
- g.fillOval(x, y, TRI_HEIGHT, TRI_HEIGHT);
- }
- else
- {
- // Draw a small collapsed triangle: |>
- if (collapsed)
- {
- xpoints[1] = x;
- xpoints[2] = x + TRI_HEIGHT;
- ypoints[1] = y + TRI_HEIGHT;
- ypoints[2] = y + TRI_HEIGHT/2;
- g.fillPolygon(xpoints, ypoints, 3);
- }
- //Draw a small uncollapsed triangle
- else
- {
- xpoints[1] = x + TRI_HEIGHT;
- xpoints[2] = x + TRI_HEIGHT/2;
- ypoints[1] = y;
- ypoints[2] = y + TRI_HEIGHT;
- g.fillPolygon(xpoints, ypoints, 3);
- }
- }
- }
-
- private static void drawVertHashedLine(Graphics g, int x, int y1, int y2, int hashsize)
- {
- for (int ytemp = y1; ytemp < y2; ytemp += hashsize*3)
- {
- if (y2 - hashsize < ytemp)
- g.drawLine(x, ytemp, x, y2);
- else
- g.drawLine(x, ytemp, x, ytemp + hashsize);
- }
- }
-
- private static void drawHoroHashedLine(Graphics g, int y, int x1, int x2, Color color, int hashsize)
- {
- for (int xtemp = x1; xtemp < x2; xtemp += hashsize*3)
- {
- if (x2 - hashsize < xtemp)
- g.drawLine(xtemp, y, x1, y);
- else
- g.drawLine(xtemp, y, xtemp + hashsize, y);
- }
- }
-}
-
-
diff --git a/java/ImageProcessing/framework/HierarchyAdapter.java b/java/ImageProcessing/framework/HierarchyAdapter.java
deleted file mode 100644
index a265be656ea..00000000000
--- a/java/ImageProcessing/framework/HierarchyAdapter.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package imaging.framework;
-
-import java.awt.*;
-
-class HierarchyAdapter extends Hierarchy
-{
- public HierarchyAdapter(String name, boolean root)
- {
- super(name, root);
- }
-
- public HierarchyAdapter(String name, Icon icon, boolean root)
- {
- super(name, icon, root);
- }
-
- public HierarchyAdapter(String name)
- {
- super(name);
- }
-
- public HierarchyAdapter(String name, Icon icon)
- {
- super(name, icon);
- }
-
- public void paint(Graphics g)
- {
- super.paint(g);
-
- Container p = getParent().getParent();
- p.getLayout ().layoutContainer (p);
- }
-}
diff --git a/java/ImageProcessing/framework/Icon.java b/java/ImageProcessing/framework/Icon.java
deleted file mode 100644
index eed91ed55c7..00000000000
--- a/java/ImageProcessing/framework/Icon.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package imaging.framework;
-
-import java.awt.*;
-import java.applet.*;
-import java.net.*;
-
-public class Icon
-{
- protected Image icon_;
- protected Dimension iconSize_;
-
- Icon()
- {
- super();
- }
-
- Icon(String file_name, Component comp)
- {
- this.icon_ = Toolkit.getDefaultToolkit().getImage(file_name);
- this.loadImage(comp);
- }
-
- Icon(Image icon_image, Component comp)
- {
- this.icon_ = icon_image;
- this.loadImage(comp);
- }
-
- Icon(String url, Applet applet) throws MalformedURLException
- {
- this.icon_ = applet.getImage(new URL(url));
- loadImage(applet);
- }
-
- public void drawIcon(Graphics g, int x, int y, Component comp)
- {
- g.drawImage(this.icon_, x, y, comp);
- }
-
- private void loadImage(Component comp)
- {
- try
- {
- MediaTracker tracker = new MediaTracker(comp);
- tracker.addImage(this.icon_, 0);
- tracker.waitForID(0);
-
- this.iconSize_ = new Dimension(this.icon_.getWidth(comp), this.icon_.getHeight(comp));
- }
- catch (InterruptedException excp)
- {
- System.err.println("Icon::getIcon image failed to load");
- }
- }
-
- public Dimension iconSize()
- {
- return this.iconSize_;
- }
-
- public Image getIconImage()
- {
- return this.icon_;
- }
-
-}
-
-
-
-
diff --git a/java/ImageProcessing/framework/ImageApp.java b/java/ImageProcessing/framework/ImageApp.java
deleted file mode 100644
index 486f45b9afb..00000000000
--- a/java/ImageProcessing/framework/ImageApp.java
+++ /dev/null
@@ -1,303 +0,0 @@
-package imaging.framework;
-
-import java.util.*;
-import java.awt.*;
-import java.net.*;
-import java.io.*;
-import java.awt.image.*;
-import java.applet.*;
-import gjt.Separator;
-import gjt.Util;
-
-public class ImageApp extends Applet
-{
- public void init ()
- {
- // Use BorderLayout for our applet frame
- this.setLayout (new BorderLayout ());
-
- // Now load all the filters specified in the config file
- // this.loadFilters ();
- this.setupButtonPanel ();
- this.add ("Center", this.imageCanvas_);
- // Check if we are running in test mode
- String testFile = getParameter ("testFile");
- if (testFile != null)
- {
- this.tester_ = new Tester (testFile, this);
- this.tester_.initialize ();
- }
- // Initialize the DialogManager
- DialogManager.initialize (this);
- }
-
- private void setupButtonPanel ()
- {
- Panel southPanel = new Panel ();
- southPanel.setLayout (new BorderLayout ());
-
- Panel buttonPanel = new Panel ();
- buttonPanel.setLayout (new GridLayout (1, 5));
-
- this.statusDisplay_ = new StatusDisplay ();
- // Create a panel for all the buttons
- this.filePanel_ = new FilePanel (this);
- this.resetPanel_ = new ResetPanel (this);
- this.zoomPanel_ = new ZoomPanel (this);
- this.filterPanel_ = new FilterPanel (this);
- this.helpPanel_ = new HelpPanel (this);
-
- buttonPanel.add (this.filePanel_);
- buttonPanel.add (this.resetPanel_);
- buttonPanel.add (this.zoomPanel_);
- buttonPanel.add (this.filterPanel_);
- buttonPanel.add (this.helpPanel_);
-
- southPanel.add ("North", new Separator ());
- southPanel.add ("Center", buttonPanel);
- southPanel.add ("South", this.statusDisplay_);
-
- southPanel.resize (400, 400);
-
- // Now add all these components to the main frame
- this.add ("South", southPanel);
- this.add ("North", new Panel ()); // Empty panel (for aesthetics)
- // this.add ("East", new Panel ()); // Empty panel (for aesthetics)
- // this.add ("West", new Panel ()); // Empty panel (for aesthetics)
- }
-
- public void displayStatus (String s)
- {
- this.statusDisplay_.setText (s);
- }
-
- // Handle all action events
- public void zoomFactor (double zoomFactor)
- {
- this.imageCanvas_.zoomFactor (zoomFactor);
- }
-
- public void reloadFilters ()
- {
- this.filterPanel_.loadFilters ();
- repaint ();
- }
-
- public Hashtable filterTable ()
- {
- return this.filterTable_;
- }
-
- public ImageFilter getFilter (String s)
- {
- return (ImageFilter) this.filterTable_.get (s);
- }
-
- public void apply ()
- {
- ImageFilter filter = this.getFilter (this.filterPanel_.choice ().getSelectedItem ());
- this.apply (filter);
- }
-
- public void apply (ImageFilter filter)
- {
- if (filter != null)
- {
- Util.getFrame (this).setCursor (Frame.WAIT_CURSOR);
- this.imageCanvas_.applyFilter (filter);
- Util.getFrame (this).setCursor (Frame.DEFAULT_CURSOR);
- }
- }
-
- public void resetImage ()
- {
- this.imageCanvas_.applyFilter (null);
- }
-
- public int openURL (String url)
- {
- if (url == null)
- return -1;
-
- Image image = null;
- try
- {
- System.out.println("Getting image");
- image = getImage (new URL (url));
- System.out.println("Done");
- }
- catch (MalformedURLException e)
- {
- return -1;
- }
-
- if (image != null)
- {
- // Check if the image was actually loaded. Note that we have
- // to wait for the potential image to finish loading before we
- // know if it is a valid image.
- if (this.imageCanvas_.setImage (image) == -1)
- return -1;
- else
- this.filePanel_.enableSaveButton ();
- }
- else
- return -1;
- return 0;
- }
-
- // maintain compatibility
- public void saveFile (String url)
- {
- this.saveFile (url, null);
- }
-
- public void saveFile (String url, String authentication)
- {
- ImageSender imageSender = new ImageSender (this);
- imageSender.open (this.imageCanvas_.getImage (), url);
- int bytesSent = imageSender.send (authentication);
- if (bytesSent == -1)
- DialogManager.popDialog (DialogType.NOT_SUPPORTED,
- "Server does not support uploading or URL not found");
- }
-
- public Choice getFilters ()
- {
- Choice choice = new Choice ();
-
- // Add the default choice first
- choice.addItem ("Filters:");
-
- // Now do the file processing -- to determine which filters need
- // to be loaded.
-
- // Check if the filename has been previously specified and
- // if not then check if the user has specified the name of the
- // config file
- if (this.configFile_ == null)
- this.configFile_ = getParameter ("configFile");
-
- /*
- if (this.configFile_ == null)
- this.configFile_ = "http://www.cs.wustl.edu/~pjain/java/ACE_wrappers/java/ImageProcessing/framework/filter.conf";
- */
-
- if (this.configFile_ == null)
- this.configFile_ = this.getCodeBase().toString() + "../ImageProcessing/framework/filter.conf";
-
- String configInfo = null;
-
- // Only get the file as a URL if it was specified as an http style parameter!
- if ((this.configFile_ != null) && ((this.configFile_.startsWith("http://")) ||
- (this.configFile_.startsWith("file://")) ||
- (this.configFile_.startsWith("ftp://")))) {
-
- URL url;
-
- try
- {
- System.out.println ("Configuration File: " + this.configFile_);
- // Create a new URL
- url = new URL (this.configFile_);
-
- // Get the input stream and pipe it to a DataInputStream
- DataInputStream iStream = new DataInputStream (url.openStream ());
-
- // Create a buffer to hold all the data we get
- StringBuffer tempBuf = new StringBuffer ();
- // Keep reading the data until we are done
- String tempString = iStream.readLine ();
- while (tempString != null)
- {
- tempBuf.append (tempString);
- tempBuf.append (" ");
- tempString = iStream.readLine ();
- }
- configInfo = tempBuf.toString ();
- }
- catch (MalformedURLException e)
- {
- System.err.println (e);
- }
- catch (IOException e)
- {
- System.err.println (e);
- }
- }
-
- if (configInfo != null)
- {
- try
- {
- StringTokenizer tokens = new StringTokenizer (configInfo);
- String fullFilterName = null;
- String filterName = null;
- // Now parse the string, picking up filter names. Use these
- // names to load the actual filters as well add new choices to
- // the filter choices.
- while (tokens.hasMoreTokens ())
- {
- // Get the next token
- fullFilterName = tokens.nextToken ();
- filterName = this.extractFilterName (fullFilterName);
-
- System.out.println ("Loading: " + fullFilterName);
- // Load the filter class
- Class c = Class.forName (fullFilterName);
- // Class c = this.filterRepository_.load (filter);
-
- // Add the filter to the Filter Repository
- this.filterTable_.put (filterName,
- (ImageFilter) c.newInstance ());
-
- // Add filter name to the list of filter choices
- choice.addItem (filterName);
- }
- }
- catch (ClassNotFoundException e)
- {
- System.err.println ("Filter not found: " + e);
- return null;
- }
- catch (IllegalAccessException e)
- {
- System.err.println ("Filter not found: " + e);
- return null;
- }
- catch (InstantiationException e)
- {
- System.err.println ("Filter not found: " + e);
- return null;
- }
- }
- return choice;
- }
-
- // Extract the short filter name from the full filter name. For
- // example, this method returns "EmbossFilter" if it is given the
- // string "imaging/filters/EmbossFilter"
- private String extractFilterName (String s)
- {
- String filterName = null;
- StringTokenizer tokens = new StringTokenizer (s, ".");
- while (tokens.hasMoreTokens ())
- filterName = tokens.nextToken ();
- return filterName;
- }
-
- private Panel centerPanel_ = new Panel ();
- private String configFile_ = null;
- private Choice choice_ = null;
- private ImageCanvas imageCanvas_ = new ImageCanvas ();
- private FilePanel filePanel_;
- private ResetPanel resetPanel_;
- private ZoomPanel zoomPanel_;
- private FilterPanel filterPanel_;
- private HelpPanel helpPanel_;
-
- private StatusDisplay statusDisplay_;
- private Hashtable filterTable_ = new Hashtable ();
- private Tester tester_;
-
-}
diff --git a/java/ImageProcessing/framework/ImageByteCounter.java b/java/ImageProcessing/framework/ImageByteCounter.java
deleted file mode 100644
index c907c9f1c92..00000000000
--- a/java/ImageProcessing/framework/ImageByteCounter.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package imaging.framework;
-
-import java.io.*;
-import java.awt.*;
-import java.applet.*;
-import java.net.*;
-import JACE.OS.*;
-
-public class ImageByteCounter
-{
- public ImageByteCounter (String title, Image image, Applet parent)
- {
- this.image_ = image;
- this.parent_ = parent;
-
- Image im = null;
- try
- {
- im = this.parent_.getImage (new URL (this.parent_.getCodeBase () +
- "../ImageProcessing/framework/" +
- "10.gif"));
- }
- catch (MalformedURLException e)
- {
- ACE.ERROR (e);
- }
-
- indicator_ = new StatusIndicator ("", im);
- }
-
- public int count ()
- {
- int length = 0;
- try
- {
- GIFOutputStream ostream = new GIFOutputStream (indicator_);
- // GIFOutputStream ostream = new GIFOutputStream (null);
- GifEncoder encoder = new GifEncoder (this.image_, ostream);
- encoder.encode ();
-
- length = ostream.count ();
- System.out.println ("send: " + length);
- }
- catch (IOException e)
- {
- ACE.ERROR ("Exception generating gif");
- }
- indicator_.dispose ();
- return length;
- }
-
- Image image_ = null;
- StatusIndicator indicator_ = null;
- boolean done_ = false;
- Applet parent_;
-}
-
-class GIFOutputStream extends OutputStream
-{
- public GIFOutputStream (StatusIndicator indicator)
- {
- super ();
- this.indicator_ = indicator;
- }
-
- public synchronized void write (int b) throws IOException
- {
- bytesWritten_++;
- if (this.indicator_ != null)
- this.indicator_.update (bytesWritten_);
- }
-
- public synchronized void write (byte buf[]) throws IOException
- {
- bytesWritten_ += buf.length;
- if (this.indicator_ != null)
- this.indicator_.update (bytesWritten_);
- }
-
- public synchronized void write (byte buf[], int offset, int length) throws IOException
- {
- bytesWritten_ += length;
- if (this.indicator_ != null)
- this.indicator_.update (bytesWritten_);
- }
-
- public int count ()
- {
- return this.bytesWritten_;
- }
-
- private int bytesWritten_ = 0;
- private StatusIndicator indicator_ = null;
-}
diff --git a/java/ImageProcessing/framework/ImageCanvas.java b/java/ImageProcessing/framework/ImageCanvas.java
deleted file mode 100644
index 182bd54bf9b..00000000000
--- a/java/ImageProcessing/framework/ImageCanvas.java
+++ /dev/null
@@ -1,166 +0,0 @@
-package imaging.framework;
-
-import java.awt.*;
-import java.awt.image.*;
-import gjt.Util;
-import JACE.OS.*;
-
-class ImageCanvas extends Canvas
-{
- public static final double MAX_ZOOM = 4.0;
- public static final double MIN_ZOOM = 0.5;
-
- public int setImage (Image image)
- {
- int flags = 0;
- if (image != null)
- {
- // Load the image
- this.tracker_.addImage(image, 0);
- try { this.tracker_.waitForID(0); } catch(InterruptedException excp) {}
-
- // Check if the image was actually loaded. Note that we have
- // to wait for the potential image to finish loading before we
- // know if it is a valid image.
- flags = this.checkImage (image, this);
- if (ACE.BIT_ENABLED (flags, ImageObserver.ERROR))
- return -1;
-
- // If we reached here, it means image was loaded successfully so cache it
- this.image_ = image;
- this.originalImage_ = this.image_;
-
- this.x_ = (this.size ().width - this.image_.getWidth (this))/2;
- this.y_ = (this.size ().height - this.image_.getHeight (this))/2;
- this.original_x_ = this.x_;
- this.original_y_ = this.y_;
- repaint ();
- }
- return 0;
- }
-
- public Image getImage ()
- {
- return this.image_;
- }
-
- public void paint (Graphics g)
- {
- this.setBackground (Color.white);
- if (this.image_ != null)
- g.drawImage(this.image_,
- this.x_, this.y_,
- (int) (this.image_.getWidth (this) * this.zoom_),
- (int) (this.image_.getHeight (this) * this.zoom_),
- this);
- }
-
- public void applyFilter (ImageFilter filter)
- {
- if (this.image_ != null)
- {
- Image temp;
- if (filter == null)
- {
- temp = this.originalImage_;
- this.x_ = this.original_x_;
- this.y_ = this.original_y_;
- this.zoom_ = 1.0;
- }
- else
- temp = this.ip_.processImage(this.image_, filter, this);
-
- this.tracker_.addImage(temp, 0);
- try { this.tracker_.waitForID(0); } catch(InterruptedException excp) {}
-
- this.image_ = temp;
-
- // Originally I needed to flush the pixel data for the image to be
- // drawn properly. When running the applet in appletviewer, the
- // image used to jump around, but running in a browser seems to be
- // ok.
- //this.image_.flush();
- repaint ();
- }
- }
-
- public void zoomFactor (double zoom)
- {
- this.zoom_ *= zoom;
- if (this.zoom_ > ImageCanvas.MAX_ZOOM)
- this.zoom_ = ImageCanvas.MAX_ZOOM;
- else if (this.zoom_ < ImageCanvas.MIN_ZOOM)
- this.zoom_ = ImageCanvas.MIN_ZOOM;
-
- repaint ();
- }
-
- public boolean mouseDown (Event evt, int x, int y)
- {
- if (inBounds (x, y))
- {
- this.selected_ = true;
- this.last_x_ = x;
- this.last_y_ = y;
- }
- return true;
- }
-
- public boolean mouseUp (Event evt, int x, int y)
- {
- this.selected_ = false;
- return true;
- }
-
- public boolean mouseDrag (Event evt, int x, int y)
- {
- if (this.selected_)
- {
- this.x_ = x - (this.last_x_ - this.x_);
- this.y_ = y - (this.last_y_ - this.y_);
- this.last_x_ = x;
- this.last_y_ = y;
- repaint ();
- }
- return true;
- }
-
- public boolean mouseMove (Event evt, int x, int y)
- {
- if (this.image_ != null && inBounds (x, y))
- Util.getFrame (this).setCursor (Frame.HAND_CURSOR);
- else
- Util.getFrame (this).setCursor (Frame.DEFAULT_CURSOR);
- return true;
- }
-
- public boolean mouseExit (Event evt, int x, int y)
- {
- Util.getFrame (this).setCursor (Frame.DEFAULT_CURSOR);
- return true;
- }
-
- // Check if mouse is within the bounds of the image
- private boolean inBounds (int x, int y)
- {
- if (this.image_ == null)
- return false;
- else
- return (x >= this.x_) &&
- (y >= this.y_) &&
- (x <= (this.x_ + this.zoom_ * this.image_.getWidth (this))) &&
- (y <= (this.y_ + this.zoom_ * this.image_.getHeight (this)));
- }
-
- private MediaTracker tracker_ = new MediaTracker(this);
- private Image image_, originalImage_;
- private int x_ = 0, y_ = 0;
- private int original_x_ = 0, original_y_ = 0;
- private int width_ = 0, height_ = 0;
- private ImageProcessor ip_ = new ImageProcessor ();
- private boolean selected_ = false;
- private int last_x_ = 0, last_y_ = 0;
- private double zoom_ = 1.0;
-
-}
-
diff --git a/java/ImageProcessing/framework/ImageEncoder.java b/java/ImageProcessing/framework/ImageEncoder.java
deleted file mode 100644
index a0aac0d559f..00000000000
--- a/java/ImageProcessing/framework/ImageEncoder.java
+++ /dev/null
@@ -1,271 +0,0 @@
-// ImageEncoder - abstract class for writing out an image
-//
-// Copyright (C) 1996 by Jef Poskanzer <jef@acme.com>. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1. Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// 2. Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-// SUCH DAMAGE.
-//
-// Visit the ACME Labs Java page for up-to-date versions of this and other
-// fine Java utilities: http://www.acme.com/java/
-
-package imaging.framework;
-
-import java.util.*;
-import java.io.*;
-import java.awt.Image;
-import java.awt.image.*;
-
-/// Abstract class for writing out an image.
-// <P>
-// A framework for classes that encode and write out an image in
-// a particular file format.
-// <P>
-// This provides a simplified rendition of the ImageConsumer interface.
-// It always delivers the pixels as ints in the RGBdefault color model.
-// It always provides them in top-down left-right order.
-// If you want more flexibility you can always implement ImageConsumer
-// directly.
-// <P>
-// <A HREF="/resources/classes/Acme/JPM/Encoders/ImageEncoder.java">Fetch the software.</A><BR>
-// <A HREF="/resources/classes/Acme.tar.Z">Fetch the entire Acme package.</A>
-// <P>
-// @see GifEncoder
-// @see PpmEncoder
-// @see Acme.JPM.Decoders.ImageDecoder
-
-public abstract class ImageEncoder implements ImageConsumer
- {
-
- protected OutputStream out;
-
- private ImageProducer producer;
- private int width = -1;
- private int height = -1;
- private int hintflags = 0;
- private boolean started = false;
- private boolean encoding;
- private IOException iox;
- private static final ColorModel rgbModel = ColorModel.getRGBdefault();
- private Hashtable props = null;
-
- /// Constructor.
- // @param img The image to encode.
- // @param out The stream to write the bytes to.
- public ImageEncoder( Image img, OutputStream out ) throws IOException
- {
- this( img.getSource(), out );
- }
-
- /// Constructor.
- // @param producer The ImageProducer to encode.
- // @param out The stream to write the bytes to.
- public ImageEncoder( ImageProducer producer, OutputStream out ) throws IOException
- {
- this.producer = producer;
- this.out = out;
- }
-
-
- // Methods that subclasses implement.
-
- /// Subclasses implement this to initialize an encoding.
- abstract void encodeStart( int w, int h ) throws IOException;
-
- /// Subclasses implement this to actually write out some bits. They
- // are guaranteed to be delivered in top-down-left-right order.
- // One int per pixel, index is row * scansize + off + col,
- // RGBdefault (AARRGGBB) color model.
- abstract void encodePixels(
- int x, int y, int w, int h, int[] rgbPixels, int off, int scansize )
- throws IOException;
-
- /// Subclasses implement this to finish an encoding.
- abstract void encodeDone() throws IOException;
-
-
- // Our own methods.
-
- /// Call this after initialization to get things going.
- public synchronized void encode() throws IOException
- {
- encoding = true;
- iox = null;
- producer.startProduction( this );
- while ( encoding )
- try
- {
- wait();
- }
- catch ( InterruptedException e ) {}
- if ( iox != null )
- throw iox;
- }
-
- private boolean accumulate = false;
- private int[] accumulator;
-
- private void encodePixelsWrapper(
- int x, int y, int w, int h, int[] rgbPixels, int off, int scansize )
- throws IOException
- {
- if ( ! started )
- {
- started = true;
- encodeStart( width, height );
- if ( ( hintflags & TOPDOWNLEFTRIGHT ) == 0 )
- {
- accumulate = true;
- accumulator = new int[width * height];
- }
- }
- if ( accumulate )
- for ( int row = 0; row < h; ++row )
- System.arraycopy(
- rgbPixels, row * scansize + off,
- accumulator, ( y + row ) * width + x,
- w );
- else
- encodePixels( x, y, w, h, rgbPixels, off, scansize );
- }
-
- private void encodeFinish() throws IOException
- {
- if ( accumulate )
- {
- encodePixels( 0, 0, width, height, accumulator, 0, width );
- accumulator = null;
- accumulate = false;
- }
- }
-
- private synchronized void stop()
- {
- encoding = false;
- notifyAll();
- }
-
-
- // Methods from ImageConsumer.
-
- public void setDimensions( int width, int height )
- {
- this.width = width;
- this.height = height;
- }
-
- public void setProperties( Hashtable props )
- {
- this.props = props;
- }
-
- public void setColorModel( ColorModel model )
- {
- // Ignore.
- }
-
- public void setHints( int hintflags )
- {
- this.hintflags = hintflags;
- }
-
- public void setPixels(
- int x, int y, int w, int h, ColorModel model, byte[] pixels,
- int off, int scansize )
- {
- int[] rgbPixels = new int[w];
- for ( int row = 0; row < h; ++row )
- {
- int rowOff = off + row * scansize;
- for ( int col = 0; col < w; ++col )
- rgbPixels[col] = model.getRGB( pixels[rowOff + col] & 0xff );
- try
- {
- encodePixelsWrapper( x, y + row, w, 1, rgbPixels, 0, w );
- }
- catch ( IOException e )
- {
- iox = e;
- stop();
- return;
- }
- }
- }
-
- public void setPixels(
- int x, int y, int w, int h, ColorModel model, int[] pixels,
- int off, int scansize )
- {
- if ( model == rgbModel )
- {
- try
- {
- encodePixelsWrapper( x, y, w, h, pixels, off, scansize );
- }
- catch ( IOException e )
- {
- iox = e;
- stop();
- return;
- }
- }
- else
- {
- int[] rgbPixels = new int[w];
- for ( int row = 0; row < h; ++row )
- {
- int rowOff = off + row * scansize;
- for ( int col = 0; col < w; ++col )
- rgbPixels[col] = model.getRGB( pixels[rowOff + col] );
- try
- {
- encodePixelsWrapper( x, y + row, w, 1, rgbPixels, 0, w );
- }
- catch ( IOException e )
- {
- iox = e;
- stop();
- return;
- }
- }
- }
- }
-
- public void imageComplete( int status )
- {
- producer.removeConsumer( this );
- if ( status == ImageConsumer.IMAGEABORTED )
- iox = new IOException( "image aborted" );
- else
- {
- try
- {
- encodeFinish();
- encodeDone();
- }
- catch ( IOException e )
- {
- iox = e;
- }
- }
- stop();
- }
-
- }
diff --git a/java/ImageProcessing/framework/ImageProcessor.java b/java/ImageProcessing/framework/ImageProcessor.java
deleted file mode 100644
index 422298d508f..00000000000
--- a/java/ImageProcessing/framework/ImageProcessor.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package imaging.framework;
-
-import java.awt.*;
-import java.awt.image.*;
-import java.util.Vector;
-
-public class ImageProcessor
-{
- private Vector pipeline_ = new Vector();
-
-
- public ImageProcessor()
- {
- }
-
- public void addFilter(String filter_name, ImageFilter filter)
- {
- pipeline_.addElement(new FilterNode(filter_name, filter));
- }
-
- public boolean removeFilter(String name)
- {
- FilterNode filter_node;
-
- for (int i = 0; i < pipeline_.size(); i++)
- {
- filter_node = (FilterNode)pipeline_.elementAt(i);
- if (name.equals(filter_node.getName()))
- {
- pipeline_.removeElementAt(i);
- pipeline_.trimToSize();
- return true;
- }
- }
-
- return false;
- }
-
- public Image processImage(Image image, ImageFilter filter, Component component)
- {
- Image old_image = image, new_image = old_image;
- MediaTracker tracker = new MediaTracker(component);
-
- try
- {
- new_image = component.createImage(new FilteredImageSource(old_image.getSource(), filter));
- tracker.addImage(new_image, 0);
- tracker.waitForID(0);
- }
- catch(InterruptedException excp)
- {
- System.out.println("ImageProcessor::processImage Image failed to load.");
- System.out.println(excp);
- return null;
- }
-
- return new_image;
- }
-
- public Image processImage(Image image, Component component)
- {
- Image old_image = image, new_image = null;
- ImageFilter image_filter;
- FilterNode filter_node;
- MediaTracker tracker = new MediaTracker(component);
-
- try
- {
- for (int i = 0; i < pipeline_.size(); i++)
- {
- filter_node = (FilterNode) pipeline_.elementAt(i);
- image_filter = filter_node.getFilter();
- new_image = component.createImage(new FilteredImageSource(old_image.getSource(), image_filter));
- old_image = new_image;
- tracker.addImage(new_image, 0);
- tracker.waitForID(0);
- }
- }
- catch(InterruptedException excp)
- {
- System.out.println("ImageProcessor::processImage Image failed to load.");
- System.out.println(excp);
- return null;
- }
-
- return new_image;
- }
-}
-
-
-class FilterNode
-{
- private String name_;
- private ImageFilter filter_;
-
- FilterNode(String name, ImageFilter filter)
- {
- name_ = name;
- filter_ = filter;
- }
-
- String getName()
- {
- return name_;
- }
-
- ImageFilter getFilter()
- {
- return filter_;
- }
-}
diff --git a/java/ImageProcessing/framework/ImageSender.java b/java/ImageProcessing/framework/ImageSender.java
deleted file mode 100644
index c1659267537..00000000000
--- a/java/ImageProcessing/framework/ImageSender.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package imaging.framework;
-
-import java.awt.*;
-import java.net.*;
-import java.io.*;
-import java.applet.*;
-import JACE.OS.*;
-import JACE.Connection.*;
-
-public class ImageSender
-{
- public ImageSender (Applet parent)
- {
- this.parent_ = parent;
- }
-
- // ******************
- // Currently bombs if it's not in an http or / format
- //
- public void open (Image image, String url)
- {
- this.image_ = image;
-
- this.hostname_ = url;
- if (this.hostname_.startsWith ("http://"))
- this.hostname_ = this.hostname_.substring (7);
-
- int index = -1;
- if ((index = this.hostname_.indexOf (":")) != -1)
- {
- String temp = this.hostname_.substring (index + 1);
- int i = -1;
- if ((i = temp.indexOf ("/")) != -1)
- {
- this.port_ = (new Integer (temp.substring (0, i))).intValue ();
- this.filename_ = temp.substring (i);
- }
- this.hostname_ = this.hostname_.substring (0, index);
- }
- else
- {
- int i = -1;
- if ((i = this.hostname_.indexOf ("/")) != -1)
- {
- this.filename_ = hostname_.substring (i);
- }
- this.hostname_ = this.hostname_.substring (0, i);
- this.port_ = 80;
- }
- }
-
- // Maintain compatibility
- public int send ()
- {
- return send(null);
- }
-
- /*******************************************
- * The authenication string allows the PUT command to work if the server
- * accepts the basic HTTP 1.1 encryption scheme
- *******************************************/
- public int send (String authentication)
- {
- ImageByteCounter byteCounter = new ImageByteCounter ("", this.image_, this.parent_);
- // StatusIndicator indicator = new StatusIndicator ("");
- // ImageByteCounter byteCounter = new ImageByteCounter ("", this.image_, indicator);
- int length = byteCounter.count ();
- // indicator.dispose ();
- // First determine how many bytes we will be sending
- /*
- try
- {
- GIFOutputStream ostream = new GIFOutputStream ();
- GifEncoder encoder = new GifEncoder (this.image_, ostream);
- encoder.encode ();
-
- length = ostream.count ();
- System.out.println ("send: " + length);
- }
- catch (IOException e)
- {
- ACE.ERROR ("Exception generating gif");
- }
- */
-
- GIFHandler gifHandler;
- if (authentication == null)
- gifHandler = new GIFHandler (this.filename_, this.image_, length);
- else
- gifHandler = new GIFHandler (this.filename_, this.image_, length, authentication);
-
- try
- {
- // Connect to the server and send the image
- this.connector_.open (this.hostname_, this.port_);
- this.connector_.connect (gifHandler);
- }
- catch (UnknownHostException e)
- {
- ACE.ERROR (e);
- }
- catch (InstantiationException e)
- {
- ACE.ERROR (e);
- }
- catch (IllegalAccessException e)
- {
- ACE.ERROR (e);
- }
- catch (IOException e)
- {
- ACE.ERROR (e);
- }
-
- if (gifHandler.returnCode () != -1)
- return gifHandler.bytesWritten ();
- else
- return -1;
- }
-
- private Image image_ = null;
- String filename_;
- String hostname_;
- int port_;
- Connector connector_ = new Connector ();
- Applet parent_;
-}
-
diff --git a/java/ImageProcessing/framework/IntHashtable.java b/java/ImageProcessing/framework/IntHashtable.java
deleted file mode 100644
index 95e6cbc25e0..00000000000
--- a/java/ImageProcessing/framework/IntHashtable.java
+++ /dev/null
@@ -1,396 +0,0 @@
-// IntHashtable - a Hashtable that uses ints as the keys
-//
-// This is 90% based on JavaSoft's java.util.Hashtable.
-//
-// Visit the ACME Labs Java page for up-to-date versions of this and other
-// fine Java utilities: http://www.acme.com/java/
-
-package imaging.framework;
-
-import java.util.*;
-
-/// A Hashtable that uses ints as the keys.
-// <P>
-// Use just like java.util.Hashtable, except that the keys must be ints.
-// This is much faster than creating a new Integer for each access.
-// <P>
-// <A HREF="/resources/classes/Acme/IntHashtable.java">Fetch the software.</A><BR>
-// <A HREF="/resources/classes/Acme.tar.Z">Fetch the entire Acme package.</A>
-// <P>
-// @see java.util.Hashtable
-
-public class IntHashtable extends Dictionary implements Cloneable
- {
- /// The hash table data.
- private IntHashtableEntry table[];
-
- /// The total number of entries in the hash table.
- private int count;
-
- /// Rehashes the table when count exceeds this threshold.
- private int threshold;
-
- /// The load factor for the hashtable.
- private float loadFactor;
-
- /// Constructs a new, empty hashtable with the specified initial
- // capacity and the specified load factor.
- // @param initialCapacity the initial number of buckets
- // @param loadFactor a number between 0.0 and 1.0, it defines
- // the threshold for rehashing the hashtable into
- // a bigger one.
- // @exception IllegalArgumentException If the initial capacity
- // is less than or equal to zero.
- // @exception IllegalArgumentException If the load factor is
- // less than or equal to zero.
- public IntHashtable( int initialCapacity, float loadFactor )
- {
- if ( initialCapacity <= 0 || loadFactor <= 0.0 )
- throw new IllegalArgumentException();
- this.loadFactor = loadFactor;
- table = new IntHashtableEntry[initialCapacity];
- threshold = (int) ( initialCapacity * loadFactor );
- }
-
- /// Constructs a new, empty hashtable with the specified initial
- // capacity.
- // @param initialCapacity the initial number of buckets
- public IntHashtable( int initialCapacity )
- {
- this( initialCapacity, 0.75f );
- }
-
- /// Constructs a new, empty hashtable. A default capacity and load factor
- // is used. Note that the hashtable will automatically grow when it gets
- // full.
- public IntHashtable()
- {
- this( 101, 0.75f );
- }
-
- /// Returns the number of elements contained in the hashtable.
- public int size()
- {
- return count;
- }
-
- /// Returns true if the hashtable contains no elements.
- public boolean isEmpty()
- {
- return count == 0;
- }
-
- /// Returns an enumeration of the hashtable's keys.
- // @see IntHashtable#elements
- public synchronized Enumeration keys()
- {
- return new IntHashtableEnumerator( table, true );
- }
-
- /// Returns an enumeration of the elements. Use the Enumeration methods
- // on the returned object to fetch the elements sequentially.
- // @see IntHashtable#keys
- public synchronized Enumeration elements()
- {
- return new IntHashtableEnumerator( table, false );
- }
-
- /// Returns true if the specified object is an element of the hashtable.
- // This operation is more expensive than the containsKey() method.
- // @param value the value that we are looking for
- // @exception NullPointerException If the value being searched
- // for is equal to null.
- // @see IntHashtable#containsKey
- public synchronized boolean contains( Object value )
- {
- if ( value == null )
- throw new NullPointerException();
- IntHashtableEntry tab[] = table;
- for ( int i = tab.length ; i-- > 0 ; )
- {
- for ( IntHashtableEntry e = tab[i] ; e != null ; e = e.next )
- {
- if ( e.value.equals( value ) )
- return true;
- }
- }
- return false;
- }
-
- /// Returns true if the collection contains an element for the key.
- // @param key the key that we are looking for
- // @see IntHashtable#contains
- public synchronized boolean containsKey( int key )
- {
- IntHashtableEntry tab[] = table;
- int hash = key;
- int index = ( hash & 0x7FFFFFFF ) % tab.length;
- for ( IntHashtableEntry e = tab[index] ; e != null ; e = e.next )
- {
- if ( e.hash == hash && e.key == key )
- return true;
- }
- return false;
- }
-
- /// Gets the object associated with the specified key in the
- // hashtable.
- // @param key the specified key
- // @returns the element for the key or null if the key
- // is not defined in the hash table.
- // @see IntHashtable#put
- public synchronized Object get( int key )
- {
- IntHashtableEntry tab[] = table;
- int hash = key;
- int index = ( hash & 0x7FFFFFFF ) % tab.length;
- for ( IntHashtableEntry e = tab[index] ; e != null ; e = e.next )
- {
- if ( e.hash == hash && e.key == key )
- return e.value;
- }
- return null;
- }
-
- /// A get method that takes an Object, for compatibility with
- // java.util.Dictionary. The Object must be an Integer.
- public Object get( Object okey )
- {
- if ( ! ( okey instanceof Integer ) )
- throw new InternalError( "key is not an Integer" );
- Integer ikey = (Integer) okey;
- int key = ikey.intValue();
- return get( key );
- }
-
- /// Rehashes the content of the table into a bigger table.
- // This method is called automatically when the hashtable's
- // size exceeds the threshold.
- protected void rehash()
- {
- int oldCapacity = table.length;
- IntHashtableEntry oldTable[] = table;
-
- int newCapacity = oldCapacity * 2 + 1;
- IntHashtableEntry newTable[] = new IntHashtableEntry[newCapacity];
-
- threshold = (int) ( newCapacity * loadFactor );
- table = newTable;
-
- for ( int i = oldCapacity ; i-- > 0 ; )
- {
- for ( IntHashtableEntry old = oldTable[i] ; old != null ; )
- {
- IntHashtableEntry e = old;
- old = old.next;
-
- int index = ( e.hash & 0x7FFFFFFF ) % newCapacity;
- e.next = newTable[index];
- newTable[index] = e;
- }
- }
- }
-
- /// Puts the specified element into the hashtable, using the specified
- // key. The element may be retrieved by doing a get() with the same key.
- // The key and the element cannot be null.
- // @param key the specified key in the hashtable
- // @param value the specified element
- // @exception NullPointerException If the value of the element
- // is equal to null.
- // @see IntHashtable#get
- // @return the old value of the key, or null if it did not have one.
- public synchronized Object put( int key, Object value )
- {
- // Make sure the value is not null.
- if ( value == null )
- throw new NullPointerException();
-
- // Makes sure the key is not already in the hashtable.
- IntHashtableEntry tab[] = table;
- int hash = key;
- int index = ( hash & 0x7FFFFFFF ) % tab.length;
- for ( IntHashtableEntry e = tab[index] ; e != null ; e = e.next )
- {
- if ( e.hash == hash && e.key == key )
- {
- Object old = e.value;
- e.value = value;
- return old;
- }
- }
-
- if ( count >= threshold )
- {
- // Rehash the table if the threshold is exceeded.
- rehash();
- return put( key, value );
- }
-
- // Creates the new entry.
- IntHashtableEntry e = new IntHashtableEntry();
- e.hash = hash;
- e.key = key;
- e.value = value;
- e.next = tab[index];
- tab[index] = e;
- ++count;
- return null;
- }
-
- /// A put method that takes an Object, for compatibility with
- // java.util.Dictionary. The Object must be an Integer.
- public Object put( Object okey, Object value )
- {
- if ( ! ( okey instanceof Integer ) )
- throw new InternalError( "key is not an Integer" );
- Integer ikey = (Integer) okey;
- int key = ikey.intValue();
- return put( key, value );
- }
-
- /// Removes the element corresponding to the key. Does nothing if the
- // key is not present.
- // @param key the key that needs to be removed
- // @return the value of key, or null if the key was not found.
- public synchronized Object remove( int key )
- {
- IntHashtableEntry tab[] = table;
- int hash = key;
- int index = ( hash & 0x7FFFFFFF ) % tab.length;
- for ( IntHashtableEntry e = tab[index], prev = null ; e != null ; prev = e, e = e.next )
- {
- if ( e.hash == hash && e.key == key )
- {
- if ( prev != null )
- prev.next = e.next;
- else
- tab[index] = e.next;
- --count;
- return e.value;
- }
- }
- return null;
- }
-
- /// A remove method that takes an Object, for compatibility with
- // java.util.Dictionary. The Object must be an Integer.
- public Object remove( Object okey )
- {
- if ( ! ( okey instanceof Integer ) )
- throw new InternalError( "key is not an Integer" );
- Integer ikey = (Integer) okey;
- int key = ikey.intValue();
- return remove( key );
- }
-
- /// Clears the hash table so that it has no more elements in it.
- public synchronized void clear()
- {
- IntHashtableEntry tab[] = table;
- for ( int index = tab.length; --index >= 0; )
- tab[index] = null;
- count = 0;
- }
-
- /// Creates a clone of the hashtable. A shallow copy is made,
- // the keys and elements themselves are NOT cloned. This is a
- // relatively expensive operation.
- public synchronized Object clone()
- {
- try
- {
- IntHashtable t = (IntHashtable) super.clone();
- t.table = new IntHashtableEntry[table.length];
- for ( int i = table.length ; i-- > 0 ; )
- t.table[i] = ( table[i] != null ) ?
- (IntHashtableEntry) table[i].clone() : null;
- return t;
- }
- catch ( CloneNotSupportedException e)
- {
- // This shouldn't happen, since we are Cloneable.
- throw new InternalError();
- }
- }
-
- /// Converts to a rather lengthy String.
- public synchronized String toString()
- {
- int max = size() - 1;
- StringBuffer buf = new StringBuffer();
- Enumeration k = keys();
- Enumeration e = elements();
- buf.append( "{" );
-
- for ( int i = 0; i <= max; ++i )
- {
- String s1 = k.nextElement().toString();
- String s2 = e.nextElement().toString();
- buf.append( s1 + "=" + s2 );
- if ( i < max )
- buf.append( ", " );
- }
- buf.append( "}" );
- return buf.toString();
- }
- }
-
-
-class IntHashtableEntry
- {
- int hash;
- int key;
- Object value;
- IntHashtableEntry next;
-
- protected Object clone()
- {
- IntHashtableEntry entry = new IntHashtableEntry();
- entry.hash = hash;
- entry.key = key;
- entry.value = value;
- entry.next = ( next != null ) ? (IntHashtableEntry) next.clone() : null;
- return entry;
- }
- }
-
-
-class IntHashtableEnumerator implements Enumeration
- {
- boolean keys;
- int index;
- IntHashtableEntry table[];
- IntHashtableEntry entry;
-
- IntHashtableEnumerator( IntHashtableEntry table[], boolean keys )
- {
- this.table = table;
- this.keys = keys;
- this.index = table.length;
- }
-
- public boolean hasMoreElements()
- {
- if ( entry != null )
- return true;
- while ( index-- > 0 )
- if ( ( entry = table[index] ) != null )
- return true;
- return false;
- }
-
- public Object nextElement()
- {
- if ( entry == null )
- while ( ( index-- > 0 ) && ( ( entry = table[index] ) == null ) )
- ;
- if ( entry != null )
- {
- IntHashtableEntry e = entry;
- entry = e.next;
- return keys ? new Integer( e.key ) : e.value;
- }
- throw new NoSuchElementException( "IntHashtableEnumerator" );
- }
- }
diff --git a/java/ImageProcessing/framework/ListFiles.java b/java/ImageProcessing/framework/ListFiles.java
deleted file mode 100644
index 7abe067341c..00000000000
--- a/java/ImageProcessing/framework/ListFiles.java
+++ /dev/null
@@ -1,167 +0,0 @@
-package imaging.framework;
-
-import java.net.*;
-import java.io.*;
-import java.applet.*;
-
-public class ListFiles
-{
- public ListFiles ()
- {
- }
-
- public ListFiles (FileBrowser browser, Applet parent)
- {
- this.browser_ = browser;
- try
- {
- this.fileIcon_ = new Icon (parent.getCodeBase () +
- "../ImageProcessing/framework/" +
- "doc01.gif",
- parent);
- this.dirIcon_ = new Icon (parent.getCodeBase () +
- "../ImageProcessing/framework/" +
- "file03.gif",
- parent);
- }
- catch (MalformedURLException e)
- {
- }
- }
-
- public String stripProtocolHeader (String url)
- {
- if (url.startsWith ("http://"))
- {
- return url.substring (7);
- }
- else
- return url;
- }
-
- public int listFiles (String url, FileNode fileNode)
- {
- String s = this.stripProtocolHeader (url);
- String hostname = s;
- String directory = null;
- int index = -1;
-
- if ((index = s.indexOf ("/")) != -1)
- {
- hostname = s.substring (0, index);
- directory = s.substring (index);
- }
- return this.listFiles (hostname, directory, fileNode);
- }
-
- public int listFiles (String url, String directory, FileNode fileNode)
- {
- boolean validDirectory = false;
- int count = 0;
- String hostname = this.stripProtocolHeader (url);
- this.url_ = url;
- this.directory_ = directory;
- try
- {
- Socket sock = new Socket (hostname, 80);
- PrintStream out = new PrintStream (sock.getOutputStream ());
- DataInputStream in = new DataInputStream (sock.getInputStream ());
- System.out.println ("Connected to: " + hostname);
-
- String request = null;
- if (directory.endsWith ("/"))
- request = "GET " + directory + "\n\n";
- else
- request = "GET " + directory + "/\n\n";
-
- System.out.println ("Sending request: " + request);
-
- // Send the request
- out.println (request);
-
- String reply = null;
- // Receive the reply
-
- // Read all the data in a loop. Search for "Parent Directory"
- // to verify that this indeed is a directory. If we encounter
- // the string "<HTML>" then assume that this is an HTML page
- // and therefore the directory contained "index.html"
- while ((reply = in.readLine ()) != null)
- {
- if (validDirectory)
- this.parse (reply, fileNode);
- else
- {
- // Take a guess at the type of data we get back
- if (reply.indexOf ("Parent Directory") != -1)
- validDirectory = true;
- else if ((reply.toUpperCase ().indexOf ("<HTML>") != -1) ||
- (reply.toUpperCase ().indexOf ("<P>") != -1) ||
- (reply.toUpperCase ().indexOf ("<TABLE") != -1))
- return 0;
- }
- }
- }
- catch (MalformedURLException e)
- {
- System.err.println (e);
- }
- catch (IOException e)
- {
- System.err.println (e);
- }
- if (validDirectory == false)
- return -1;
- return 1;
- }
-
- private int parse (String s, FileNode fileNode)
- {
- int i= -1;
- int j = -1;
- int startIndex = -1;
- int endIndex = -1;
- boolean isFile = true;
- String name = null;
-
- if ((i = s.indexOf ("HREF=")) != -1)
- startIndex = i + 6;
- else
- return -1;
-
- if ((j = s.indexOf (">", i)) != -1)
- endIndex = j - 1;
- else
- return -1;
-
- // Check if this is a directory
- if (s.charAt (endIndex - 1) == '/')
- isFile = false;
-
- if (endIndex >= startIndex)
- {
- name = s.substring (startIndex, endIndex);
- if (browser_ != null)
- {
- // System.out.println (name);
- if (isFile)
- fileNode.addEntry (new FileNode (name, this.fileIcon_, null,
- fileNode.app ()));
- else
- {
- FileNode f = new FileNode (name, this.dirIcon_, this,
- fileNode.app ());
- fileNode.addEntry (f);
- f.setExpandable (true);
- }
- }
- }
- return 0;
- }
-
- private FileBrowser browser_ = null;
- private String url_ = null;
- private String directory_ = null;
- private Icon fileIcon_;
- private Icon dirIcon_;
-}
diff --git a/java/ImageProcessing/framework/LoadURLFrame.java b/java/ImageProcessing/framework/LoadURLFrame.java
deleted file mode 100755
index 610d9eaafa8..00000000000
--- a/java/ImageProcessing/framework/LoadURLFrame.java
+++ /dev/null
@@ -1,142 +0,0 @@
-package imaging.framework;
-
-import java.awt.*;
-import java.awt.image.*;
-import java.net.*;
-import java.io.*;
-
-/******************************************************
- * Future idea:
- *
- * Create a smart button class with an invoke method that's
- * to be called when the button is pressed.
- *
- * Subclasses override the invoke method to define
- * specific behavior.
- *
- * That would allow things like load and save frames
- * to be almost exactly the same -- one could inherit
- * from the other and override addButtons, etc
- *****************************************************/
-
-class LoadURLFrame extends Frame
-{
- public LoadURLFrame (String title, ImageApp parent)
- {
- super (title);
-
- this.parent_ = parent;
- this.resize (500,130);
-
- this.addButtons();
- }
-
- private void addButtons()
- {
- this.setLayout (new BorderLayout ());
-
- Panel textPanel = new Panel ();
- textPanel.setLayout (new BorderLayout ());
- textPanel.add ("North", new Label ("Image Location:"));
- textPanel.add ("Center", this.openURLText_);
-
- Panel buttonPanel = new Panel ();
- buttonPanel.setLayout (new FlowLayout (FlowLayout.CENTER));
-
- buttonPanel.add (this.openButton_);
-
- buttonPanel.add (this.clearButton_);
- buttonPanel.add (this.cancelButton_);
-
- this.add ("North", textPanel);
- this.add ("South", buttonPanel);
- }
-
- private int browseFiles (String url)
- {
- fileBrowser_ = new FileBrowser ("Browse", this.parent_);
- ListFiles list = new ListFiles (this.fileBrowser_, this.parent_);
- return this.fileBrowser_.initialize (url, list);
- }
-
- // Handle all action events
- public boolean action (Event e, Object arg)
- {
- if (e.target instanceof Button)
- {
- if (e.target == this.openButton_)
- {
- this.getURL ();
- }
- else if (e.target == this.clearButton_)
- {
- this.openURLText_.setText (new String ());
- this.openURLText_.requestFocus ();
- }
- else if (e.target == this.cancelButton_)
- this.dispose ();
- validate ();
- return true;
- }
- else
- return false;
- }
-
- public boolean keyDown (Event e, int key)
- {
- if (key == 10)
- {
- this.getURL ();
- return true;
- }
- else
- return false;
- }
-
- private void getURL ()
- {
- this.hide ();
- String url = this.openURLText_.getText ();
- this.dispose ();
-
- // The following is only for debugging
- if (url.compareTo ("ru") == 0)
- url = "http://www.cs/~pjain/gifs/";
- else if (url.compareTo ("pj") == 0)
- url = "http://www.cs/~pjain/myphoto.gif";
-
- if (!url.endsWith ("/") &&
- (this.parent_.openURL (url) != -1)) // Try to open it as an image
- return;
- else
- {
- ListFiles list = new ListFiles ();
- switch (this.browseFiles (url))
- {
- case 1:
- this.fileBrowser_.show ();
- break;
- case 0:
- DialogManager.popDialog (DialogType.MALFORMED_URL,
- "Error: Directory contains index.html");
- break;
- default:
- DialogManager.popDialog (DialogType.MALFORMED_URL,
- "Error: Not a valid image or URL not found");
- break;
- }
- }
- }
-
- // Create the Open URL Frame and also the buttons which appear in
- // it
- private Button openButton_ = new Button ("Open");
- private Button clearButton_ = new Button ("Clear");
- private Button cancelButton_ = new Button ("Cancel");
-
- private TextField openURLText_ = new TextField (40);
-
- private FileBrowser fileBrowser_ = null;
- private ImageApp parent_;
-
-}
diff --git a/java/ImageProcessing/framework/Makefile b/java/ImageProcessing/framework/Makefile
deleted file mode 100644
index 1187b8a88d7..00000000000
--- a/java/ImageProcessing/framework/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-# Makefile
-
-.SUFFIXES: .java .class
-
-JACE_WRAPPER = ../..
-CLASSDIR = $(JACE_WRAPPER)/classes
-DOCDIR = $(JACE_WRAPPER)/doc
-
-CLASSPATH := $(CLASSDIR):$(CLASSPATH)
-
-all:
- javac -d ${JACE_WRAPPER}/classes $(files)
-
-clean:
- rm -rf *~
-
-realclean: clean
- rm -rf $(JACE_WRAPPER)/classes/imaging/framework
-
-files = ImageProcessor.java \
- DialogType.java \
- LoadURLFrame.java \
- SaveURLFrame.java \
- DialogManager.java \
- ImageCanvas.java \
- ImageApp.java \
- BaseButton.java \
- FilePanel.java \
- StatusDisplay.java \
- Icon.java \
- Hierarchy.java \
- HierarchyAdapter.java \
- FileBrowser.java \
- ListFiles.java \
- IntHashtable.java \
- ImageEncoder.java \
- GifEncoder.java \
- ImageByteCounter.java \
- StatusIndicator.java \
- GIFHandler.java \
- ImageSender.java \
- ServerTest.java \
- ServerHandler.java \
- Tester.java \
- TestHandler.java
diff --git a/java/ImageProcessing/framework/MedJava.html b/java/ImageProcessing/framework/MedJava.html
deleted file mode 100644
index a073413bfbb..00000000000
--- a/java/ImageProcessing/framework/MedJava.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<HTML>
-
-<BODY text = "#000000"
-link="#000fff"
-vlink="#ff0f0f"
-bgcolor="#888888">
-
-<HR>
-<APPLET CODEBASE="/classes/" CODE="imaging.framework.ImageApp.class" width=700 height=700>
-<param name=filename value="myphoto.gif">
-
-</APPLET>
-<HR>
-
-</HTML>
diff --git a/java/ImageProcessing/framework/Options.java b/java/ImageProcessing/framework/Options.java
deleted file mode 100644
index edbe90ba904..00000000000
--- a/java/ImageProcessing/framework/Options.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package imaging.framework;
-
-import java.awt.*;
-
-class Options
-{
- // Set GridBagConstraints
- public static void constrain (Container container, Component component,
- int gridx, int gridy,
- int gridwidth, int gridheight,
- int fill, int anchor)
- {
- GridBagConstraints c = new GridBagConstraints ();
- GridBagLayout gbl = (GridBagLayout) container.getLayout ();
-
- c.gridx = gridx;
- c.gridy = gridy;
- c.gridwidth = gridwidth;
- c.gridheight = gridheight;
- c.fill = fill;
- c.anchor = anchor;
- gbl.setConstraints (component, c);
- container.add (component);
- }
-}
diff --git a/java/ImageProcessing/framework/SaveURLFrame.java b/java/ImageProcessing/framework/SaveURLFrame.java
deleted file mode 100755
index c3b6adf3490..00000000000
--- a/java/ImageProcessing/framework/SaveURLFrame.java
+++ /dev/null
@@ -1,133 +0,0 @@
-package imaging.framework;
-
-import java.awt.*;
-import java.awt.image.*;
-import java.net.*;
-import java.io.*;
-
-/******************************************************
- * Future idea:
- *
- * Create a smart button class with an invoke method that's
- * to be called when the button is pressed.
- *
- * Subclasses override the invoke method to define
- * specific behavior.
- *
- * That would allow things like load and save frames
- * to be almost exactly the same -- one could inherit
- * from the other and override addButtons, etc
- *****************************************************/
-
-
-class SaveURLFrame extends Frame
-{
- public SaveURLFrame (String title, ImageApp parent)
- {
- super (title);
-
- this.parent_ = parent;
- this.resize (500,200);
-
- this.addButtons();
- }
-
- private void addButtons()
- {
- this.setLayout (new BorderLayout ());
-
- Panel textPanels = new Panel();
- textPanels.setLayout(new BorderLayout());
-
- Panel URLPanel = new Panel ();
- URLPanel.setLayout (new BorderLayout ());
- URLPanel.add ("North", new Label ("Image Location:"));
- URLPanel.add ("Center", this.openURLText_);
-
- // Password panel
- Panel pwPanel = new Panel();
- pwPanel.setLayout (new BorderLayout ());
- pwPanel.add ("North", new Label ("Authentication:"));
- pwPanel.add ("Center", this.passwordText_);
-
- textPanels.add("North", URLPanel);
- textPanels.add("South", pwPanel);
-
- Panel buttonPanel = new Panel ();
- buttonPanel.setLayout (new FlowLayout (FlowLayout.CENTER));
-
- buttonPanel.add (this.saveButton_);
- buttonPanel.add (this.clearButton_);
- buttonPanel.add (this.cancelButton_);
-
- this.add ("North", textPanels);
- this.add ("South", buttonPanel);
- }
-
- // Handle all action events
- public boolean action (Event e, Object arg)
- {
- if (e.target instanceof Button)
- {
- if (e.target == this.saveButton_)
- {
- this.saveFile ();
- }
- else if (e.target == this.clearButton_)
- {
- this.openURLText_.setText (new String ());
- this.openURLText_.requestFocus ();
- }
- else if (e.target == this.cancelButton_)
- this.dispose ();
- validate ();
- return true;
- }
- else
- return false;
- }
-
- public boolean keyDown (Event e, int key)
- {
- if (key == 10)
- {
- this.saveFile ();
- return true;
- }
- else
- return false;
- }
-
- private void saveFile ()
- {
- String url = this.openURLText_.getText ();
- String password = this.passwordText_.getText();
- this.hide ();
- this.dispose ();
-
- // The following is only for debugging
- if (url.startsWith ("#"))
- url = "http://merengue.cs:5432/" + url.substring (1);
-
- if ((password != null) && (password.length() > 0))
- this.parent_.saveFile (url, password);
- else
- this.parent_.saveFile (url);
- }
-
-
- // Create the Open URL Frame and also the buttons which appear in
- // it
- private Button saveButton_ = new Button ("Save");
- private Button clearButton_ = new Button ("Clear");
- private Button cancelButton_ = new Button ("Cancel");
-
- private TextField openURLText_ = new TextField (40);
- private TextField passwordText_ = new TextField (40);
-
- private ImageApp parent_;
-
- // Flag indicating if this is a load window or a save window
- private boolean open_ = true;
-
-}
diff --git a/java/ImageProcessing/framework/Separator.java b/java/ImageProcessing/framework/Separator.java
deleted file mode 100644
index 6bd610e1ad9..00000000000
--- a/java/ImageProcessing/framework/Separator.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package gjt;
-
-import java.awt.*;
-
-/**
- * A separator that is drawn either vertically or horizontally
- * depending upon how it is laid out. Can be drawn either
- * etched-in or etched-out, with varying thicknesses. Both
- * thickness and etching are settable at construction time
- * only.<p>
- *
- * Default thickness is 2 pixels and default etching is
- * Etching.IN. Note that thicknesses greater than 4 loose the
- * etching effect.<p>
- *
- * @version 1.0, Apr 1 1996
- * @author David Geary
- * @see Etching
- * @see gjt.test.SeparatorTest
- */
-public class Separator extends Canvas {
- static private Etching _defaultEtching = Etching.IN;
- static private int _defaultThickness = 2;
-
- private Etching etching;
- private int thickness;
-
- public Separator() {
- this(_defaultThickness, _defaultEtching);
- }
- public Separator(int thickness) {
- this(thickness, _defaultEtching);
- }
- public Separator(Etching etching) {
- this(_defaultThickness, etching);
- }
- public Separator(int thickness, Etching etching) {
- this.etching = etching;
- this.thickness = thickness;
- resize(thickness, thickness);
- }
- public Dimension minimumSize() {
- return preferredSize();
- }
- public Dimension preferredSize() {
- return new Dimension(thickness, thickness);
- }
- public void paint(Graphics g) {
- Dimension size = size();
- Color brighter = getBackground().brighter().brighter();
- Color darker = getBackground().darker().darker();
-
- if(etching == Etching.IN) {
- if(size.width > size.height)
- paintHorizontal(g, size, darker, brighter);
- else
- paintVertical(g, size, darker, brighter);
- }
- else {
- if(size.width > size.height)
- paintHorizontal(g, size, brighter, darker);
- else
- paintVertical(g, size, brighter, darker);
- }
- }
- public String paramString() {
- Dimension size = size();
- Orientation orient = size.width > size.height ?
- Orientation.HORIZONTAL :
- Orientation.VERTICAL;
- return super.paramString() + "thickness=" +
- thickness + "," + etching + "," + orient;
- }
- private void paintHorizontal(Graphics g, Dimension size,
- Color top, Color bottom) {
- g.setColor(top);
- g.fillRect(0, (size.height/2) - (thickness/2),
- size.width, thickness/2);
- g.setColor(bottom);
- g.fillRect(0, size.height/2, size.width, thickness/2);
- }
- private void paintVertical(Graphics g, Dimension size,
- Color left, Color right) {
- g.setColor(left);
- g.fillRect((size.width/2) - (thickness/2),
- 0, thickness/2, size.height);
- g.setColor(right);
- g.fillRect(size.width/2, 0, thickness/2, size.height);
- }
-}
diff --git a/java/ImageProcessing/framework/ServerHandler.java b/java/ImageProcessing/framework/ServerHandler.java
deleted file mode 100644
index 88da64d6328..00000000000
--- a/java/ImageProcessing/framework/ServerHandler.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package imaging.framework;
-
-import java.io.*;
-import java.net.*;
-import JACE.OS.*;
-import JACE.Connection.*;
-
-public class ServerHandler extends SvcHandler
-{
- public int open (Object obj)
- {
- new Thread (this).start ();
- return 0;
- }
-
- public void run ()
- {
- int msg_len;
- try
- {
- while (true)
- {
- StringBuffer msg = new StringBuffer ();
- msg_len = this.peer ().recv (msg);
- if (msg_len == 0)
- break;
- System.out.println (msg);
- }
- }
- catch (NullPointerException e)
- {
- ACE.ERROR ("connection reset by peer");
- }
- catch (IOException e)
- {
- ACE.ERROR (e);
- }
- finally
- {
- try
- {
- this.peer ().close ();
- }
- catch (IOException e)
- {
- }
- }
-
- }
-}
diff --git a/java/ImageProcessing/framework/ServerTest.java b/java/ImageProcessing/framework/ServerTest.java
deleted file mode 100644
index b5ab00596ea..00000000000
--- a/java/ImageProcessing/framework/ServerTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package imaging.framework;
-
-import java.io.*;
-import java.net.*;
-import JACE.OS.*;
-import JACE.Connection.*;
-
-public class ServerTest
-{
- void print_usage_and_die ()
- {
- System.out.println ("Usage: ServerTest [<port>]");
- System.exit (0);
- }
-
- public void init (int port)
- {
- try
- {
- Acceptor acceptor = new Acceptor (Class.forName ("imaging.framework.ServerHandler"));
- acceptor.open (port);
- while (true)
- {
- acceptor.accept ();
- }
- }
- catch (ClassNotFoundException e)
- {
- ACE.ERROR (e);
- }
- catch (SocketException e)
- {
- ACE.ERROR ("Socket Exception: " + e);
- }
- catch (InstantiationException e)
- {
- ACE.ERROR (e);
- }
- catch (IllegalAccessException e)
- {
- ACE.ERROR ("Dang!" + e);
- }
- catch (IOException e)
- {
- ACE.ERROR (e);
- }
- }
-
- public static void main (String [] args)
- {
- int port = ACE.DEFAULT_SERVER_PORT;
- ServerTest server = new ServerTest ();
-
- if (args.length == 1)
- {
- try
- {
- port = Integer.parseInt (args[0]);
- }
- catch (NumberFormatException e)
- {
- server.print_usage_and_die ();
- }
- }
- server.init (port);
- }
-}
diff --git a/java/ImageProcessing/framework/StatusDisplay.java b/java/ImageProcessing/framework/StatusDisplay.java
deleted file mode 100644
index e20e9b8384d..00000000000
--- a/java/ImageProcessing/framework/StatusDisplay.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package imaging.framework;
-
-import java.awt.*;
-import gjt.Separator;
-
-class StatusDisplay extends Panel
-{
- public StatusDisplay ()
- {
- this.setLayout (new BorderLayout ());
- this.textField_.setEditable (false);
- this.add ("North", new Separator ());
- this.add ("Center", this.textField_);
- this.add ("South", new Separator ());
- }
-
- public void setText (String s)
- {
- this.textField_.setText (s);
- }
-
- private TextField textField_ = new TextField ();
-}
diff --git a/java/ImageProcessing/framework/StatusIndicator.java b/java/ImageProcessing/framework/StatusIndicator.java
deleted file mode 100644
index 0f13a71c016..00000000000
--- a/java/ImageProcessing/framework/StatusIndicator.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package imaging.framework;
-
-import java.io.*;
-import java.awt.*;
-
-public class StatusIndicator extends Frame
-{
- public StatusIndicator (String title, Image image)
- {
- super (title);
- this.image_ = image;
- // statusCanvas_ = new CounterCanvas (image);
- this.setLayout (new BorderLayout ());
- this.text_ = new TextField ();
- this.label_ = new TextField ("Generating");
-
- this.add ("North", this.label_);
- this.add ("Center", text_);
- // this.add ("Center", statusCanvas_);
- // this.add ("Center", new Button ("Hello"));
- // this.add ("South", new Button ("Hello"));
- this.resize (300,200);
- this.show ();
- }
-
- public void update (int count)
- {
- // this.label_.setText ("Generating...");
- this.text_.setText ((new Integer (count++)).toString ());
- // statusCanvas_.update ();
- // textCanvas_.setCount (count);
- }
-
- TextField text_;
- TextField label_;
- Image image_;
- // CounterCanvas statusCanvas_ = null;
-}
-
-class CounterCanvas extends Canvas
-{
- public CounterCanvas (Image image)
- {
- this.image_ = image;
- }
-
- public void paint (Graphics g)
- {
- g.clearRect (0, 0, this.size ().width, this.size ().height);
- this.setBackground (Color.white);
-
- if (this.image_ != null)
- g.drawImage(this.image_,
- 40, 40,
- this.image_.getWidth (this),
- this.image_.getHeight (this),
- this);
-
- g.setFont (new Font ("TimesRoman", Font.PLAIN, 18));
- g.drawString ("Generating GIF format: ", 120, 120);
- }
-
- public void update ()
- {
- repaint ();
- }
-
- Image image_ = null;
-}
-
diff --git a/java/ImageProcessing/framework/TestHandler.java b/java/ImageProcessing/framework/TestHandler.java
deleted file mode 100644
index 5a97ae6f8b2..00000000000
--- a/java/ImageProcessing/framework/TestHandler.java
+++ /dev/null
@@ -1,149 +0,0 @@
-package imaging.framework;
-
-import java.io.*;
-import java.net.*;
-import java.awt.*;
-import java.awt.image.*;
-import java.util.*;
-import JACE.OS.*;
-import JACE.Connection.*;
-import JACE.Timers.*;
-
-public class TestHandler extends SvcHandler
-{
- public TestHandler (String imageList,
- String JAWSServer, int JAWSPort,
- ImageApp parent)
- {
- this.imageList_ = imageList;
- this.JAWSServer_ = JAWSServer;
- this.JAWSPort_ = JAWSPort;
- this.parent_ = parent;
- this.filterTable_ = this.parent_.filterTable();
- }
-
- public int open (Object obj)
- {
- // We got called by the Connector so assume connection was set up
- // fine and therfore do not use standard output
- stdOut = false;
-
- doTesting ();
- return 0;
- }
-
- public void doTesting ()
- {
- if (imageList_ != null)
- {
- StringTokenizer tokens = new StringTokenizer (imageList_);
- String image = null;
-
- // Now parse the string, picking up image names.
- while (tokens.hasMoreTokens ())
- {
- // Get the next token
- image = tokens.nextToken ();
- this.process (image);
- }
- }
- }
-
- private void write (String data)
- {
- try
- {
- // If we are connected to the server then send the data to the
- // server, otherwise write it to standard out.
- if (stdOut)
- System.out.print (data);
- else
- this.peer ().send (data);
- }
- catch (IOException e)
- {
- ACE.ERROR (e);
- }
- }
-
- private void process (String image)
- {
- this.write ("Image: " + image + "\n");
-
- this.loadImage (image);
- this.processImage (image);
- this.uploadImage (image);
- }
-
- private void loadImage (String image)
- {
- this.write ("\tLoading...");
-
- // Start the timer
- timer_.start ();
-
- // Load the image
- parent_.openURL (image);
-
- // Stop the timer
- timer_.stop ();
- long time = timer_.elapsedTime ();
-
- this.write ("done (" + ((double) time)/1000 + " seconds).\n");
- }
-
- private void processImage (String image)
- {
- this.write ("\tProcessing...\n");
-
- for (Enumeration e = filterTable_.keys (); e.hasMoreElements (); )
- {
- String filterName = (String) e.nextElement ();
-
- this.write ("\t\t" + filterName + "...");
-
- ImageFilter filter = (ImageFilter) filterTable_.get (filterName);
-
- // Reset the image -- in case it was modified earlier
- this.parent_.resetImage ();
-
- // Start the timer
- timer_.start ();
-
- this.parent_.apply (filter);
-
- // Stop the timer
- timer_.stop ();
- long time = timer_.elapsedTime ();
-
- this.write ("done (" + ((double) time)/1000 + " seconds).\n");
- }
- }
-
- private void uploadImage (String image)
- {
- int index = image.lastIndexOf ("/");
- String imageName = image.substring (index+1);
- String url = "http://" + this.JAWSServer_ + ":" + this.JAWSPort_ + "/" + imageName;
- this.write ("\tUploading " + url + "...");
-
- // Start the timer
- timer_.start ();
-
- this.parent_.saveFile (url);
-
- // Stop the timer
- timer_.stop ();
- long time = timer_.elapsedTime ();
-
- this.write ("done (" + ((double) time)/1000 + " seconds).\n");
- }
-
- private ImageApp parent_ = null;
- private ProfileTimer timer_ = new ProfileTimer ();
- private String imageList_ = null;
- private boolean stdOut = true;
- private Hashtable filterTable_ = null;
- private String JAWSServer_ = null;
- private int JAWSPort_ = 5432;
-}
diff --git a/java/ImageProcessing/framework/Tester.java b/java/ImageProcessing/framework/Tester.java
deleted file mode 100644
index 79204bb4c5a..00000000000
--- a/java/ImageProcessing/framework/Tester.java
+++ /dev/null
@@ -1,148 +0,0 @@
-package imaging.framework;
-
-import java.io.*;
-import java.net.*;
-import java.awt.*;
-import java.awt.image.*;
-import java.util.*;
-import JACE.Connection.*;
-import JACE.OS.*;
-
-public class Tester implements Runnable
-{
- public static final String DEFAULT_TEST_SERVER = "siesta.cs.wustl.edu";
- public static final int DEFAULT_TEST_SERVER_PORT = 7787;
- public static final String DEFAULT_JAWS_SERVER = "siesta.cs.wustl.edu";
- public static final int DEFAULT_JAWS_SERVER_PORT = 5432;
-
- public Tester (String testInFile,
- ImageApp parent)
- {
- this.testInFile_ = testInFile;
- this.parent_ = parent;
- }
-
- public void initialize ()
- {
- System.out.println ("Initializing tester...");
-
- // Get the hostname of the test server
- this.server_ = this.parent_.getParameter ("testServer");
- if (this.server_ == null)
- this.server_ = DEFAULT_TEST_SERVER;
-
- // Get the port number of the test server
- String testPortString = this.parent_.getParameter ("testPort");
- if (testPortString == null)
- this.port_ = DEFAULT_TEST_SERVER_PORT;
- else
- this.port_ = (new Integer (testPortString)).intValue ();
-
- // Get the hostname of the JAWS server
- this.JAWSServer_ = this.parent_.getParameter ("JAWSServer");
- if (this.JAWSServer_ == null)
- this.JAWSServer_ = DEFAULT_JAWS_SERVER;
-
- // Get the port number of the JAWS server
- String JAWSPortString = this.parent_.getParameter ("JAWSPort");
- if (JAWSPortString == null)
- this.JAWSServerPort_ = DEFAULT_JAWS_SERVER_PORT;
- else
- this.JAWSServerPort_ = (new Integer (JAWSPortString)).intValue ();
-
- System.out.println ("Test Input File: " + this.testInFile_);
- System.out.println ("Test Server: " + this.server_ + "\tPort: " + this.port_);
- System.out.println ("JAWS Server: " + this.JAWSServer_ + "\tPort: " + this.JAWSServerPort_);
-
- // Run in your own thread of control
- (new Thread (this)).start ();
- }
-
- public void run ()
- {
- this.setupConnection (this.getImages ());
- }
-
- private String getImages ()
- {
- URL inputURL;
- String imageList = null;
- try
- {
- // Create input URL
- inputURL = new URL (this.testInFile_);
-
- // Get the input stream and pipe it to a DataInputStream
- DataInputStream iStream = new DataInputStream (inputURL.openStream ());
-
- // Create a buffer to hold all the data we get
- StringBuffer tempBuf = new StringBuffer ();
- // Keep reading the data until we are done
- String tempString = iStream.readLine ();
- while (tempString != null)
- {
- tempBuf.append (tempString);
- tempBuf.append (" ");
- tempString = iStream.readLine ();
- }
- imageList = tempBuf.toString ();
- }
- catch (MalformedURLException e)
- {
- ACE.ERROR (e);
- }
- catch (IOException e)
- {
- ACE.ERROR (e);
- }
- return imageList;
- }
-
- private void setupConnection (String imageList)
- {
- // First try to connect to the server. If the server is not
- // running then we will write to standard output.
-
- // Create a handler which will handle our connection.
- TestHandler handler = new TestHandler (imageList,
- this.JAWSServer_, this.JAWSServerPort_,
- this.parent_);
- try
- {
- Connector connector = new Connector ();
- connector.open (server_, port_);
- connector.connect (handler);
- }
- catch (UnknownHostException e)
- {
- ACE.ERROR (e);
- }
- catch (SocketException e)
- {
- System.out.println ("Test Server not running! Writing to standard out...");
- // The server is not running so write all the output to screen
- handler.doTesting ();
- }
- catch (InstantiationException e)
- {
- ACE.ERROR (e);
- }
- catch (IllegalAccessException e)
- {
- ACE.ERROR (e);
- }
- catch (IOException e)
- {
- ACE.ERROR (e);
- }
- }
-
- private String testInFile_ = null;
- private ImageApp parent_ = null;
- private String server_ = "siesta.cs.wustl.edu";
- private int port_ = 7787;
-
- private String JAWSServer_ = "siesta.cs.wustl.edu";
- private int JAWSServerPort_ = 5432;
-}
-
diff --git a/java/ImageProcessing/framework/doc01.gif b/java/ImageProcessing/framework/doc01.gif
deleted file mode 100644
index 51262529f6d..00000000000
--- a/java/ImageProcessing/framework/doc01.gif
+++ /dev/null
Binary files differ
diff --git a/java/ImageProcessing/framework/file03.gif b/java/ImageProcessing/framework/file03.gif
deleted file mode 100644
index c98654c604b..00000000000
--- a/java/ImageProcessing/framework/file03.gif
+++ /dev/null
Binary files differ
diff --git a/java/ImageProcessing/framework/filter.conf b/java/ImageProcessing/framework/filter.conf
deleted file mode 100644
index 2e90ea136ce..00000000000
--- a/java/ImageProcessing/framework/filter.conf
+++ /dev/null
@@ -1,15 +0,0 @@
-imaging.filters.EmbossFilter
-imaging.filters.BleachFilter
-imaging.filters.BlurFilter
-imaging.filters.DarkenFilter
-imaging.filters.DeSpeckleFilter
-imaging.filters.EdgeDetectFilter
-imaging.filters.OilPaintFilter
-imaging.filters.PixelizeFilter
-imaging.filters.RotateFilter
-imaging.filters.SharpenFilter
-imaging.filters.SpreadFilter
-
-
-
-
diff --git a/java/ImageProcessing/framework/help.conf b/java/ImageProcessing/framework/help.conf
deleted file mode 100644
index 8a07e2867d9..00000000000
--- a/java/ImageProcessing/framework/help.conf
+++ /dev/null
@@ -1,216 +0,0 @@
- MedJava
- ~~~~~~~
-
-Overview
---------
-
-MedJava is a prototype of a large scale distributed medical imaging
-system. It has been developed using Java, in particular, several
-components of Java ACE.
-
-Here are the key features of the MedJava toolkit:
-
-* Images can be both downloaded and uploaded across the network.
-* Images can be uploaded to Web servers that support HTTP PUT
- functionality (for example, JAWS).
-* The tool contains more than a dozen image filters to do image
- processing.
-* The image filters can be configured into the system dynamically
- using the Service Configurator pattern.
-
-Please send comments/suggestions to Prashant Jain (pjain@cs.wustl.edu).
-
-======================================================================
-Getting Started
----------------
-
-MedJava applet can be configured with several (optional) parameters
-via the HTML file from which the applet is invoked. Here is a list of
-the parameters:
-
-Note:
- 1) * indicates test-mode parameters
- 2) All Default URLs begin with
- http://www.cs.wustl.edu/~pjain/java/ACE_wrappers/java/ImageProcessing/framework/
-
-<START>
-Name
-<TAB>
-<TAB>
-Description
-<TAB>
-<TAB>
-<TAB>
-<TAB>
-Default
-<P>
---------------------------------------------------------------
-<P>
-configFile
-<TAB>
-<TAB>
-Specifies a URL that points to the filter
-<P>
-<TAB>
-<TAB>
-configuration file.
-<TAB>
-<TAB>
-<TAB>
-<TAB>
-<TAB>
-filter.conf
-<P>
-<P>
-*testFile
-<TAB>
-<TAB>
-Specifies a URL that points to the file that contains
-<P>
-<TAB>
-<TAB>
-a list of images that need to be tested.
-<TAB>
-<TAB>
-<TAB>
-testImages.conf
-<P>
-<P>
-*testServer
-<TAB>
-Specifies the name of the test server.
-<TAB>
-<TAB>
-<TAB>
-siesta.cs.wustl.edu
-<P>
-<P>
-*testPort
-<TAB>
-<TAB>
-Specifies the port number of the test server.
-<TAB>
-<TAB>
-<TAB>
-7789
-<P>
-<P>
-*JAWSServer
-<TAB>
-Specifies the name of the server to use in
-<P>
-<TAB>
-<TAB>
-doing image uploading during testing.
-<TAB>
-<TAB>
-<TAB>
-siesta.cs.wustl.edu
-<P>
-<P>
-*JAWSPort
-<TAB>
-Specifies the port number of the server to use
-<P>
-<TAB>
-<TAB>
-in doing image uploading during testing.
-<TAB>
-<TAB>
-<TAB>
-5432
-<P>
-======================================================================
-<END>
-
-Menu
-----
-
-o Open URL
-
- Allows user to specify a URL. If the URL points to an image that is
- readable, then the image is downloaded and displayed in the view
- panel.
-
- If the URL points to a directory that is readable then a window
- appears displaying a list of files in that directory. The user can
- then click on an image file in this window to fetch an image.
-
- IMPORTANT NOTE: If the URL points to a directory, the directory must
- not contain an "index.html" file! If it does, the
- query will fail and no list of files will appear.
-
-o Save
-
- Allows user to specify a URL to save the currently loaded image to.
- All images are saved in GIF format. Note that saving/uploading a
- file can take a while depending upon the size of the image. This is
- because, the tool first generates the GIF format and then sends the
- bytes across the network.
-
- IMPORTANT NOTE: The Web server must support image uploading, that is
- HTTP PUT functionality. Also, due to applet
- restrictions, the server MUST be running on the same
- host from which the applet was downloaded from.
-
-o Reset
-
- Resets the image to the original. Note that the effects of any
- filters that were applied to the image will be lost.
-
-o Reload Filters
-
- Reads the filter configuration file again and reloads all the image
- filters. Note that this serves as the trigger of the Service
- Configurator pattern allowing the tool to reconfigure based on new
- configuration information.
-
- The filters are specified in filter.conf. To add/remove filters,
- change this file and then select "Reload Filters".
-
- To specify a different configuration file, please see "Getting Started".
-
-o Zoom In
-
- Zooms in to the currently displayed image. Note that the applet only
- allows to zoom in 4 x times.
-
-o Zoom Out
-
- Zooms out of the currently displayed image. Note that the applet
- only allows to zoom out 1/4 x times.
-
-o Apply
-
- Apply the currently selected filter. By default no filter is
- selected. Note that applying a filter to an image can taken
- anywhere between a few seconds to a few minutes depending upon the
- image size, the filter type, and the speed of the machine on which
- the applet is running.
-
-o Filters:
-
- Allows the user to select a filter from the ones that have been
- configured into the applet. Note that this is a choice menu and its
- entries depend upon the filters that were specified in the filter
- configuration file.
-
- For more information, on how to specify the filters, please see
- "Getting Started".
-
-o About
-
- Displays the "About" dialog containing the version of the MedJava
- applet.
-
-o Help
-
- Displays this window
-
-======================================================================
-
-Limitations
------------
-
-In several browsers, for images larger than 100 KB, the Java virtual
-machine may run out of memory while doing image processing.
diff --git a/java/ImageProcessing/framework/test.html b/java/ImageProcessing/framework/test.html
deleted file mode 100644
index 7a9acf34e38..00000000000
--- a/java/ImageProcessing/framework/test.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<HTML>
-
-<BODY text = "#000000"
-link="#000fff"
-vlink="#ff0f0f"
-bgcolor="#888888">
-
-<HR>
-<APPLET CODEBASE="../../classes" CODE="imaging.framework.ImageApp.class" width=700 height=700>
-<param name=configFile value="http://www.cs.wustl.edu/~pjain/java/ACE_wrappers/java/ImageProcessing/framework/testFilter.conf">
-<param name=testFile value="http://www.cs.wustl.edu/~pjain/java/ACE_wrappers/java/ImageProcessing/framework/testImages.conf">
-<param name=testServer value="siesta.cs.wustl.edu">
-<param name=testPort value="7789">
-<param name=JAWSServer value="siesta.cs.wustl.edu">
-<param name=JAWSPort value="5432">
-</APPLET>
-<HR>
-
-</HTML> \ No newline at end of file
diff --git a/java/ImageProcessing/framework/testFilter.conf b/java/ImageProcessing/framework/testFilter.conf
deleted file mode 100644
index 2e90ea136ce..00000000000
--- a/java/ImageProcessing/framework/testFilter.conf
+++ /dev/null
@@ -1,15 +0,0 @@
-imaging.filters.EmbossFilter
-imaging.filters.BleachFilter
-imaging.filters.BlurFilter
-imaging.filters.DarkenFilter
-imaging.filters.DeSpeckleFilter
-imaging.filters.EdgeDetectFilter
-imaging.filters.OilPaintFilter
-imaging.filters.PixelizeFilter
-imaging.filters.RotateFilter
-imaging.filters.SharpenFilter
-imaging.filters.SpreadFilter
-
-
-
-