20 package net.sf.gridarta.gui.misc;
22 import java.awt.Color;
23 import java.awt.Component;
24 import java.awt.Dimension;
25 import java.awt.Graphics;
26 import java.awt.Image;
27 import java.awt.image.BufferedImage;
28 import java.awt.image.RenderedImage;
30 import java.io.IOException;
31 import javax.imageio.ImageIO;
32 import javax.swing.JComponent;
33 import javax.swing.JFileChooser;
34 import javax.swing.JFrame;
35 import javax.swing.JScrollPane;
36 import javax.swing.WindowConstants;
38 import net.
sf.japi.swing.action.ActionBuilder;
39 import net.
sf.japi.swing.action.ActionBuilderFactory;
40 import net.
sf.japi.swing.action.ActionMethod;
41 import org.jetbrains.annotations.NotNull;
62 private static final ActionBuilder
ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder(
"net.sf.gridarta");
112 width = image.getWidth(
this);
113 height = image.getHeight(
this);
115 setBackground(
new Color(255, 255, 255, 0));
116 frame =
new JFrame(
"Map Previewer");
123 frame.setJMenuBar(ACTION_BUILDER.createMenuBar(
false,
"zoomBar",
this));
124 final Component scroll =
new JScrollPane(
this);
125 scroll.setFocusable(
true);
127 frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
129 frame.setVisible(
true);
138 public void zoom0() throws OutOfMemoryError {
148 public void zoom12() throws OutOfMemoryError {
158 public void zoom25() throws OutOfMemoryError {
168 public void zoom50() throws OutOfMemoryError {
178 public void zoom100() throws OutOfMemoryError {
188 public void zoom150() throws OutOfMemoryError {
198 public void zoom200() throws OutOfMemoryError {
208 public void zoom250() throws OutOfMemoryError {
218 public void zoom300() throws OutOfMemoryError {
228 public void zoom400() throws OutOfMemoryError {
239 public void zoomSave() throws IOException, OutOfMemoryError {
240 final JFileChooser chooser =
new JFileChooser();
242 if (chooser.showSaveDialog(frame) == JFileChooser.APPROVE_OPTION) {
243 final File file = chooser.getSelectedFile();
244 if (!file.exists() || ACTION_BUILDER.showQuestionDialog(
this,
"overwriteOtherFile", file)) {
245 final RenderedImage img;
246 if (image instanceof RenderedImage) {
247 img = (RenderedImage) image;
249 final BufferedImage img2 =
new BufferedImage(image.getWidth(
this), image.getHeight(
this), BufferedImage.TYPE_INT_ARGB);
250 final Graphics g = img2.getGraphics();
258 ImageIO.write(img,
"png", file);
328 private void setScale(
final double scale)
throws OutOfMemoryError {
329 width = (int) ((
double) original.getWidth(
this) * scale);
330 height = (int) ((
double) original.getHeight(
this) * scale);
339 private void setScale(
final int width,
final int height) {
359 private void rescale() throws OutOfMemoryError {
361 image = original.getScaledInstance(width, height, algorithm);
362 }
catch (
final OutOfMemoryError e) {
364 width = image.getWidth(
this);
365 height = image.getHeight(
this);
368 setPreferredSize(
new Dimension(width, height));
370 if (image == original) {
379 super.paintComponent(g);
380 g.drawImage(image, 0, 0,
this);
final JFrame frame
The preview frame.
void zoom0()
Zoom to 24x24.
static final long serialVersionUID
The serial Version UID.
void zoom12()
Zoom to 12.5%.
void zoom400()
Zoom to 400%.
int width
The currently used width.
void zoom300()
Zoom to 300%.
void zoom25()
Zoom to 25%.
void zoom50()
Zoom to 50%.
void zoomAlgSmooth()
Zoom Algorithm: Smooth.
void zoomAlgAreaAveraging()
Zoom Algorithm: Area Averaging.
Base package of all Gridarta classes.
void zoomAlgDefault()
Zoom Algorithm: Default.
Utility class defining FileFilters.
static final FileFilter PNG_FILE_FILTER
Swing FileFilter for png graphics.
void setScale(final int width, final int height)
Set the scale factor to a specific size.
void setAlgorithm(final int algorithm)
Set the algorithm.
final Image original
The original image.
void rescale()
Recalculate the image.
void setScale(final double scale)
Set the scale factor to be used for displaying the image.
void zoomAlgFast()
Zoom Algorithm: Fast.
void zoom100()
Zoom to 100%.
void zoom150()
Zoom to 150%.
Image image
The currently displayed image.
int algorithm
The currently used algorithm.
int height
The currently used height.
void zoom200()
Zoom to 200%.
MapPreview(@NotNull final Image original)
Constructs the user interface.
void paintComponent(@NotNull final Graphics g)
static final ActionBuilder ACTION_BUILDER
Action Builder.
void zoomAlgReplicate()
Zoom Algorithm: Replicate.
The map preview of the level editor.
void zoomClose()
Close the preview.
void zoom250()
Zoom to 250%.
void zoomSave()
Zoom save.