package com.pump.awt.serialization; import java.awt.Color; import java.awt.GradientPaint; import java.awt.geom.Point2D; import com.pump.io.serialization.AbstractSerializationWrapper; import com.pump.io.serialization.SerializationFilter; import com.pump.io.serialization.SerializationWrapper; /** * This is a SerializationWrapper for GradientPaints. */ public class GradientPaintSerializationWrapper extends AbstractSerializationWrapper<GradientPaint> { private static final long serialVersionUID = 1L; /** * This filter converts a GradientPaint or a RenderedImage into a * GradientPaintSerializationWrapper. */ public static SerializationFilter FILTER = new SerializationFilter() { @Override public SerializationWrapper<?> filter(Object object) { if (object instanceof GradientPaint) { GradientPaint gp = (GradientPaint) object; return new GradientPaintSerializationWrapper(gp); } return null; } }; protected static final String KEY_X1 = "x1"; protected static final String KEY_Y1 = "y1"; protected static final String KEY_X2 = "x2"; protected static final String KEY_Y2 = "y2"; protected static final String KEY_COLOR1 = "color1"; protected static final String KEY_COLOR2 = "color2"; protected static final String KEY_CYCLIC = "cyclic"; public GradientPaintSerializationWrapper(GradientPaint gp) { Point2D p1 = gp.getPoint1(); Point2D p2 = gp.getPoint2(); map.put(KEY_X1, p1.getX()); map.put(KEY_Y1, p1.getY()); map.put(KEY_X2, p2.getX()); map.put(KEY_Y2, p2.getY()); map.put(KEY_COLOR1, gp.getColor1()); map.put(KEY_COLOR2, gp.getColor2()); map.put(KEY_CYCLIC, gp.isCyclic()); } @Override public GradientPaint create() { float x1 = ((Number) map.get(KEY_X1)).floatValue(); float y1 = ((Number) map.get(KEY_Y1)).floatValue(); float x2 = ((Number) map.get(KEY_X2)).floatValue(); float y2 = ((Number) map.get(KEY_Y2)).floatValue(); Color color1 = (Color) map.get(KEY_COLOR1); Color color2 = (Color) map.get(KEY_COLOR2); boolean cyclic = (Boolean) map.get(KEY_CYCLIC); return new GradientPaint(x1, y1, color1, x2, y2, color2, cyclic); } }