160 lines
4 KiB
Java
160 lines
4 KiB
Java
import java.awt.*;
|
|
import java.awt.image.*;
|
|
import java.awt.event.*;
|
|
import javax.swing.*;
|
|
import javax.imageio.*;
|
|
import java.io.*;
|
|
|
|
|
|
class Bild extends JComponent {
|
|
Datei file;
|
|
BMPHexEditor parent;
|
|
Image image;
|
|
int zoom=100;
|
|
int posx =2;
|
|
int posy =2;
|
|
|
|
|
|
/*
|
|
class myKeyListener implements KeyListener
|
|
{
|
|
public void keyPressed( KeyEvent k )
|
|
{
|
|
int iHeight = getSize().height;
|
|
|
|
if (k.getKeyCode()==8) delete(-1);
|
|
if (k.getKeyCode()==127) delete(0);
|
|
if (k.getKeyCode()==37) movePos(-1);
|
|
if (k.getKeyCode()==39) movePos(1);
|
|
if (k.getKeyCode()==38) movePos(-proZeile);
|
|
if (k.getKeyCode()==40) movePos(proZeile);
|
|
if (k.getKeyCode()==33) movePos(-proZeile*(iHeight/hoehe));
|
|
if (k.getKeyCode()==34) movePos(proZeile*(iHeight/hoehe));
|
|
|
|
}
|
|
public void keyReleased(KeyEvent k){}
|
|
|
|
public void keyTyped(KeyEvent k){
|
|
// System.out.println( "Typed:"+k.getKeyCode()+"|"+k.getKeyChar() );
|
|
switch(modus) {
|
|
case 1: {
|
|
if (k.getKeyChar()>='0' && k.getKeyChar()<='1') modifyByte(k.getKeyChar());
|
|
break;
|
|
}
|
|
case 2: {
|
|
if (k.getKeyChar()>='0' && k.getKeyChar()<='9') modifyByte(k.getKeyChar());
|
|
if (k.getKeyChar()>='a' && k.getKeyChar()<='f') modifyByte(k.getKeyChar());
|
|
if (k.getKeyChar()>='A' && k.getKeyChar()<='F') modifyByte(k.getKeyChar());
|
|
break;
|
|
}
|
|
default: {
|
|
if (k.getKeyCode()!= 127) modifyByte(k.getKeyChar());
|
|
}
|
|
}
|
|
}
|
|
} */
|
|
|
|
class myMouseListener implements MouseListener
|
|
{
|
|
public void mouseClicked( MouseEvent e )
|
|
{
|
|
|
|
}
|
|
public void mouseExited(MouseEvent e) {
|
|
}
|
|
public void mouseEntered(MouseEvent e) {
|
|
}
|
|
public void mousePressed(MouseEvent e) {
|
|
setPos((e.getX()-10)*100/zoom+1,(e.getY()-10)*100/zoom+1 );
|
|
parent.posClicked(posx, posy);
|
|
}
|
|
public void mouseReleased(MouseEvent e) {
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
public Bild(BMPHexEditor p){
|
|
super();
|
|
parent = p;
|
|
file = null;
|
|
image = null;
|
|
// addKeyListener(new myKeyListener());
|
|
addMouseListener(new myMouseListener());
|
|
}
|
|
|
|
public void paint(Graphics g){
|
|
int iWidth = getSize().width;
|
|
int iHeight = getSize().height;
|
|
|
|
|
|
if (file != null && image != null) {
|
|
g.drawImage(image,10,10, this);
|
|
g.drawRect(9,9,image.getWidth(this)+2,image.getHeight(this)+2);
|
|
if (posx >=0 && posy >= 0) {
|
|
g.setColor(Color.red);
|
|
g.fillRect((posx+1)*zoom/100+10,(posy-1)*zoom/100+10,4*zoom/100,zoom/100);
|
|
g.fillRect((posx-1)*zoom/100+10,(posy+1)*zoom/100+10,zoom/100,4*zoom/100);
|
|
g.fillRect((posx-6)*zoom/100+10,(posy-1)*zoom/100+10,4*zoom/100,zoom/100);
|
|
g.fillRect((posx-1)*zoom/100+10,(posy-6)*zoom/100+10,zoom/100,4*zoom/100);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void setDatei(Datei file) {
|
|
this.file = file;
|
|
try {
|
|
image = ImageIO.read(new ByteArrayInputStream(file.getByteArray()));
|
|
image = image.getScaledInstance(image.getWidth(this)*zoom/100,image.getHeight(this)*zoom/100,Image.SCALE_DEFAULT);
|
|
} catch (Exception e) {
|
|
// TODO Auto-generated catch block
|
|
// System.out.println("Bild kann nicht geladen werden oder ist nicht korrekt");
|
|
image = null;
|
|
}
|
|
|
|
}
|
|
|
|
public void setZoom(int z) {
|
|
zoom = z;
|
|
setDatei(file);
|
|
}
|
|
|
|
public void setPos(int x, int y) {
|
|
posx = x;
|
|
posy = y;
|
|
repaint();
|
|
}
|
|
|
|
public Dimension getPreferredSize()
|
|
{
|
|
|
|
if (file == null || image == null)
|
|
{
|
|
return new Dimension( 300, 200 );
|
|
}
|
|
else
|
|
{
|
|
|
|
return new Dimension( image.getWidth(this)+20,image.getHeight(this)+20);
|
|
|
|
}
|
|
}
|
|
|
|
public Dimension getMinimumSize()
|
|
{
|
|
return getPreferredSize();
|
|
}
|
|
|
|
|
|
|
|
public void keyPressed ( KeyEvent e){
|
|
}
|
|
public void keyReleased ( KeyEvent e ){
|
|
}
|
|
|
|
public boolean isFocusable() {
|
|
return true;
|
|
}
|
|
|
|
}
|