summaryrefslogtreecommitdiff
path: root/libs/cassowary/README
diff options
context:
space:
mode:
Diffstat (limited to 'libs/cassowary/README')
-rw-r--r--libs/cassowary/README241
1 files changed, 241 insertions, 0 deletions
diff --git a/libs/cassowary/README b/libs/cassowary/README
new file mode 100644
index 0000000000..16ed492b8e
--- /dev/null
+++ b/libs/cassowary/README
@@ -0,0 +1,241 @@
+Cassowary Constraint Solving Toolkit for C++, Java, and Smalltalk
+Version 0.60
+
+Web Page: http://www.cs.washington.edu/research/constraints/cassowary
+Contact: cassowary@cs.washington.edu
+
+Greg J. Badros <gjb@cs.washington.edu> and
+Alan Borning <borning@cs.washington.edu>
+University of Washington
+Computer Science and Engineering
+Seattle, WA 98195-2350
+12-March-2000
+
+with Constraint Drawing Applet (CDA) by Michael Noth <noth@cs.washington.edu>
+
+See ANNOUNCE for a brief description and announcement of this distribution.
+See NEWS for a history of user-visible changes.
+See ChangeLog for a detailed listing of the changes to each source file.
+See LICENSE for legalese regarding use of this distribution.
+
+The Smalltalk implementation is in the public domain -- see smalltalk/README.
+
+Please send bug reports to cassowary@cs.washington.edu
+
+Also, send mail to cassowary@cs.washington.edu if you would like to be
+informed about bug fixes, feature enhancements, etc. Let us know what
+implementation(s) you are using, too.
+
+------------------------------------------------------------------
+
+HOW TO GET STARTED
+
+The Cassowary library uses GNU autoconf to permit easy building on
+various platforms. You should be able to do:
+
+./configure
+make
+
+and everything will work. A more complex, but realistic example is:
+
+./configure --with-prefix=/usr/contrib \
+ --with-guile-prefix=/usr/contrib \
+ --with-python-headers=/usr/include/python1.5 \
+ --enable-java-build \
+ --with-gtl=/usr/contrib \
+ --with-java-class-path=/usr/contrib/share/java/site \
+ --enable-warnings
+make -k
+
+Be sure to give the extra --enable-permissive flag to configure if
+you are building with gcc-2.95 or more recent.
+
+As yet another data point, I build Cassowary with:
+
+./configure --with-guile-exec-prefix=/uns/bin \
+ --with-guile-prefix=/uns/share --prefix=/uns/share \
+ --exec-prefix=/uns --enable-maintainer-mode
+
+See the file "INSTALL" for more details about
+autoconf support and the options that the "configure" takes. You can
+also do "./configure --help" for the list of the options that configure
+accepts.
+
+If the make in any of the subdirectories fails, you can turn on the "-k"
+option to make, or just do make in the subdirectories that you want
+build. E.g., if you do not have the JDK installed, the Java version of
+Cassowary might not compile; if you still want the guile version, just
+"cd guile; make -k".
+
+Be sure that configure detects the validity of using the "-fpermissive"
+flag of more recent g++/egcs compilers to work around some
+const-discrepancies between the const-challenged guile header files and
+Cassowary's more const-correct usage. You should get a message like:
+
+ checking whether gcc understands -fpermissive option... yes
+
+when running configure if you're using, e.g., gcc-2.95 or later.
+
+You need to apply GTL.h.patch to the installed GTL.h header file for
+Cassowary to compile with recent versions of egcs/gcc (e.g., gcc-2.95).
+
+Also, you may need to change libguile/gsubr.h from:
+
+ extern SCM scm_make_gsubr SCM_P ((char *name, int req, int opt,
+ int rst, SCM (*fcn)()));
+ to
+
+ extern SCM scm_make_gsubr SCM_P ((char *name, int req, int opt,
+ int rst, void*));
+
+or patch guile's snarf.h to insert the appropriate case at each call to
+SCM_PROC and SCM_PROC1. (Thanks to Alexandre Duret-Lutz for the above
+information about more recent g++/egcs compilers).
+
+Note that the generated Makefiles depend upon features of GNU Make. See:
+
+ftp://ftp.gnu.org/pub/gnu/
+
+for a version of make that you can build first to then build Cassowary.
+
+Example applications exist in subdirectories of the top-level
+implementation subdirectories (e.g., c++/qdemos contains demos for C++
+that use the Qt Widget toolkit).
+
+Please send mail to cassowary@cs.washington.edu if you are using this
+toolkit so we know how to reach you for bug fixes, updates, etc.
+
+------------------------------------------------------------------
+
+WHAT THE DISTRIBUTION CONTAINS
+
+This distribution contains 3 implementations of the Cassowary constraint
+solving toolkit:
+
+o C++
+o Java
+o Smalltalk
+
+For each implementation language, there is at least one example program;
+for some there are many.
+
+There is a wrapping of the C++ solver in Guile-Scheme -- see the guile/
+subdirectory. Also, Anthony Beurivé has wrapped Cassowary for
+STk/Scheme. His code is available at:
+
+ http://dept-info.labri.u-bordeaux.fr/~beurive/Code
+
+and the STk Scheme system is available at:
+
+ http://kaolin.unice.fr/STk/
+
+There is also a SWIG-generated wrapper of the C++ library making the
+solver available from the Python language.
+
+A technical report describing the solver, its interface, and its
+implementation is in cassowary-tr.ps (pdf version in cassowary-tr.pdf).
+This paper is required reading if you intend to use the solver in your
+own project(s).
+
+See also the Scwm (Scheme Constraints Window Manager) web page:
+
+http://scwm.mit.edu/scwm/
+
+Scwm, also by Greg Badros (and Maciej Stachowiak), is the most
+substantial application using this toolkit that we are aware of.
+
+------------------------------------------------------------------
+
+VARIOUS IMPLEMENTATION NOTES
+
+Cassowary/C++ needs to be compiled using a modern C++ compiler.
+At one time or another, it has compiled using:
+ o egcs-1.0.1
+ o egcs-1.0.3a
+ o egcs-1.1b
+ o egcs-1.1.1
+ o gcc-2.8.1 (needs libstdc++-2.8.x, too)
+ o Visual C++ 5.0 (not tried recently)
+
+In particular, Cassowary will *not* build with gcc-2.7.x.x!
+
+See c++/README for more details about building the C++ version.
+
+The C++ implementation of the toolkit also has an optional finite domain
+subsolver. You need to build and install the GTL -- the Graph Template
+Library -- and use the "--with-gtl=DIR" configure option for the finite
+domain subsolver to be built. GTL is available from:
+
+http://www.fmi.uni-passau.de/Graphlet/GTL/
+
+Cassowary was tested against GTL-0.3.1; it may work with later
+versions, but I have not tried it. You need to apply GTL.h.patch to
+the installed GTL.h header file for Cassowary to compile with recent
+versions of egcs/gcc (e.g., gcc-2.95).
+
+Cassowary/Java was developed using Sun's JDK-1.1.x, ported to Linux
+More recent versions should work fine.
+
+See java/README for more details about building the Java version.
+
+
+Cassowary/Smalltalk was written under OTI Smalltalk-- other versions of
+smalltalk will likely require (possibly significant) changes.
+
+See smalltalk/README for more details about the Smalltalk version.
+
+See guile/README for details about the Guile Scheme wrapper of the C++
+implementation, and for a pointer to SCWM, the Scheme Constraints Window
+Manager which uses Cassowary.
+
+The Python bindings (by Tessa Lau) bindings for the Cassowary library
+are in the wrappers/ subdirectory. SWIG was used in wrapping the
+library. These bindings may no longer work, and are provided only for
+your hacking pleasure (please send back useful patches if you do get the
+code working).
+
+For more information about SWIG, see:
+
+http://www.swig.org/
+
+
+For more information about the Python language, see:
+
+http://www.python.org/
+
+
+For more information about the Guile-Scheme language, see:
+
+http://www.red-bean.com/guile/
+http://www.fsf.org/software/guile/guile.html
+
+
+------------------------------------------------------------------
+
+DEMONSTRATION APPLICATION
+
+A standard demonstration application is included for each implementation
+of the Cassowary solver. The application builds a quadrilateral and
+connects the neighboring midpoints of each of the outer edges to form an
+interior quadrilateral which is provably a parallelogram. The
+constraint solver manages the constraints to keep the outer
+quadrilateral inside the window, keep the midpoints properly positioned,
+and keep the outer quadrilateral from turning "inside out."
+
+The user is able to select points (draggable boxes) and move them around
+within the window (both midpoints and endpoints can be selected, of
+course). The solver updates the figure, and redraws.
+
+
+------------------------------------------------------------------
+
+FUNDING ACKNOWLEDGEMENTS
+
+This work has been funded in part by the National Science Foundation under
+Grants IRI-9302249 and CCR-9402551, by Object Technology International, and
+by a Fulbright Award from the Australian-American Educational
+Foundation.
+
+Additionally, Greg Badros is supported by a National Science Foundation
+Graduate Research Fellowship. Parts of this material are based upon
+work supported under that fellowship.