/*
* Tiled Map Editor, (c) 2004-2006
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* Adam Turk <aturk@biggeruniverse.com>
* Bjorn Lindeijer <bjorn@lindeijer.nl>
* Rainer Deyke <rainerd@eldwood.com>
*/
package tiled.mapeditor.widget;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import tiled.view.MapView;
public class MiniMapViewer extends JPanel
{
/**
*
*/
private static final long serialVersionUID = -1243207988158851225L;
public static final int MAX_HEIGHT = 150;
private MapView myView;
private JScrollPane mainPanel;
private double scale = 0.0625;
private BufferedImage renderedMap;
public MiniMapViewer() {
setSize(MAX_HEIGHT, MAX_HEIGHT);
}
public MiniMapViewer(MapView view) {
this();
setView(view);
}
public void setView(MapView view) {
myView = view;
myView.setZoom(scale);
Dimension d = myView.getPreferredSize();
renderedMap = new BufferedImage(d.width, d.height, BufferedImage.TYPE_INT_ARGB);
//scale = MAX_HEIGHT / (double)d.height;
Graphics2D g = renderedMap.createGraphics();
g.setClip(0, 0, d.width, d.height);
myView.paint(g);
}
@Override
public Dimension getPreferredSize() {
if(myView != null) {
return myView.getPreferredSize();
}
return new Dimension(0, 0);
}
public Dimension getPreferredScrollableViewportSize() {
return getPreferredSize();
}
public void setMainPanel(JScrollPane main) {
mainPanel = main;
}
public void refresh() {
if(renderedMap != null && myView != null) {
Dimension d = myView.getPreferredSize();
Graphics2D g = renderedMap.createGraphics();
g.setClip(0, 0, d.width, d.height);
myView.paint(g);
}
}
@Override
public void paint(Graphics g) {
/*if (myView != null) {
myView.paint(g);
}*/
if(renderedMap != null) {
g.drawImage(renderedMap, 0, 0, null);
}
if (mainPanel != null) {
g.setColor(Color.yellow);
Rectangle viewArea = mainPanel.getViewport().getBounds();
//Rectangle viewArea = mainPanel.getViewportBorderBounds();
if (viewArea != null) {
//System.out.println(viewArea.x+","+viewArea.y);
g.drawRect(
(int)((viewArea.x-1) * scale),
(int)((viewArea.y-1) * scale),
(int)((viewArea.width-1) * scale),
(int)((viewArea.height-1) * scale));
}
}
}
}