/******************************************************************************* * Copyright (c) 2007, 2010 Association for Decentralized Information Management * in Industry THTH ry. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation *******************************************************************************/ package org.simantics.g2d.svg; //import static org.apache.batik.util.SVGConstants.SVG_NONE_VALUE; // //import org.apache.batik.util.CSSConstants; /** * @author Tuukka Lehtonen */ public class FillDesc { // public static final FillDesc NO_FILL = new FillDesc(SVG_NONE_VALUE) { // @Override // public String toStyleString() { // return "fill:none;"; // } // @Override // public void setFillRule(FillRule rule) { // throw new UnsupportedOperationException("immutable object"); // } // @Override // public void setOpacity(double opacity) { // throw new UnsupportedOperationException("immutable object"); // } // @Override // public void setPaint(String paint) { // throw new UnsupportedOperationException("immutable object"); // } // }; //private static final String[] ruleConv = { "nonzero", "evenodd" }; /** * paint | inherit */ private String paint; /** * [0,1] | "inherit" */ private double opacity; /** * nonzero | evenodd | inherit */ private FillRule fillRule; public FillDesc() { this(StyleConstants.INHERIT, 1, FillRule.nonzero); } public FillDesc(String paint) { this(paint, 1, FillRule.nonzero); } public FillDesc(String paint, double opacity) { this(paint, opacity, FillRule.nonzero); } public FillDesc(String paint, double opacity, FillRule fillRule) { this.paint = paint; this.opacity = opacity; this.fillRule = fillRule != null ? fillRule : FillRule.nonzero; } public String getPaint() { return paint; } public void setPaint(String paint) { this.paint = paint; } public double getOpacity() { return opacity; } public void setOpacity(double opacity) { this.opacity = opacity; } public FillRule getFillRule() { return fillRule; } public void setFillRule(FillRule rule) { this.fillRule = rule; } /** * Returns the hashcode for this stroke. * * @return a hash code for this stroke. */ public int hashCode() { int hash = paint.hashCode(); hash = hash * 31 + (int) Double.doubleToLongBits(opacity); hash = hash * 31 + fillRule.hashCode(); return hash; } /** * Returns true if this BasicStroke represents the same stroking operation * as the given argument. * *
* Tests if a specified object is equal to this Stroke
by
* first testing if it is a BasicStroke
and then comparing
* its width, join, cap, miter limit, dash, and dash phase attributes with
* those of this Stroke
.
*
* @param obj the specified object to compare to this Stroke
* @return true
if the width, join, cap, miter limit, dash,
* and dash phase are the same for both objects; false
* otherwise.
*/
public boolean equals(Object obj) {
if (!(obj instanceof FillDesc)) {
return false;
}
FillDesc fd = (FillDesc) obj;
if (opacity != fd.opacity) {
return false;
}
if (!fillRule.equals(fd.fillRule)) {
return false;
}
return true;
}
// public String toStyleString() {
// StringBuilder s = new StringBuilder(64);
//
// s.append(CSSConstants.CSS_FILL_PROPERTY);
// s.append(':');
// s.append(paint);
// s.append(';');
// if (!paint.equals(CSSConstants.CSS_NONE_VALUE)) {
// s.append(CSSConstants.CSS_FILL_OPACITY_PROPERTY);
// s.append(':');
// s.append(opacity);
// s.append(';');
// s.append(CSSConstants.CSS_FILL_RULE_PROPERTY);
// s.append(':');
// s.append(fillRule);
// s.append(';');
// }
//
// return s.toString();
// }
}