blob: 151ba8d1dd2d788c11fe9031730022755348efc4 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* $Id$ */
package image.loader;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.Rectangle2D;
import javax.swing.JPanel;
import org.apache.xmlgraphics.image.loader.impl.ImageGraphics2D;
import org.apache.xmlgraphics.java2d.Graphics2DImagePainter;
/**
* Viewer frame for the image viewer.
*/
public class ViewerFrame extends Frame {
public static final String TITLE = "Very Simple Image Viewer";
public ViewerFrame(ImageGraphics2D g2dImage) {
super(TITLE);
addWindowListener(new WindowHandler());
buildGUI(g2dImage);
setSize(500, 400);
}
private void buildGUI(final ImageGraphics2D g2dImage) {
JPanel imagePanel = new JPanel() {
/** {@inheritDoc} */
protected void paintComponent(Graphics graphics) {
super.paintComponent(graphics);
Graphics2D g2d = (Graphics2D)graphics.create();
try {
Rectangle paintRect = new Rectangle(
30, 30,
getWidth() - 60, getHeight() - 60);
//g2d.translate(paintRect.getX(), paintRect.getY());
Graphics2DImagePainter painter = g2dImage.getGraphics2DImagePainter();
Dimension dim = painter.getImageSize();
double sx = paintRect.getWidth() / dim.getWidth();
double sy = paintRect.getHeight() / dim.getHeight();
//g2d.scale(sx, sy);
/*
Rectangle2D targetRect = new Rectangle2D.Double(
paintRect.x * sx, paintRect.y * sy,
dim.width, dim.height);
*/
Rectangle2D targetRect = new Rectangle2D.Double(
paintRect.x, paintRect.y,
paintRect.width, paintRect.height);
g2d.draw(targetRect);
painter.paint(g2d, targetRect);
} finally {
g2d.dispose();
}
}
};
add("Center", imagePanel);
}
private class WindowHandler extends WindowAdapter {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
}
}