/** * Copyright (c) 2014 Marc Fiume <mfiume@cs.toronto.edu> * Unauthorized use of this file is strictly prohibited. * * All rights reserved. No warranty, explicit or implicit, provided. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT * SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE * FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ package mfiume.component.transition.painter; import java.awt.AlphaComposite; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Rectangle; import java.awt.image.BufferedImage; import javax.swing.JPanel; import mfiume.component.transition.accessor.FloatAccessor.FloatStruct; /** * * @author mfiume */ public class AlphaBasedPainterPanel implements PanelPainter { private BufferedImage newImage; private FloatStruct newImageAlpha; private BufferedImage previousImage; public AlphaBasedPainterPanel() { } @Override public void paintComponent(Graphics g) { if (previousImage != null) { g.drawImage(previousImage, 0 , 0, null); } if (newImage != null) { Graphics2D g2d = (Graphics2D) g; AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, newImageAlpha.getFloat()); g2d.setComposite(ac); g2d.drawImage(newImage, 0, 0, null); } g.dispose(); } public void setNewImageSource(JPanel source, Dimension dim) { this.newImage = PaintUtils.getImageFromSource(source, dim); } public void setNewImageAlpha(FloatStruct newImageAlpha) { this.newImageAlpha = newImageAlpha; } public void setPreviousImageSource(JPanel source, Dimension dim) { this.previousImage = PaintUtils.getImageFromSource(source, dim); } }