/*
 * $Id: ImageOpObserver.java 4359 2008-10-28 22:55:06Z uckelman $
 *
 * Copyright (c) 2007 by Joel Uckelman
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License (LGPL) as published by the Free Software Foundation.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, copies are available
 * at http://www.opensource.org.
 */

package VASSAL.tools.imageop;

import java.awt.image.BufferedImage;

import VASSAL.tools.opcache.OpObserver;

/**
 * <code>ImageOpObserver</code>s can be notified on the completion
 * of an <code>ImageOp</code>.
 *
 * <p>Objects implementing <code>ImageOpObserver</code> are intended to
 * be passed as an argument to {@link ImageOp.getImage}, which which
 * call back {@link #imageOpChange} on completion.</p>
 *
 * <p>The most common implementaion of this interface is {@link Repainter},
 * which can be used to repaint portions of {@link java.awt.Component}s
 * which are waiting for images to be computed.</p>  
 *
 * @since 3.1.0
 * @author Joel Uckelman
 * @see VASSAL.tools.imageop.Repainter
 */
public interface ImageOpObserver extends OpObserver<BufferedImage> {
  /**
   * Called when the <code>ImageOp</code> under observation completes.
   *
   * @param op the <code>ImageOp</code> being observed
   * @param success <code>true</code> iff the <code>op</code> succeeded
   */
  void imageOpChange(ImageOp op, boolean success);
}
