package com.flagstone.cookbook;
/*
* BasicImage.java
* Cookbook
*
* Copyright (c) 2001-2010 Flagstone Software Ltd. All rights reserved.
*
* This code is distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, AND Flagstone HEREBY DISCLAIMS ALL SUCH
* WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
*/
import java.io.File;
import java.io.IOException;
import java.util.zip.DataFormatException;
import com.flagstone.transform.Background;
import com.flagstone.transform.Movie;
import com.flagstone.transform.MovieHeader;
import com.flagstone.transform.Place2;
import com.flagstone.transform.ShowFrame;
import com.flagstone.transform.datatype.Color;
import com.flagstone.transform.datatype.WebPalette;
import com.flagstone.transform.image.ImageTag;
import com.flagstone.transform.linestyle.LineStyle1;
import com.flagstone.transform.shape.ShapeTag;
import com.flagstone.transform.util.image.ImageFactory;
import com.flagstone.transform.util.image.ImageShape;
/*
* This example shows how image can be displayed using the ImageConstructor.
*
* To run this example, type the following on a command line:
*
* java -cp ... com.flagstone.cookbook.BasicImage image-file file-out
*
* where:
*
* image-file is the path to a file containing either BMP, PNG or JPEG
* image.
*
* file-out is the path where the file will be written. If no output file
* is specified then a file named after the example will be written to the
* current directory.
*/
public class BasicImage {
public static void main(String[] args) {
try {
String out = args.length == 1 ? "BasicImage.swf" : args[1];
BasicImage example = new BasicImage();
Movie movie = new Movie();
example.createMovie(movie, args[0]);
movie.encodeToFile(new File(out));
} catch (Exception e) {
e.printStackTrace();
}
}
public void createMovie(Movie movie, String imageFile)
throws DataFormatException, IOException {
int uid = 1;
/*
* Load the image and create the definition.
*/
final ImageFactory factory = new ImageFactory();
factory.read(new File(imageFile));
final ImageTag image = factory.defineImage(uid++);
/*
* Generate the shape that actually displays the image. The origin is
* in the centre of the shape so the registration point for the image
* is -width/2 -height/2 so the centre of the image and the shape
* coincide.
*/
final int xOrigin = -image.getWidth() / 2;
final int yOrigin = -image.getHeight() / 2;
final int width = 20;
final Color color = WebPalette.BLACK.color();
final ShapeTag shape = new ImageShape().defineShape(uid++, image,
xOrigin, yOrigin, new LineStyle1(width, color));
/***************************************************
* Put all the objects together in a movie
***************************************************/
MovieHeader header = new MovieHeader();
header.setFrameRate(1.0f);
header.setFrameSize(shape.getBounds());
movie.add(header);
movie.add(new Background(WebPalette.LIGHT_BLUE.color()));
movie.add(image);
movie.add(shape);
movie.add(Place2.show(shape.getIdentifier(), 1, 0, 0));
movie.add(ShowFrame.getInstance());
}
}