===========
==EACoder==
===========

====================
==What is EACoder?==
====================

EACoder is an Integrated Development Environment (IDE) for equation art. It comprises a code harness (which takes care of the donkey-work) and a web-based interface.

=========
==Notes==
=========

-EACoder v1.0 requires Linux, since its BMP->PNG compression uses Linux's 'convert' utility.
-The empty /images/ folder in the code distribution is necessary. EACoder uses it, and will not create it.
-The directory housing the scripts does not need to be writable. The /images/ folder does, however.

=========
==Files==
=========

-config.php: This contains all the configuration options, including the list of allowed functions. Unless you actually want to rewrite EACoder, this is the only file you should edit.
-index.php: This is the interface, the front end. It also links everything else together.
-backend.php: This, oddly enough, is the back-end. In short, it does most of the work.
-functions.php: These are the custom functions used by EACoder (except for allowfuncs(), which is in config.php). Functions in this file are not available to the end-user unless specifically allowed by allowfuncs() in config.php.
-image.php: This serves the image, and then deletes both the image and the placeholder reservation (thereby freeing the slot).
-save.php: This takes user-entered code and settings, builds an EAC file around them, and sends this to the browser explicitly marked as a file (ie. not a web page).

================
==License etc.==
================

EACoder was created by me, Patrick Heddles. You may copy EACoder and/or make derivative works, on these conditions:
-That you credit me (Patrick Heddles) as the creator of EACoder.
-That you link to my copy of EACoder (currently at http://eacoder.pheddles.com) and/or my website (http://pheddles.com).
-That you notify me (patty@pheddles.com) of any derivative works that you publish and/or host.
-That you freely publish code for any derivative works, and identify the code as such.
-That any derivative works carry these conditions in their licenses.

You don't need my permission before publishing and/or hosting a derivative work, though you do need to tell me when you do so. You don't need to tell me when you start hosting this version of EACoder, though I would like you to. I would like to link to mirrors of EACoder, to take the load off my server when there is a significant load. EACoder now uses very little memory, but it is CPU-intensive. Note that config.php offers options to limit the maximum image size allowed. This doesn't affect memory usage, but may be useful in minimising CPU load. For larger renders I recommend either EARender (which I use) or a locally-hosted instance of EACoder.

If you publish a significantly modified version of EACoder, please identify it with a custom version name. Note that $version is a string, and can quite easily be set to "Bob's variant 1.4" or similar.

If you use code from EACoder in a substantially different program (eg. an equation art animation program), feel free to name that program whatever you like (eg. EAnimate). The conditions above still apply.

===========
==Warning==
===========

EACoder works by executing user-entered code on the host server. This inherently poses a security risk. I have taken reasonable steps to secure the application against malicious use, but I cannot and do not guarantee that EACoder is secure.