source: trunk/gcc/libjava/java/awt/image/DataBuffer.java

Last change on this file was 2, checked in by bird, 22 years ago

Initial revision

  • Property cvs2svn:cvs-rev set to 1.1
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 5.0 KB
Line 
1/* Copyright (C) 2000, 2002 Free Software Foundation
2
3This file is part of GNU Classpath.
4
5GNU Classpath is free software; you can redistribute it and/or modify
6it under the terms of the GNU General Public License as published by
7the Free Software Foundation; either version 2, or (at your option)
8any later version.
9
10GNU Classpath is distributed in the hope that it will be useful, but
11WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with GNU Classpath; see the file COPYING. If not, write to the
17Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
1802111-1307 USA.
19
20Linking this library statically or dynamically with other modules is
21making a combined work based on this library. Thus, the terms and
22conditions of the GNU General Public License cover the whole
23combination.
24
25As a special exception, the copyright holders of this library give you
26permission to link this library with independent modules to produce an
27executable, regardless of the license terms of these independent
28modules, and to copy and distribute the resulting executable under
29terms of your choice, provided that you also meet, for each linked
30independent module, the terms and conditions of the license of that
31module. An independent module is a module which is not derived from
32or based on this library. If you modify this library, you may extend
33this exception to your version of the library, but you are not
34obligated to do so. If you do not wish to do so, delete this
35exception statement from your version. */
36
37package java.awt.image;
38
39/**
40 * Class that manages arrays of data elements. A data buffer consists
41 * of one or more banks. A bank is a continuous region of data
42 * elements.
43 *
44 * @author Rolf W. Rasmussen <rolfwr@ii.uib.no>
45 */
46public abstract class DataBuffer
47{
48 public static final int TYPE_BYTE = 0;
49 public static final int TYPE_USHORT = 1;
50 public static final int TYPE_SHORT = 2;
51 public static final int TYPE_INT = 3;
52 public static final int TYPE_FLOAT = 4;
53 public static final int TYPE_DOUBLE = 5;
54 public static final int TYPE_UNDEFINED = 32;
55
56 /** The type of the data elements stored in the data buffer. */
57 protected int dataType;
58
59 /** The number of banks in this buffer. */
60 protected int banks = 1;
61
62 /** Offset into the default (0'th) bank). */
63 protected int offset; // FIXME: Is offsets[0] always mirrored in offset?
64
65 /** The size of the banks. */
66 protected int size;
67
68 /** Offset into each bank. */
69 protected int[] offsets;
70
71 protected DataBuffer(int dataType, int size)
72 {
73 this.dataType = dataType;
74 this.size = size;
75 }
76
77 protected DataBuffer(int dataType, int size, int numBanks) {
78 this(dataType, size);
79 banks = numBanks;
80 offsets = new int[numBanks];
81 }
82
83 protected DataBuffer(int dataType, int size, int numBanks, int offset) {
84 this(dataType, size, numBanks);
85
86 java.util.Arrays.fill(offsets, offset);
87
88 this.offset = offset;
89 }
90
91 protected DataBuffer(int dataType, int size, int numBanks, int[] offsets) {
92 this(dataType, size);
93 if (numBanks != offsets.length)
94 throw new ArrayIndexOutOfBoundsException();
95
96 banks = numBanks;
97 this.offsets = offsets;
98
99 offset = offsets[0];
100 }
101
102 public static int getDataTypeSize(int dataType) {
103 // Maybe this should be a lookup table instead.
104 switch (dataType)
105 {
106 case TYPE_BYTE:
107 return 8;
108 case TYPE_USHORT:
109 case TYPE_SHORT:
110 return 16;
111 case TYPE_INT:
112 case TYPE_FLOAT:
113 return 32;
114 case TYPE_DOUBLE:
115 return 64;
116 default:
117 throw new IllegalArgumentException();
118 }
119 }
120
121 public int getDataType()
122 {
123 return dataType;
124 }
125
126 public int getSize()
127 {
128 return size;
129 }
130
131 public int getOffset()
132 {
133 return offset;
134 }
135
136 public int[] getOffsets()
137 {
138 if (offsets == null)
139 {
140 // is this necessary?
141 offsets = new int[1];
142 offsets[0] = offset;
143 }
144 return offsets;
145 }
146
147 public int getNumBanks()
148 {
149 return banks;
150 }
151
152 public int getElem(int i)
153 {
154 return getElem(0, i);
155 }
156
157 public abstract int getElem(int bank, int i);
158
159 public void setElem(int i, int val)
160 {
161 setElem(0, i, val);
162 }
163
164 public abstract void setElem(int bank, int i, int val);
165
166 public float getElemFloat(int i)
167 {
168 return getElem(i);
169 }
170
171 public float getElemFloat(int bank, int i)
172 {
173 return getElem(bank, i);
174 }
175
176 public void setElemFloat(int i, float val)
177 {
178 setElem(i, (int) val);
179 }
180
181 public void setElemFloat(int bank, int i, float val)
182 {
183 setElem(bank, i, (int) val);
184 }
185
186 public double getElemDouble(int i)
187 {
188 return getElem(i);
189 }
190
191 public double getElemDouble(int bank, int i)
192 {
193 return getElem(bank, i);
194 }
195
196 public void setElemDouble(int i, double val)
197 {
198 setElem(i, (int) val);
199 }
200
201 public void setElemDouble(int bank, int i, double val)
202 {
203 setElem(bank, i, (int) val);
204 }
205}
Note: See TracBrowser for help on using the repository browser.