/*
 * $Id: DrawingWrap.java 3373 2008-05-12 16:21:24Z xlv $
 *
 * This code is free software. It may only be copied or modified
 * if you include the following copyright notice:
 *
 * --> Copyright 2006 by Mark Hall <--
 *
 * This code is part of the 'iText Tutorial'.
 * You can find the complete tutorial at the following address:
 * http://itextdocs.lowagie.com/tutorial/
 *
 * This code is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * [email protected]
 */
package com.lowagie.examples.rtf.features.shape;

import java.awt.Color;

import org.junit.Test;

import com.lowagie.text.Document;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfTestBase;
import com.lowagie.text.rtf.RtfWriter2;
import com.lowagie.text.rtf.graphic.RtfShape;
import com.lowagie.text.rtf.graphic.RtfShapePosition;
import com.lowagie.text.rtf.graphic.RtfShapeProperty;

/**
 * The DrawingWrap example demonstrates the different types of text wrapping
 * modes that are supported when generating RTF drawing objects. Also shown are
 * how to use the setBelowText and setZOrder methods for defining the z-order of
 * drawing objects.
 * 
 * @version $Revision: 3373 $
 * @author Mark Hall ([email protected])
 */
public class DrawingWrapTest {
	/**
	 * Demonstrates setting different text wrapping modes and the z-ordering.
	 * 
	 * 
	 */
	@Test
	public void main() throws Exception {

		Document document = new Document();
		RtfWriter2.getInstance(document, PdfTestBase.getOutputStream("DrawingWrap.rtf"));

		document.open();

		Paragraph par = new Paragraph();
		for (int i = 0; i < 600; i++) {
			par.add("bla ");
		}
		document.add(par);

		// Create a new rectangle RtfShape. By default it will be above the text
		RtfShapePosition position = new RtfShapePosition(1000, 1000, 2000, 2000);
		RtfShape shape = new RtfShape(RtfShape.SHAPE_RECTANGLE, position);
		document.add(shape);

		// Create a rounded rectangle RtfShape and position it below the text
		position = new RtfShapePosition(4000, 1500, 4500, 5000);
		position.setShapeBelowText(true);
		shape = new RtfShape(RtfShape.SHAPE_ROUND_RECTANGLE, position);
		shape.setProperty(new RtfShapeProperty(RtfShapeProperty.PROPERTY_ADJUST_VALUE, 4500));
		shape.setProperty(new RtfShapeProperty(RtfShapeProperty.PROPERTY_FILL_COLOR, Color.GRAY));
		document.add(shape);

		// Create a triangle RtfShape, around which text will wrap on both sides
		position = new RtfShapePosition(1500, 3000, 4000, 2500);
		shape = new RtfShape(RtfShape.SHAPE_TRIANGLE_RIGHT, position);
		shape.setWrapping(RtfShape.SHAPE_WRAP_BOTH);
		document.add(shape);

		// Create an elliptical RtfShape, around which text will only wrap on
		// the left side
		position = new RtfShapePosition(3000, 6000, 10500, 4500);
		shape = new RtfShape(RtfShape.SHAPE_ELLIPSE, position);
		shape.setWrapping(RtfShape.SHAPE_WRAP_LEFT);
		shape.setProperty(new RtfShapeProperty(RtfShapeProperty.PROPERTY_FILL_COLOR, Color.BLUE));
		document.add(shape);

		// Create a circular RtfShape and set its z-order to 1
		position = new RtfShapePosition(5850, 6800, 8200, 7250);
		position.setZOrder(1);
		shape = new RtfShape(RtfShape.SHAPE_ELLIPSE, position);
		shape.setProperty(new RtfShapeProperty(RtfShapeProperty.PROPERTY_FILL_COLOR, Color.RED));
		document.add(shape);

		// Create a star RtfShape and set its z-order to 2, above the circle
		// defined above
		position = new RtfShapePosition(6000, 7000, 8000, 7000);
		position.setZOrder(2);
		shape = new RtfShape(RtfShape.SHAPE_STAR, position);
		shape.setProperty(new RtfShapeProperty(RtfShapeProperty.PROPERTY_FILL_COLOR, Color.YELLOW));
		document.add(shape);

		document.close();
	}

}