package org.rsbot.event.events;
import org.rsbot.event.EventMulticaster;
import org.rsbot.event.listeners.PaintListener;
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.util.EventListener;
/**
* A paint update event.
*/
public class PaintEvent extends RSEvent {
private static final long serialVersionUID = -7404828108740551228L;
public Graphics graphics;
@Override
public void dispatch(final EventListener el) {
if (graphics == null) {
try {
((PaintListener) el).onRepaint(null);
} catch (NullPointerException ignored) {
}
return;
}
final Graphics2D g2d = (Graphics2D) graphics;
// Store settings
final Color s_background = g2d.getBackground();
final Shape s_clip = g2d.getClip();
final Color s_color = g2d.getColor();
final Composite s_composite = g2d.getComposite();
final Font s_font = g2d.getFont();
final Paint s_paint = g2d.getPaint();
final RenderingHints s_renderingHints = g2d.getRenderingHints();
final Stroke s_stroke = g2d.getStroke();
final AffineTransform s_transform = g2d.getTransform();
// Dispatch the event
((PaintListener) el).onRepaint(graphics);
// Restore settings
g2d.setBackground(s_background);
g2d.setClip(s_clip);
g2d.setColor(s_color);
g2d.setComposite(s_composite);
g2d.setFont(s_font);
g2d.setPaint(s_paint);
g2d.setRenderingHints(s_renderingHints);
g2d.setStroke(s_stroke);
g2d.setTransform(s_transform);
}
@Override
public long getMask() {
return EventMulticaster.PAINT_EVENT;
}
}