20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package sun.java2d;
27
28 import java.awt.image.DataBuffer;
29 import java.nio.*;
30
31 public final class DataBufferNIOInt extends DataBuffer {
32
33 /** The default data bank. */
34 IntBuffer data;
35
36 /** All data banks */
37 IntBuffer bankdata[];
38
39 /**
40 * Constructs an integer-based <CODE>DataBuffer</CODE> with a single bank
41 * and the specified size.
42 *
43 * @param size The size of the <CODE>DataBuffer</CODE>.
44 */
45 public DataBufferNIOInt(int size) {
46 super(TYPE_INT,size);
47 //+++gdb how to get sizeof(int) in java? Using 4 for now.
48 data = getBufferOfSize(size * 4).asIntBuffer();
49 bankdata = new IntBuffer[1];
50 bankdata[0] = data;
51 }
52
53 /**
54 * Returns the default (first) IntBuffer in <CODE>DataBuffer</CODE>.
55 *
56 * @return The first IntBuffer.
57 */
58 public IntBuffer getBuffer() {
59 return data;
60 }
61
62 /**
63 * Returns the Buffer for the specified bank.
64 *
65 * @param bank The bank whose Buffer you want to get.
66 * @return The Buffer for the specified bank.
67 */
68 public IntBuffer getBuffer(int bank) {
69 return bankdata[bank];
70 }
71
72 /**
73 * Returns the default (first) int data array in <CODE>DataBuffer</CODE>.
74 *
75 * @return The first integer data array.
76 */
77 public int[] getData() {
78 return data.array();
79 }
80
81 /**
82 * Returns the data array for the specified bank.
83 *
84 * @param bank The bank whose data array you want to get.
85 * @return The data array for the specified bank.
86 */
87 public int[] getData(int bank) {
88 return bankdata[bank].array();
89 }
90
91 /**
92 * Returns the data arrays for all banks.
93 * @return All of the data arrays.
120 */
121 public int getElem(int bank, int i) {
122 return bankdata[bank].get(i+offsets[bank]);
123 }
124
125 /**
126 * Sets the requested data array element in the first (default) bank
127 * to the specified value.
128 *
129 * @param i The data array element you want to set.
130 * @param val The integer value to which you want to set the data array element.
131 * @see #getElem(int)
132 * @see #getElem(int, int)
133 */
134 public void setElem(int i, int val) {
135 data.put(i+offset, val);
136 }
137
138 /**
139 * Sets the requested data array element in the specified bank
140 * to the integer value <CODE>i</CODE>.
141 * @param bank The bank in which you want to set the data array element.
142 * @param i The data array element you want to set.
143 * @param val The integer value to which you want to set the specified data array element.
144 * @see #getElem(int)
145 * @see #getElem(int, int)
146 */
147 public void setElem(int bank, int i, int val) {
148 bankdata[bank].put(i+offsets[bank], val);
149 }
150
151 ByteBuffer getBufferOfSize(int size)
152 {
153 ByteBuffer buffer = ByteBuffer.allocateDirect(size);
154 buffer.order(ByteOrder.nativeOrder());
155 return buffer;
156 }
157 }
|
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package sun.java2d;
27
28 import java.awt.image.DataBuffer;
29 import java.nio.*;
30
31 public final class DataBufferNIOInt extends DataBuffer {
32
33 /** The default data bank. */
34 IntBuffer data;
35
36 /** All data banks */
37 IntBuffer bankdata[];
38
39 /**
40 * Constructs an integer-based {@code DataBuffer} with a single bank
41 * and the specified size.
42 *
43 * @param size The size of the {@code DataBuffer}.
44 */
45 public DataBufferNIOInt(int size) {
46 super(TYPE_INT,size);
47 //+++gdb how to get sizeof(int) in java? Using 4 for now.
48 data = getBufferOfSize(size * 4).asIntBuffer();
49 bankdata = new IntBuffer[1];
50 bankdata[0] = data;
51 }
52
53 /**
54 * Returns the default (first) IntBuffer in {@code DataBuffer}.
55 *
56 * @return The first IntBuffer.
57 */
58 public IntBuffer getBuffer() {
59 return data;
60 }
61
62 /**
63 * Returns the Buffer for the specified bank.
64 *
65 * @param bank The bank whose Buffer you want to get.
66 * @return The Buffer for the specified bank.
67 */
68 public IntBuffer getBuffer(int bank) {
69 return bankdata[bank];
70 }
71
72 /**
73 * Returns the default (first) int data array in {@code DataBuffer}.
74 *
75 * @return The first integer data array.
76 */
77 public int[] getData() {
78 return data.array();
79 }
80
81 /**
82 * Returns the data array for the specified bank.
83 *
84 * @param bank The bank whose data array you want to get.
85 * @return The data array for the specified bank.
86 */
87 public int[] getData(int bank) {
88 return bankdata[bank].array();
89 }
90
91 /**
92 * Returns the data arrays for all banks.
93 * @return All of the data arrays.
120 */
121 public int getElem(int bank, int i) {
122 return bankdata[bank].get(i+offsets[bank]);
123 }
124
125 /**
126 * Sets the requested data array element in the first (default) bank
127 * to the specified value.
128 *
129 * @param i The data array element you want to set.
130 * @param val The integer value to which you want to set the data array element.
131 * @see #getElem(int)
132 * @see #getElem(int, int)
133 */
134 public void setElem(int i, int val) {
135 data.put(i+offset, val);
136 }
137
138 /**
139 * Sets the requested data array element in the specified bank
140 * to the integer value {@code i}.
141 * @param bank The bank in which you want to set the data array element.
142 * @param i The data array element you want to set.
143 * @param val The integer value to which you want to set the specified data array element.
144 * @see #getElem(int)
145 * @see #getElem(int, int)
146 */
147 public void setElem(int bank, int i, int val) {
148 bankdata[bank].put(i+offsets[bank], val);
149 }
150
151 ByteBuffer getBufferOfSize(int size)
152 {
153 ByteBuffer buffer = ByteBuffer.allocateDirect(size);
154 buffer.order(ByteOrder.nativeOrder());
155 return buffer;
156 }
157 }
|