Dexter ====== Dexter is a little java applet that is used by the ADS (http://adswww.harvard.edu) to let users extract data from figures on scanned images. As such, it is rather tightly bound to the ADS through the AppletImageGetter and AppletDataDeliverer classes. However, by implementing different classes implementing the ImageGetter and DataDeliverer interfaces, standalone versions can be provided. Two of those are in the current distribution: * PlainImageGetter and PlainDataDeliverer * ScriptImageGetter and PlainDataDeliverer The first can be used to build Debuxter, which can process whatever file formats your version of AWT understands, the second is used by gaucho; it reads its input from a shell script and thus can be coerced into reading just about anything. See HOWTO.standalone. Usage ===== Read Dexterhelp.html Building ======== Thanks to the quick depreciation policy of the people in charge of java, nothing less than jdk 1.5 will do to build this beast; using more will probably lead to a plethora of warnings. I recommend trying the jdks from sun, though I welcome reports how Dexter fares with other java compilers. Current Status ============== I am not actively developing Dexter, and ADS currently is quite happy with what it has, so there is little initiative to pick this up. I am maintaining the code, though, so you're welcome to report bugs or better, contribute patches. Otherwise, this code is a bit of a mess. It's the only major thing I've been doing in java, and most features were retrofitted in a design that was not too well thought-out from the beginning. Also, I've decided to change the indentation style at some point, so this is also somewhat inconsistent right now (a good java indenter, anyone?), and I've started to pythonize the code, which means that as time goes by I'd like to see all implicit "this"es being explicit. I just happen to think it's a good idea to explicitely mark what's local and what's instance variable. Some major refactoring would be in place, and I've been tackling tiny parts of that as I fixed a couple of bugs. The recognizers are bad hacks. I'm not entirely positive that changing them to something from the image processing books would improve much of what they're doing, but at least the large amount of duplicated code for vertical and horizontal operation should go away. Plus, there are some horrible race conditions in the code, mostly due to ImageObservers and things like scrollbars depending on them. You probably don't want to look into this, except as a project for a parallel programming class. License ======= See the file COPYING. The file Fmt.java is covered by its own License. Author ====== If you have questions, comments, code improvments or bug fixes, please do not hesitate to contact me: msdemlei@ari.uni-heidelberg.de Temporary Notes =============== Runnable updateAComponent = new Runnable() { public void run() { component.doSomething(); } }; SwingUtilities.invokeLater(updateAComponent); InvokeAndWait