/*
* myLib - https://github.com/taktod/myLib
* Copyright (c) 2014 ttProject. All rights reserved.
*
* Licensed under GNU GENERAL PUBLIC LICENSE Version 3.
*/
package com.ttProject.xuggle.test.swing;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JComponent;
import javax.swing.SwingUtilities;
/**
* 映像データを書き込む適当なコンポーネント
* @author taktod
*/
public class VideoComponent extends JComponent {
private static final long serialVersionUID = 7890183008132195859L;
private Image image;
private Dimension size;
public void setImage(Image image) {
SwingUtilities.invokeLater(new ImageRunnable(image));
}
public void setImageSize(Dimension newSize) {
}
private class ImageRunnable implements Runnable {
private final Image newImage;
public ImageRunnable(Image newImage) {
super();
this.newImage = newImage;
}
public void run() {
VideoComponent.this.image = newImage;
Dimension newSize = new Dimension(image.getWidth(null), image.getHeight(null));
if(!newSize.equals(size)) {
VideoComponent.this.size = newSize;
// サイズがかわったことを通知してやったほうがよさそう。
}
repaint();
}
}
public VideoComponent() {
size = new Dimension(0, 0);
setSize(size);
}
@Override
public synchronized void paint(Graphics g) {
if(image != null) {
g.drawImage(image, 0, 0, this);
}
}
}