TextEffect Demo

What Is It

This models a few different implementations of the TextEffect class.

How To Use It

The following code creates a simple animation that repeats from 0% to 100% every one second (assuming you continually repaint):

TextEffect effect = new PunchTextEffect(font, text,
		width, height, fillColor, shadowColor);

float fraction = ((float)(System.currentTimeMillis()%1000)) / 1000f;
effect.paint(g, fraction);

How It Works

The TextEffect interface is roughly modeled after the Transition interface:

/** This is a common interface for visual text effects. */
public interface TextEffect {

	/**
	 * Paint this effect.
	 * 
	 * @param g
	 *            the Graphics2D to paint to.
	 * @param fraction
	 *            a float from [0, 1] indicating how
	 *            far along this effect it.
	 */
	public void paint(Graphics2D g, float fraction);

	/**
	 * An optional method to retrieve the preferred size.
	 * May return null.
	 */
	public Dimension getPreferredSize();
}

These effects started with the CalligraphyStroke. That stroke helped make easy work of the BlockLetter class, which is used to add a simple 3D-ish depth to letters (as seen in the punch and explode effects).

The outline effect uses the Scribbler class to add a little chaos into the mix.

The writing effect is a complete departure from everything else. This uses a WritingFont object, which is a font rendered with a constant java.awt.Stroke where the order of each stroke is preserved. This has to be input by hand (I wrote a special editor app to design these). So far I've implemented one font based on Comic Neue, and another based on some simple calligraphic tutorials.

All of these ‐ especially the writing fonts ‐ can be improved. To date I haven't deployed these in a commercial project, though, so they're low on my priority list. I have, however, implemented a set of text effect animations for a commercial product (flying in text, flipping text, etc.), but that code/project is not open source.