From Context Free Art
First Things First
Context Free is free and made available under the Gnu Public License.
If you really like it, we'd like you to donate US$20 to the Electronic Frontier Foundation.
Download & Install
Version 3 is in beta release now. Unless you specifically need version 2.2.2, we suggest that you get version 3.
Windows
Context Free 3.0beta2 (v26) (20M) for Windows XP and later. The download file is an executable installer, just run it. This installer will try to install the Visual Studio 2010 (SP1) runtime libraries in your system directory. .Net Framework 4 is required to run. The installer will warn you if you don't have .Net4. Get it here if you need to install it.
Macintosh OS X
Context Free 3.0beta2 (v30) (757k) for Mac OS X 10.4 and later. Just copy the application from the disk image to your Applications folder. PPC support has been dropped.
Posix / Unix / BSD / Linux
Download the source code and build using make. You'll need a C++ compiler, flex (not lex), bison, and the libpng graphics library (not just runtime support, the whole developer package). Most of this should be installed or easily available on any modern operating system distribution. See the README.txt file in the source for build and run instructions:
ContextFree 3.0beta2 compressed tarball (v14) (1.8M)
ContextFree 3.0beta2 compressed zip file (v14) (2.1M)
The lastest developer release can be obtained from the Mercurial repository at Google Code:
hg clone https://code.google.com/p/context-free/ CF3
This beta release can be obtained via the Version3beta2again tag.
hg clone -b Version3beta2again https://code.google.com/p/context-free/ CF3beta2
New Features
Go to the CFDG Introduction page for a detailed descriptions of the new features. Here is a summary:
- Parameters for rules and paths (which can be numbers, shape adjustments, or shape specifications)
- Random number function that has a different value each time a rule is executed.
- Local and global variables
- Loop variables
- Loop finally blocks, executing code at the tail end of a loop
- Conditional expressions: the select() and if() functions. It works like the C ?: operator, but over multiple values
- Conditional code: switch statements and if statements
- Included files can be placed in their own namespace to prevent name collisions
- Numeric parameters are restricted to prevent creation of context-sensitive grammars
- The color target feature has been replaced with something that provides the same benefit but is less confusing.
- Shape time, allows you to specify which frames a shape is visible in during movie generation
- New FILL primitive shape, fills the canvas with the specified color at the specified Z. Similar to the background, but you can interleaves shapes and FILLs in Z.
- 16-bit colors
- Compiler and run-time messages now have a window instead of flying by on the status bar
- Remembers window size
- time() function, allows shapes to change from frame to frame in a movie
- 64-bit
- User-defined functions
- More symmetry options: 1-dimensional tiling and frieze groups, rotational and dihedral symmetry
Known Issues
-
Movie length/frame-rate cannot be changed from 10sec/15fps on Windows
-
Forgot to issue warnings when variables have the same name
-
Menu bar can be too dark in some themes in Windows
-
Get's confused by path that are really big and may decide to not draw them
-
Colors are inverted for 24-bit color animation under Windows
-
Mac binary is 32-bit only
Legacy Download for Version 2.2.2
Windows
Context Free 2.2.2 (v20) (3.1M) for Windows 98 and later. The download file is an executable installer, just run it. This installer will try to install the Visual Studio 2005 (SP1) runtime libraries in your system directory.
Windows Stand-alone and Command line
If you do not have write access to your system directory or if you want to install a stand-alone copy of Context Free to removable media (a CD or a USB drive for example) then use this zip file: Context Free 2.2.2 stand-alone (v20) (2M) This zip file puts the required libraries in the same directory as Context Free (like v2.0 did). Both installations work, but it is better to put the libraries in the system directory if you can. The zip file also contains a Windows command line version of Context Free, ContextFreeCLI.exe (v11).
The stand-alone version is not completely stand-alone: you must have .Net 2.0 installed. If the stand-alone version won't run (error 0xc0000135 or dll error), then download the .Net 2.0 installer here and then run Windows Update.
Macintosh OS X
Context Free 2.2.2 (v25) (627k) for Mac OS X 10.3.9 and later. Just copy the application from the disk image to your Applications folder.
Posix / Unix / BSD / Linux
Download the source code and build using make. You'll need a c++ compiler, flex (not lex), bison or yacc and the libpng graphics library (not just runtime support, the whole developer package). Most of this should be installed or easily available on any modern operating system distribution. See the README.txt file in the source for build and run instructions.
Debian
User bram has created a Debian package. Debian users can install this package instead of compiling the source.
# apt-get install contextfree
Graphical Front-ends for Linux
There are graphical front-ends for the command-line version, cfdg, under Linux. Details can be found at the Linux GUI page.
Source Code
ContextFree compressed tarball (1.5M)
ContextFree zip archive (1.8M)
You can use darcs and just pull the latest repository of code:
darcs get http://www.contextfreeart.org/repos/ContextFree2.2.2/
or use Mercurial to get it from code.google.com
hg clone https://code.google.com/p/context-free.version2/ CF2
Change Log
v3 - January 2012
- Parameters for rules and paths (which can be numbers, shape adjustments, or shape specifications)
- Random number function that has a different value each time a rule is executed.
- Local and global variables
- Loop variables
- Loop finally blocks, executing code at the tail end of a loop
- Conditional expressions: the select() and if() functions. It works like the C ?: operator, but over multiple values
- Conditional code: switch statements and if statements
- Included files can be placed in their own namespace to prevent name collisions
- Numeric parameters are restricted to prevent creation of context-sensitive grammars
- The color target feature has been replaced with something that provides the same benefit but is less confusing.
- Shape time, allows you to specify which frames a shape is visible in during movie generation
- New FILL primitive shape, fills the canvas with the specified color at the specified Z. Similar to the background, but you can interleaves shapes and FILLs in Z.
- 16-bit color depth
- M, W: Compiler and run-time messages now have a window instead of flying by on the status bar
- M, W: Remembers window size
- time() function, allows shapes to change from frame to frame in a movie
- 64-bit
- User-defined functions
- More symmetry options: 1-dimensional tiling and frieze groups, rotational and dihedral symmetry
v2.2.2 - September 2010
- Bug Fixes:
- M: Fix display error on Mac OS x 10.6 (Snow Leopard)
- M: Fix code for handling non-ASCII characters in file names.
- W: Restore Find/Replace function that was accidentally dropped in version 2.2
- W: Remember window size.
v2.2.1 - August 2009
- Bug Fixes:
- Typos in path operation and commands will be flagged as such.
- W: When uploading to the gallery the actual contents of the cfdg editor window will be uploaded.
- W: Crash during upload to gallery under Windows 7 is fixed.
- W: Layout errors under Windows 7 in the Save Image and Save Movie dialogs fixed.
- P: PNG file colors are not pre-multiplied against the alpha channel.
v2.2 - January 2009
- Optional size directive lets you crop your design
- Paths for user-defined primitive shapes
- Expressions
- Extensions to Loops
- Mac and Windows clients support 6-letter variation codes
- New client for the Windows command line
- Windows client ported from MFC framework to .NET 2.0 framework, should compile with (free) Visual Studio Express 2005
- Ability to set a Creative Commons license for use when uploading designs
- Stronger random number generator used for picking random variations
- Quiet mode for Posix and Windows command line clients suppress non-error output
- Option to insert variation code in output file names and also to change how animation frame numbers are inserted
- Included file names can be in double quotes, which allows for spaces in file names and file names that do not end in .cfdg
- SVG file shapes are flattened so that they can be edited in Inkscape
- Disappearing Features==
- Rule names cannot contain '-' or '.'
- Rule names cannot begin with a digit
- The following rules names are no longer allowed: path, MOVETO, LINETO, ARCTO, CURVETO, MOVEREL, LINEREL, ARCREL, CURVEREL, and CLOSEPOLY, x1, x2, y1, y2, rx, ry, p, param, width
- Included file names must end with a .cfdg extension, be in the same directory as the original cfdg file, and contain no spaces, unless the file name is in double quotes
- Bug Fixes
- variation code spinner control wraps properly between variation A and variation ZZZZZZ
- i_curves.cfdg rule names are now legal
- very large shapes were not tiling properly
- variations work the same on big-endian (PowerPC) and little-endian (x86) systems. Big-endian variations are still available.
- Proper GPLv2 copyright notices are present in all files
- QuickTime movies with transparent backgrounds work
- Propagated alpha computation fix from 32-bit pixel formats to 24 and 8-bit pixel formats
- Some warnings generated by GCC 4.3 have been fixed
- Very large bezier curves do not blow up the memory requirements
- W: tiled animations were not working
- P: crash case on malformed cfdg files from standard input fixed
- Known Issues
- If you have a typo in a path operation or path command (e.g., moveto instead of MOVETO) then it will be treated as a FILL path command. The proper treatment should be to list it as an unrecognized path operation/command.
- W: When uploading to the gallery, if you change the cfdg text in the edit window after rendering then the changed text will not be uploaded to the gallery. Context Free under Windows takes a snap-shot of the cfdg text each time it is rendered and this snap-shot is what is uploaded. The work-around is to re-render before uploading to the gallery.
- W: Crashes during upload to gallery under Windows 7 RC1. This will probably force a minor release.
- P: Images with transparent backgrounds are stored in the PNG file with pre-multiplied alpha, but the PNG specification says to use non-premultiplied alpha.
v2.1 - April 2007
- Tiled rendering for cfdg mosaics
- W,M Tiled cfdgs will display as tiled
- W,M If the tile transform is skewed then Context Free can save a superset of the tile unit to form a rectangular grid
- P You can pipe a cfdg file into cfdg on stdin
- P cfdg uses 6 letter variation codes, Context Free still uses 3 letter codes
- W,M You can upload directly from Context Free to the gallery site
- W The color calculator is completely revamped to be easier to use (and the code is less hideous now)
- W Instead of installing a local copy of the runtime DLLs (always a bad idea), the Windows runtime installer is executed from the Context Free installer
- Only generates 32-bit PNG files if the background is non-opaque, otherwise generates 8- or 24-bit PNG files
- Upgraded from AGG 2.3 to AGG 2.5
- Bug Fixes
- non-opaque shapes composited correctly
- startshape, tile, and background directives after the first are now ignored
- M Fixed URLs in help menu
- P Makefile fixes for various Unix/Linux
- W Fixed bug in registration of .cfdg file extension
- W,M cfdg files with spaces in the file name can be uploaded
v2.0 - September 2006
- New output formats: QuickTime movies, SVG vector graphics, and JPEG (Windows only)
- Ability to control size of border around images
- Z-axis support for controlling which shapes go on top and which go behind.
- Simple loop syntax to eliminate tedious repetition of shapes
- More predictable rendering algorithm: always renders the largest shape
- Performance improved by profiling and refactoring
- W Migrated to Visual Studio 2005
- Bug fixes:
- Transparent backgrounds are now handled correctly
- Doesn't crash with infinitely increasing cfdg files
- Variations are now consistent across all platforms and compilers
- W Cropped image save works
- W Find/Replace works
- M dialog edit control bug fixed
- M SVG file save works
v1.2 - September 2005
- Fixed shape render ordering bug when shapes spill to temporary files.
- W Fixed PNG save file name issues with non-English versions of Windows.
v1.2 experimental - July & August 2005
- Support for color and alpha: See Announcements forum for details
- Welcome.cfdg colorized
- Added Rose.cfdg color example
- Optimized finished shape memory usage (faster temporary file operations)
- Fixed bugs in rendering size adjustment which caused some ellipses to look like polygons, and some shapes to not align correctly
- W,M Added Color Picker / Calculator for helping to compute color adjustment values
- M Temporary fix for Render with dimensions dialog bug: Removed thousands separator.
- Fixed bug in hue conversion that caused black shapes. (fixed 7/28)
- changes in August 5th update:
- Black shape bug fixed
- Added background syntax
- Removed '=' syntax for hue, sat, brightness, and alpha
- Added limit syntax for hue, sat, brightness, and alpha
- Removed startshape parameters
- W Color Picker matches same functionality of Mac Color Calculator
v1.1 - July 2005
- Simple adjustment code replaced with general affine transform code and new transforms added: anisotropic scaling, skew (shear), and reflection
- New syntax for controlling the order that the affine transforms are applied
- Equilateral triangles added
- Circle/ellipse code sped-up
- Digits added to i_pix.cfdg, Chris' i_polygons.cfdg added
- W,M Lesson files put in Help menu as well
- W New status icon
- W Opening a given example twice gives the second a unique name
- P Missing include files added
v1.0.3 - June 2005
- W Fixed a crash when trying to open a non-existent file
- W Opening examples no longer affects the recently-used files list
v1.0.2 - May 2005
- W Fixed some crashes with Untitled and unrendered documents
- W Increated max image size to 32768x32768 pixels
v1.0 - May 2005
- Rendering with the Anti-Grain Geometry library: Looks equally incredible on all platforms!
- Fix bug when no shapes are rendered: reported image size is reasonable
- Images properly centered in all cases on all platforms
- W Better display of generated images that are larger than the window
- W Empty documents don't try to auto-render
- W Smooth drawing during window resize
- W Render-to-size settings are now persistent
- P Oversampling (-x) option removed, as AGG rendering is anti-aliased
- P Fixed bug with height option (-h), it now works
- P Build is optimized (-O3)
v0.9 beta2 - May 2005
- W Fixed error in coordinate handling that incorrectly cropped images
- W Cropping is now a rendering option, not a save option
- W Fixed bug in MDI framework code
- W Significant performance and UI enhancements when rendering very large images
v0.9 beta - May 2005
- Improved temp file handling and reporting
- Report syntax errors in libraries with correct line number
- Fine tuning of rendering operations for each platform
- Many more examples
- W,M On syntax error: high-light line with error
- W,M New application icon (subtle)
- M About box links now work
- M Rendering dimensions must now be at least 32x32
- W On Windows XP, use new user interface look
- W MDI application with tabbed interface
- W Support open documents from Explorer when already running
- W Top bar dynamically adjusts
- W Render with GDI+, looks much better and huge dimensions work (we've done 10k x 10k!)
- W Variation controls
- W Rendering commands (menus, context menus, dialogs) improved
- W Image cropping option on save
- W Added user preferences
- W Integration with shell finally works
- P Anti-aliasing via over-sampling
- P New command line processing and options: save cropped, over-sample rate & variation code
v0.2.2 alpha - May 2005
- W Fixed failure to load on Windows 98/Me
- M Fixed crash on second "Save Image" command
- M Show cropped image size in status bar
- M Added "Send Feedback..." to Help menu
- Improved cropped rectangle calculation