You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2008/02/12 10:41:18 UTC
svn commit: r620732 - in
/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/image:
GifDecoder.java OffscreenImage.java
Author: tellison
Date: Tue Feb 12 01:41:15 2008
New Revision: 620732
URL: http://svn.apache.org/viewvc?rev=620732&view=rev
Log:
Apply patch HARMONY-5491 ([classlib][awt] GifDecoder not always passes ColorModel through setPixels method)
Modified:
harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/image/GifDecoder.java
harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/image/OffscreenImage.java
Modified: harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/image/GifDecoder.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/image/GifDecoder.java?rev=620732&r1=620731&r2=620732&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/image/GifDecoder.java (original)
+++ harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/image/GifDecoder.java Tue Feb 12 01:41:15 2008
@@ -14,13 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/**
- * @author Oleg V. Khaschansky
- * @version $Revision$
- */
-/*
-* Created on 27.01.2005
-*/
+
package org.apache.harmony.awt.gl.image;
import java.awt.image.ColorModel;
@@ -79,6 +73,8 @@
private byte screenBuffer[];
private int screenRGBBuffer[];
+ ColorModel gcm;
+
public GifDecoder(DecodingImageSource src, InputStream is) {
super(src, is);
try {
@@ -140,7 +136,8 @@
if (forceRGB) {
setColorModel(ColorModel.getRGBdefault());
} else {
- setColorModel(gls.globalColorTable.getColorModel(currBlock.transparentColor));
+ gcm = gls.globalColorTable.getColorModel(currBlock.transparentColor);
+ setColorModel(gcm);
}
// Fill screen buffer with the background or transparent color
@@ -298,7 +295,7 @@
gb.imageTop,
gb.imageWidth,
gb.imageHeight,
- null,
+ gcm,
gb.imageData,
0,
gb.imageWidth
@@ -463,7 +460,7 @@
imageTop + currY,
imageWidth,
numLines,
- null,
+ gcm,
imageData,
currY*imageWidth,
imageWidth
@@ -546,7 +543,7 @@
imageTop,
imageWidth,
imageHeight,
- null,
+ gcm,
data,
0,
imageWidth
@@ -664,7 +661,7 @@
imageTop,
imageWidth,
imageHeight,
- null,
+ gcm,
(byte [])toSend,
offset,
imageWidth
Modified: harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/image/OffscreenImage.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/image/OffscreenImage.java?rev=620732&r1=620731&r2=620732&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/image/OffscreenImage.java (original)
+++ harmony/enhanced/classlib/trunk/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/image/OffscreenImage.java Tue Feb 12 01:41:15 2008
@@ -238,7 +238,6 @@
public void setPixels(int x, int y, int w, int h, ColorModel model,
byte[] pixels, int off, int scansize) {
-
if(raster == null){
if(cm == null){
if(model == null) {
@@ -252,7 +251,7 @@
if(model == null) {
model = cm;
}
- if(model != cm){
+ if(model != cm && cm != rgbCM){
forceToIntARGB();
}
@@ -262,14 +261,15 @@
synchronized(surfData){
if(isIntRGB){
int buff[] = new int[w];
- IndexColorModel icm = (IndexColorModel) model;
- int colorMap[] = new int[icm.getMapSize()];
- icm.getRGBs(colorMap);
int data[] = (int[])surfData;
int scanline = raster.getWidth();
DataBufferInt dbi = (DataBufferInt) db;
int rof = dbi.getOffset() + y * scanline + x;
if(model instanceof IndexColorModel){
+
+ IndexColorModel icm = (IndexColorModel) model;
+ int colorMap[] = new int[icm.getMapSize()];
+ icm.getRGBs(colorMap);
for (int sy = y, sOff = off; sy < y + h; sy++, sOff += scansize,
rof += scanline) {