package com.roboclub.robobuggy.ui;
import com.roboclub.robobuggy.messages.ImageMessage;
import com.roboclub.robobuggy.ros.Message;
import com.roboclub.robobuggy.ros.MessageListener;
import com.roboclub.robobuggy.ros.Subscriber;
import javax.imageio.ImageIO;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
/**
* @author Trevor Decker
* <p>
* A robobuggy gui element for viewing a stream from a camera
*/
public class ImageViewer extends RobobuggyGUIContainer {
private BufferedImage img = null;
private Subscriber imageSub;
/**
* Constructor for this object to view images
*
* @param topicToSub the topic that images will be published on
*/
public ImageViewer(String topicToSub) {
imageSub = new Subscriber("", topicToSub, new MessageListener() {
@Override
/**
* @param topicName that the action occurred on
* @param Message m that is received
*/
public void actionPerformed(String topicName, Message m) {
ImageMessage imgM = (ImageMessage) m;
img = imgM.getImage();
repaint();
}
});
String path = "images/rc_logo.png";
File file = new File(path);
try {
img = ImageIO.read(file);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
g.drawImage(img, 10, 10, this.getWidth() - 20, this.getHeight() - 20, Color.black, null);
g2d.dispose();
}
}