< prev index next >

src/java.desktop/share/classes/java/awt/image/ComponentColorModel.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 25,34 **** --- 25,36 ---- package java.awt.image; import java.awt.color.ColorSpace; import java.awt.color.ICC_ColorSpace; + import java.util.Arrays; + import java.util.Objects; /** * A {@code ColorModel} class that works with pixel values that * represent color and alpha information as separate samples and that * store each sample in a separate data element. This class can be
*** 198,207 **** --- 200,210 ---- private boolean nonStdScale; private float[] min; private float[] diffMinMax; private float[] compOffset; private float[] compScale; + private volatile int hashCode; /** * Constructs a {@code ComponentColorModel} from the specified * parameters. Color components will be in the specified * {@code ColorSpace}. The supported transfer types are
*** 2925,2948 **** raster.getHeight(), x, y, band); } /** ! * Compares this color model with another for equality. ! * ! * @param obj The object to compare with this color model. ! * @return {@code true} if the color model objects are equal, ! * {@code false} if they are not. */ public boolean equals(Object obj) { ! if (!super.equals(obj)) { return false; } ! if (obj.getClass() != getClass()) { return false; } return true; } } --- 2928,2996 ---- raster.getHeight(), x, y, band); } /** ! * Tests if the specified {@code Object} is an instance ! * of {@code ComponentColorModel} and equals this ! * {@code ComponentColorModel}. ! * @param obj the {@code Object} to test for equality ! * @return {@code true} if the specified {@code Object} ! * is an instance of {@code ComponentColorModel} and equals this ! * {@code ComponentColorModel}; {@code false} otherwise. */ + @Override public boolean equals(Object obj) { ! if (!(obj instanceof ComponentColorModel)) { return false; } ! ComponentColorModel cm = (ComponentColorModel) obj; ! if (supportsAlpha != cm.hasAlpha() || ! isAlphaPremultiplied != cm.isAlphaPremultiplied() || ! pixel_bits != cm.getPixelSize() || ! transparency != cm.getTransparency() || ! numComponents != cm.getNumComponents() || ! (!(colorSpace.equals(cm.colorSpace))) || ! transferType != cm.transferType) ! { return false; } + int[] nb = cm.getComponentSize(); + + if ((nBits != null) && (nb != null)) { + for (int i = 0; i < numComponents; i++) { + if (nBits[i] != nb[i]) { + return false; + } + } + } else { + return ((nBits == null) && (nb == null)); + } + return true; } + /** + * Returns the hash code for this ComponentColorModel. + * + * @return a hash code for this ComponentColorModel. + */ + @Override + public int hashCode() { + int result = hashCode; + if (result == 0) { + result = 7; + result = 89 * result + this.pixel_bits; + result = 89 * result + Arrays.hashCode(this.nBits); + result = 89 * result + this.transparency; + result = 89 * result + (this.supportsAlpha ? 1 : 0); + result = 89 * result + (this.isAlphaPremultiplied ? 1 : 0); + result = 89 * result + this.numComponents; + result = 89 * result + Objects.hashCode(this.colorSpace); + result = 89 * result + this.transferType; + hashCode = result; + } + return result; + } }
< prev index next >