import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.font.*;

public class StillLife extends Canvas {

    public StillLife() {
	setBackground(Color.white);
    }

    public void paint(Graphics g) {
        Graphics2D g2;
        g2 = (Graphics2D) g;

        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                            RenderingHints.VALUE_ANTIALIAS_ON);

        g2.setRenderingHint(RenderingHints.KEY_RENDERING,
                            RenderingHints.VALUE_RENDER_QUALITY);

        int w = getSize().width;
        int h = getSize().height;

	AffineTransform at = new AffineTransform();
	at.setToTranslation(30, 50);
        AffineTransform fontAT = new AffineTransform();
	fontAT.shear(0.2, 0.0);

        FontRenderContext frc = g2.getFontRenderContext();
        Font theFont = new Font("Times", Font.BOLD, w/25);
        String s = new String("Still Life with Text");
        TextLayout tstring = new TextLayout(s, theFont, frc);

        Font theDerivedFont = theFont.deriveFont(fontAT);
	String str = new String("Still Life with Slanted Text");
	TextLayout tstring2 = new TextLayout(str, theDerivedFont, frc);

//Draw regular string
	g2.setColor(Color.blue);
        g2.transform(at);
        tstring.draw(g2, (float)0, (float)0);

//Draw string with shear transformation on the font
	g2.setColor(Color.green);
        g2.transform(at);
	tstring2.draw(g2, (float)0, (float)0);

    }

    public static void main(String s[]) {
        WindowListener l = new WindowAdapter() {
            public void windowClosing(WindowEvent e) {System.exit(0);}
            public void windowClosed(WindowEvent e) {System.exit(0);}
        };

        Frame f = new Frame("2D Text");
        f.addWindowListener(l);
        f.add("Center", new StillLife());
        f.pack();
        f.setSize(new Dimension(600, 175));
        f.show();
    }
}

