1/*
2 *  Licensed to the Apache Software Foundation (ASF) under one or more
3 *  contributor license agreements.  See the NOTICE file distributed with
4 *  this work for additional information regarding copyright ownership.
5 *  The ASF licenses this file to You under the Apache License, Version 2.0
6 *  (the "License"); you may not use this file except in compliance with
7 *  the License.  You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 *  Unless required by applicable law or agreed to in writing, software
12 *  distributed under the License is distributed on an "AS IS" BASIS,
13 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *  See the License for the specific language governing permissions and
15 *  limitations under the License.
16 */
17/**
18 * @author Igor V. Stolyarov
19 * @version $Revision$
20 * Created on 23.11.2005
21 *
22 */
23
24package java.awt.image;
25
26import java.awt.Image;
27import java.awt.image.DataBuffer;
28import java.awt.image.DataBufferByte;
29import java.awt.image.DataBufferDouble;
30import java.awt.image.DataBufferFloat;
31import java.awt.image.DataBufferInt;
32import java.awt.image.DataBufferShort;
33import java.awt.image.DataBufferUShort;
34
35import org.apache.harmony.awt.gl.AwtImageBackdoorAccessor;
36import org.apache.harmony.awt.gl.GLVolatileImage;
37import org.apache.harmony.awt.gl.Surface;
38import org.apache.harmony.awt.gl.image.DataBufferListener;
39import org.apache.harmony.awt.internal.nls.Messages;
40
41/**
42 * This class not part of public API. It useful for receiving package private
43 * data from other packages.
44 *
45 * @since Android 1.0
46 */
47class AwtImageBackdoorAccessorImpl extends AwtImageBackdoorAccessor {
48
49    static void init() {
50        inst = new AwtImageBackdoorAccessorImpl();
51    }
52
53    @Override
54    public Surface getImageSurface(Image image) {
55        if (image instanceof BufferedImage) {
56            return ((BufferedImage)image).getImageSurface();
57        } else if (image instanceof GLVolatileImage) {
58            return ((GLVolatileImage)image).getImageSurface();
59        }
60        return null;
61    }
62
63    @Override
64    public boolean isGrayPallete(IndexColorModel icm) {
65        return icm.isGrayPallete();
66    }
67
68    @Override
69    public Object getData(DataBuffer db) {
70        if (db instanceof DataBufferByte) {
71            return ((DataBufferByte)db).getData();
72        } else if (db instanceof DataBufferUShort) {
73            return ((DataBufferUShort)db).getData();
74        } else if (db instanceof DataBufferShort) {
75            return ((DataBufferShort)db).getData();
76        } else if (db instanceof DataBufferInt) {
77            return ((DataBufferInt)db).getData();
78        } else if (db instanceof DataBufferFloat) {
79            return ((DataBufferFloat)db).getData();
80        } else if (db instanceof DataBufferDouble) {
81            return ((DataBufferDouble)db).getData();
82        } else {
83            // awt.235=Wrong Data Buffer type : {0}
84            throw new IllegalArgumentException(Messages.getString("awt.235", //$NON-NLS-1$
85                    db.getClass()));
86        }
87    }
88
89    @Override
90    public int[] getDataInt(DataBuffer db) {
91        if (db instanceof DataBufferInt) {
92            return ((DataBufferInt)db).getData();
93        }
94        return null;
95    }
96
97    @Override
98    public byte[] getDataByte(DataBuffer db) {
99        if (db instanceof DataBufferByte) {
100            return ((DataBufferByte)db).getData();
101        }
102        return null;
103    }
104
105    @Override
106    public short[] getDataShort(DataBuffer db) {
107        if (db instanceof DataBufferShort) {
108            return ((DataBufferShort)db).getData();
109        }
110        return null;
111    }
112
113    @Override
114    public short[] getDataUShort(DataBuffer db) {
115        if (db instanceof DataBufferUShort) {
116            return ((DataBufferUShort)db).getData();
117        }
118        return null;
119    }
120
121    @Override
122    public double[] getDataDouble(DataBuffer db) {
123        if (db instanceof DataBufferDouble) {
124            return ((DataBufferDouble)db).getData();
125        }
126        return null;
127    }
128
129    @Override
130    public float[] getDataFloat(DataBuffer db) {
131        if (db instanceof DataBufferFloat) {
132            return ((DataBufferFloat)db).getData();
133        }
134        return null;
135    }
136
137    @Override
138    public void addDataBufferListener(DataBuffer db, DataBufferListener listener) {
139        db.addDataBufferListener(listener);
140    }
141
142    @Override
143    public void removeDataBufferListener(DataBuffer db) {
144        db.removeDataBufferListener();
145    }
146
147    @Override
148    public void validate(DataBuffer db) {
149        db.validate();
150    }
151
152    @Override
153    public void releaseData(DataBuffer db) {
154        db.releaseData();
155    }
156}
157