package org.xmind.ui.internal.svgsupport; import org.eclipse.jface.resource.DeviceResourceDescriptor; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Device; import org.eclipse.swt.graphics.Pattern; import org.xmind.gef.draw2d.graphics.GradientPattern; /** * * @author Enki Xiong * */ public class PatternResourceDescriptor extends DeviceResourceDescriptor { private float x1, x2, y1, y2; private Color start, end; private int startOpacity, endOpacity; public PatternResourceDescriptor(float x1, float y1, float x2, float y2, int foreOpacity, Color foreground, int backOpacity, Color background) { this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2; this.startOpacity = foreOpacity; this.start = foreground; this.endOpacity = backOpacity; this.end = background; } @Override public Object createResource(Device device) { return new GradientPattern(device, x1, y1, x2, y2, start, startOpacity, end, endOpacity); } @Override public void destroyResource(Object pattern) { if (pattern instanceof Pattern) ((Pattern) pattern).dispose(); } @Override public boolean equals(Object obj) { if (obj instanceof PatternResourceDescriptor) { PatternResourceDescriptor desc = (PatternResourceDescriptor) obj; if (this.x1 == desc.x1 && this.x2 == desc.x2 && this.y1 == desc.y1 && this.y2 == desc.y2 && this.startOpacity == desc.startOpacity && this.endOpacity == desc.endOpacity) if (this.start != null && this.start.equals(desc.start) && this.end != null && this.end.equals(desc.end)) return true; } return false; } @Override public int hashCode() { int result = 17; result = 31 * result + Float.floatToIntBits(x1); result = 31 * result + Float.floatToIntBits(x2); result = 31 * result + Float.floatToIntBits(y1); result = 31 * result + Float.floatToIntBits(y2); result = 31 * result + startOpacity; result = 31 * result + start.hashCode(); result = 31 * result + endOpacity; result = 31 * result + end.hashCode(); return result; } @Override public String toString() { return "PattrnResourceDescriptor:(" + " start color:" + start //$NON-NLS-1$ //$NON-NLS-2$ + " end color:" + end + ")"; //$NON-NLS-1$ //$NON-NLS-2$ } }