My favorites | Sign in
Project Home Downloads
Search
for
ToDos  
A backlog of things to do for WordCram
Phase-Requirements
Updated Mar 21, 2011 by danbernier@gmail.com

Documentation and Examples

Installation documentation (like a standard Processing library)

Create more examples, and get them into the downloads.

JavaDoc! Put it in the code, and put it in the ant script. Generate it into a reference folder, with an index.html, per the library guidelines.

Generate wiki-page documentation for WordPlacers, WordColorers, etc, from javadoc comments? Auto-deploy them to the wiki svn?

Make a WordCram API cheat-sheet.

Tutorial/blog post/example sketches on:

  • Word.setSize(), Word.setPlace(), etc.
  • Word.getRenderedPlace() vs Word.getTargetedPlace() for troubleshooting, too

WordCrams to Create

Beatles lyrics, the US Constitution, popular baby names, Apache license, The Cathedral and the Bazaar, The Art of Unix Programming

A Blog header from WordCram's source. The odd dimensions will be a good test, and it'll require a text provider that can parse out Java words (variable names, methods, classes, etc) -- along with java stop words. Throw in the example sketches and wiki pages. This is all set, except it needs a TextSource for loading a source folder of java files. Once that's in place, the example can be included with the rest of them, and this can be crossed off.

Plug-in Improvements

Color

Pick some really nice default fonts & colors for demos. Look at colourlovers.com.

Colorers something like http://colorschemedesigner.com's Mono(hue), Complement(hue), Triad(hue, offsetAngle), etc.

Auto-Angler

An auto-angler that decides whether to rotate a word or not, based on the destination's aspect ratio. If it's wide & short, longer words will be horizontal; if it's tall & narrow, longer words will be vertical. Short words will be random.

double aspect = width / height;
double lenPercentile = maxWordLen / thisWordLen;
//...not sure of the math here, work it out

Placers

A placer that renders bigger words horizontally by weight, and vertically close to the bottom -- should produce a right triangle w/ the right angle in the bottom left.

Text Sources

new DeliciousTagsTextLoader(username), new RssTextLoader(url), new HtmlTextLoader(url), new TwitterStreamTextLoader(twitterer), new JavaSourceCodeTextLoader(srcDir)

Not sure of this one: API change for TextSources: move WordCram methods include/excludeNumbers, withStopWords, and upper/lower/keepCase onto the TextSource. Rather than WordCram's fromWebPage() and fromTextFile(), it'd just have fromTextSource(new TextFile(path, this).excludeNumbers().upperCase()). Well, that last part sucks. Maybe not.

Text parsing options: case-sensitivity, and whether numbers are included.

Make a standard text format for saving (and re-loading) Words, so you can generate your word weights once, and store it (for faster applets).

Core Improvements

Layout

Get the words to render closer to where the Placer places them. Right now, the PImage the word is rendered to is so large (to account for rotated words), that there's a lot of background color between the point and the first pixels of the word. This makes it harder to effectively code up a WordPlacer, and get the output you want. DONE: switched to java.awt.Shapes, which take up minimal room.

Move around rendering process -- separate word placement from word rendering, and render as late as possible. Cleaner organization, and will let words be re-colored without being placed again, or re-laid out without being Shaped again.

Keep words from going off-screen. Scale the window (somehow) to fit words in, when they run off-screen. There's some basic bounds-checking now, but it could be a lot better.

Try changing the color scheme AFTER rendering it, without totally re-rendering. Try re-laying out words with the same settings.

Arbitrary shapes, like tagxedo.com.

Performance

When placing a word, remember which quadrant it's in. When checking for colliding words, check the appropriate quadrant first, to speed things up.

Parameterize minShapeSize. WordCram.minShapeSize(n)

Give WordCram a "max number of words to draw" parameter. WordCram.maxNumberOfWordsToDraw(n)

API

Give WordCram a fluent builder interface (in addition to the huge one already there), with sensible overloads (varargs) and sensible defaults.

Add more overloads to the fluent builder API.

Let users pass a destination PGraphics to WordCram, so it can go to something other than the host PApplet. Thanks, Felix!

Fix up printSkippedWords so it's clearer. Renamed it printWhenSkippingWords, and clarified the javadoc.

Add a method to get the Word at the given (x,y) coordinates. Done, with a naive implementation, without memoization. Seems fast enough for now. If it becomes too slow, try a quad-tree.

Provide a way to set/get properties on Words, so you don't have to sub-class Word for simple things. Word.getProperty and Word.setProperty.

Building WordCram

GZip the tar downloads.

Better unit tests: use Mockito? In progress


Sign in to add a comment
Powered by Google Project Hosting