View Javadoc

1   /**********************************************
2    * Copyright (C) 2010 Lukas Laag
3    * This file is part of lib-gwt-svg.
4    * 
5    * libgwtsvg is free software: you can redistribute it and/or modify
6    * it under the terms of the GNU Lesser General Public License as published by
7    * the Free Software Foundation, either version 3 of the License, or
8    * (at your option) any later version.
9    * 
10   * libgwtsvg is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   * GNU Lesser General Public License for more details.
14   * 
15   * You should have received a copy of the GNU Lesser General Public License
16   * along with libgwtsvg.  If not, see http://www.gnu.org/licenses/
17   **********************************************/
18  /*
19   * Copyright (c) 2004 World Wide Web Consortium,
20   *
21   * (Massachusetts Institute of Technology, European Research Consortium for
22   * Informatics and Mathematics, Keio University). All Rights Reserved. This
23   * work is distributed under the W3C(r) Software License [1] in the hope that
24   * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
25   * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
26   *
27   * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
28   */
29  
30  package org.vectomatic.dom.svg;
31  
32  /**
33   * Class to represent a CSS RGB color
34   * @author laaglu
35   */
36  public class OMRGBColor {
37    private OMCSSPrimitiveValue red;
38    private OMCSSPrimitiveValue green;
39    private OMCSSPrimitiveValue blue;
40    public OMRGBColor(float r, float g, float b) {
41  	red = new OMCSSPrimitiveValue(r);
42  	green = new OMCSSPrimitiveValue(g);
43  	blue = new OMCSSPrimitiveValue(b);
44    }
45    
46    @Override
47    public int hashCode() {
48  	return (int)red.getFloatValue(OMCSSPrimitiveValue.CSS_NUMBER) + 256 * (int)green.getFloatValue(OMCSSPrimitiveValue.CSS_NUMBER) + 65536 * (int)blue.getFloatValue(OMCSSPrimitiveValue.CSS_NUMBER);
49    }
50    
51    @Override
52    public boolean equals(Object obj) {
53  	  if (obj instanceof OMRGBColor) {
54  		  OMRGBColor c = (OMRGBColor)obj;
55  		  return red.getFloatValue(OMCSSPrimitiveValue.CSS_NUMBER) == c.getRed().getFloatValue(OMCSSPrimitiveValue.CSS_NUMBER)
56  		  	&& green.getFloatValue(OMCSSPrimitiveValue.CSS_NUMBER) == c.getGreen().getFloatValue(OMCSSPrimitiveValue.CSS_NUMBER)
57  		  	&& blue.getFloatValue(OMCSSPrimitiveValue.CSS_NUMBER) == c.getBlue().getFloatValue(OMCSSPrimitiveValue.CSS_NUMBER);
58  	  }
59  	  return false;
60    }
61  
62    // Implementation of the css::RGBColor W3C IDL interface
63    public final OMCSSPrimitiveValue getRed() {
64      return this.red;
65    }
66    public final OMCSSPrimitiveValue getGreen() {
67      return this.green;
68    }
69    public final OMCSSPrimitiveValue getBlue() {
70      return this.blue;
71    }
72    public String getDescription() {
73  	StringBuilder builder = new StringBuilder("OMRGBColor(r=");
74  	builder.append(red);
75  	builder.append(", g=");
76  	builder.append(green);
77  	builder.append(", b=");
78  	builder.append(blue);
79  	builder.append(")");
80  	return builder.toString();
81    }
82  
83  }