blob: 3ad79e400c9176d581c8ecfb5eab88de08eab1fd [file] [log] [blame]
Jason Sams25430d02010-02-02 15:26:40 -08001/*
2 * Copyright (C) 2009 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.renderscript;
18
Jason Sams25430d02010-02-02 15:26:40 -080019
Stephen Hines9c9ad3f8c22012-05-07 15:34:29 -070020/**
Tim Murrayc11e25c2013-04-09 11:01:01 -070021 * Class for exposing the native RenderScript byte2 type back to the Android system.
Jason Sams25430d02010-02-02 15:26:40 -080022 *
23 **/
Jason Samsa70f4162010-03-26 15:33:42 -070024public class Byte2 {
Matthieu Delahaye6a5875c2013-09-10 15:11:35 -050025 public byte x;
26 public byte y;
27
Jason Samsa70f4162010-03-26 15:33:42 -070028 public Byte2() {
Jason Sams25430d02010-02-02 15:26:40 -080029 }
30
Jason Sams6cc888e2011-04-22 17:05:25 -070031 public Byte2(byte initX, byte initY) {
32 x = initX;
33 y = initY;
34 }
35
Matthieu Delahaye6a5875c2013-09-10 15:11:35 -050036 /** @hide */
37 public Byte2(Byte2 source) {
38 this.x = source.x;
39 this.y = source.y;
40 }
41
42 /** @hide
43 * Vector add
44 *
45 * @param a
46 */
47 public void add(Byte2 a) {
48 this.x += a.x;
49 this.y += a.y;
50 }
51
52 /** @hide
53 * Vector add
54 *
55 * @param a
56 * @param b
57 * @return
58 */
59 public static Byte2 add(Byte2 a, Byte2 b) {
60 Byte2 result = new Byte2();
61 result.x = (byte)(a.x + b.x);
62 result.y = (byte)(a.y + b.y);
63
64 return result;
65 }
66
67 /** @hide
68 * Vector add
69 *
70 * @param value
71 */
72 public void add(byte value) {
73 x += value;
74 y += value;
75 }
76
77 /** @hide
78 * Vector add
79 *
80 * @param a
81 * @param b
82 * @return
83 */
84 public static Byte2 add(Byte2 a, byte b) {
85 Byte2 result = new Byte2();
86 result.x = (byte)(a.x + b);
87 result.y = (byte)(a.y + b);
88
89 return result;
90 }
91
92 /** @hide
93 * Vector subtraction
94 *
95 * @param a
96 */
97 public void sub(Byte2 a) {
98 this.x -= a.x;
99 this.y -= a.y;
100 }
101
102 /** @hide
103 * Vector subtraction
104 *
105 * @param a
106 * @param b
107 * @return
108 */
109 public static Byte2 sub(Byte2 a, Byte2 b) {
110 Byte2 result = new Byte2();
111 result.x = (byte)(a.x - b.x);
112 result.y = (byte)(a.y - b.y);
113
114 return result;
115 }
116
117 /** @hide
118 * Vector subtraction
119 *
120 * @param value
121 */
122 public void sub(byte value) {
123 x -= value;
124 y -= value;
125 }
126
127 /** @hide
128 * Vector subtraction
129 *
130 * @param a
131 * @param b
132 * @return
133 */
134 public static Byte2 sub(Byte2 a, byte b) {
135 Byte2 result = new Byte2();
136 result.x = (byte)(a.x - b);
137 result.y = (byte)(a.y - b);
138
139 return result;
140 }
141
142 /** @hide
143 * Vector multiplication
144 *
145 * @param a
146 */
147 public void mul(Byte2 a) {
148 this.x *= a.x;
149 this.y *= a.y;
150 }
151
152 /** @hide
153 * Vector multiplication
154 *
155 * @param a
156 * @param b
157 * @return
158 */
159 public static Byte2 mul(Byte2 a, Byte2 b) {
160 Byte2 result = new Byte2();
161 result.x = (byte)(a.x * b.x);
162 result.y = (byte)(a.y * b.y);
163
164 return result;
165 }
166
167 /** @hide
168 * Vector multiplication
169 *
170 * @param value
171 */
172 public void mul(byte value) {
173 x *= value;
174 y *= value;
175 }
176
177 /** @hide
178 * Vector multiplication
179 *
180 * @param a
181 * @param b
182 * @return
183 */
184 public static Byte2 mul(Byte2 a, byte b) {
185 Byte2 result = new Byte2();
186 result.x = (byte)(a.x * b);
187 result.y = (byte)(a.y * b);
188
189 return result;
190 }
191
192 /** @hide
193 * Vector division
194 *
195 * @param a
196 */
197 public void div(Byte2 a) {
198 this.x /= a.x;
199 this.y /= a.y;
200 }
201
202 /** @hide
203 * Vector division
204 *
205 * @param a
206 * @param b
207 * @return
208 */
209 public static Byte2 div(Byte2 a, Byte2 b) {
210 Byte2 result = new Byte2();
211 result.x = (byte)(a.x / b.x);
212 result.y = (byte)(a.y / b.y);
213
214 return result;
215 }
216
217 /** @hide
218 * Vector division
219 *
220 * @param value
221 */
222 public void div(byte value) {
223 x /= value;
224 y /= value;
225 }
226
227 /** @hide
228 * Vector division
229 *
230 * @param a
231 * @param b
232 * @return
233 */
234 public static Byte2 div(Byte2 a, byte b) {
235 Byte2 result = new Byte2();
236 result.x = (byte)(a.x / b);
237 result.y = (byte)(a.y / b);
238
239 return result;
240 }
241
242 /** @hide
243 * get vector length
244 *
245 * @return
246 */
247 public byte length() {
248 return 2;
249 }
250
251 /** @hide
252 * set vector negate
253 */
254 public void negate() {
255 this.x = (byte)(-x);
256 this.y = (byte)(-y);
257 }
258
259 /** @hide
260 * Vector dot Product
261 *
262 * @param a
263 * @return
264 */
265 public byte dotProduct(Byte2 a) {
266 return (byte)((x * a.x) + (y * a.y));
267 }
268
269 /** @hide
270 * Vector dot Product
271 *
272 * @param a
273 * @param b
274 * @return
275 */
276 public static byte dotProduct(Byte2 a, Byte2 b) {
277 return (byte)((b.x * a.x) + (b.y * a.y));
278 }
279
280 /** @hide
281 * Vector add Multiple
282 *
283 * @param a
284 * @param factor
285 */
286 public void addMultiple(Byte2 a, byte factor) {
287 x += a.x * factor;
288 y += a.y * factor;
289 }
290
291 /** @hide
292 * set vector value by Byte2
293 *
294 * @param a
295 */
296 public void set(Byte2 a) {
297 this.x = a.x;
298 this.y = a.y;
299 }
300
301 /** @hide
302 * set the vector field value by Char
303 *
304 * @param a
305 * @param b
306 */
307 public void setValues(byte a, byte b) {
308 this.x = a;
309 this.y = b;
310 }
311
312 /** @hide
313 * return the element sum of vector
314 *
315 * @return
316 */
317 public byte elementSum() {
318 return (byte)(x + y);
319 }
320
321 /** @hide
322 * get the vector field value by index
323 *
324 * @param i
325 * @return
326 */
327 public byte get(int i) {
328 switch (i) {
329 case 0:
330 return x;
331 case 1:
332 return y;
333 default:
334 throw new IndexOutOfBoundsException("Index: i");
335 }
336 }
337
338 /** @hide
339 * set the vector field value by index
340 *
341 * @param i
342 * @param value
343 */
344 public void setAt(int i, byte value) {
345 switch (i) {
346 case 0:
347 x = value;
348 return;
349 case 1:
350 y = value;
351 return;
352 default:
353 throw new IndexOutOfBoundsException("Index: i");
354 }
355 }
356
357 /** @hide
358 * add the vector field value by index
359 *
360 * @param i
361 * @param value
362 */
363 public void addAt(int i, byte value) {
364 switch (i) {
365 case 0:
366 x += value;
367 return;
368 case 1:
369 y += value;
370 return;
371 default:
372 throw new IndexOutOfBoundsException("Index: i");
373 }
374 }
375
376 /** @hide
377 * copy the vector to Char array
378 *
379 * @param data
380 * @param offset
381 */
382 public void copyTo(byte[] data, int offset) {
383 data[offset] = x;
384 data[offset + 1] = y;
385 }
386
Jason Sams25430d02010-02-02 15:26:40 -0800387}
388
389
390
391