< 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;
+ }
}
\ No newline at end of file
< prev index next >