blob: 24809f7391598bbb81f2148a4995a12218276381 [file] [log] [blame]
Jason Sams25430d02010-02-02 15:26:40 -08001/*
Matthieu Delahaye6a5875c2013-09-10 15:11:35 -05002 * Copyright (C) 2013 The Android Open Source Project
Jason Sams25430d02010-02-02 15:26:40 -08003 *
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 Short2 type back to the Android system.
Jason Sams25430d02010-02-02 15:26:40 -080022 *
Matthieu Delahaye6a5875c2013-09-10 15:11:35 -050023 * Vector version of the basic short type.
24 * Provides two short fields packed.
25 */
Jason Samsa70f4162010-03-26 15:33:42 -070026public class Short2 {
Matthieu Delahaye6a5875c2013-09-10 15:11:35 -050027 public short x;
28 public short y;
29
Jason Samsa70f4162010-03-26 15:33:42 -070030 public Short2() {
Jason Sams25430d02010-02-02 15:26:40 -080031 }
32
Matthieu Delahaye6a5875c2013-09-10 15:11:35 -050033 /** @hide */
34 public Short2(short i) {
35 this.x = this.y = i;
Jason Sams6cc888e2011-04-22 17:05:25 -070036 }
37
Matthieu Delahaye6a5875c2013-09-10 15:11:35 -050038 public Short2(short x, short y) {
39 this.x = x;
40 this.y = y;
41 }
42
43 /** @hide */
44 public Short2(Short2 source) {
45 this.x = source.x;
46 this.y = source.y;
47 }
48
49 /** @hide
50 * Vector add
51 *
52 * @param a
53 */
54 public void add(Short2 a) {
55 this.x += a.x;
56 this.y += a.y;
57 }
58
59 /** @hide
60 * Vector add
61 *
62 * @param a
63 * @param b
64 * @return
65 */
66 public static Short2 add(Short2 a, Short2 b) {
67 Short2 result = new Short2();
68 result.x = (short)(a.x + b.x);
69 result.y = (short)(a.y + b.y);
70
71 return result;
72 }
73
74 /** @hide
75 * Vector add
76 *
77 * @param value
78 */
79 public void add(short value) {
80 x += value;
81 y += value;
82 }
83
84 /** @hide
85 * Vector add
86 *
87 * @param a
88 * @param b
89 * @return
90 */
91 public static Short2 add(Short2 a, short b) {
92 Short2 result = new Short2();
93 result.x = (short)(a.x + b);
94 result.y = (short)(a.y + b);
95
96 return result;
97 }
98
99 /** @hide
100 * Vector subtraction
101 *
102 * @param a
103 */
104 public void sub(Short2 a) {
105 this.x -= a.x;
106 this.y -= a.y;
107 }
108
109 /** @hide
110 * Vector subtraction
111 *
112 * @param a
113 * @param b
114 * @return
115 */
116 public static Short2 sub(Short2 a, Short2 b) {
117 Short2 result = new Short2();
118 result.x = (short)(a.x - b.x);
119 result.y = (short)(a.y - b.y);
120
121 return result;
122 }
123
124 /** @hide
125 * Vector subtraction
126 *
127 * @param value
128 */
129 public void sub(short value) {
130 x -= value;
131 y -= value;
132 }
133
134 /** @hide
135 * Vector subtraction
136 *
137 * @param a
138 * @param b
139 * @return
140 */
141 public static Short2 sub(Short2 a, short b) {
142 Short2 result = new Short2();
143 result.x = (short)(a.x - b);
144 result.y = (short)(a.y - b);
145
146 return result;
147 }
148
149 /** @hide
150 * Vector multiplication
151 *
152 * @param a
153 */
154 public void mul(Short2 a) {
155 this.x *= a.x;
156 this.y *= a.y;
157 }
158
159 /** @hide
160 * Vector multiplication
161 *
162 * @param a
163 * @param b
164 * @return
165 */
166 public static Short2 mul(Short2 a, Short2 b) {
167 Short2 result = new Short2();
168 result.x = (short)(a.x * b.x);
169 result.y = (short)(a.y * b.y);
170
171 return result;
172 }
173
174 /** @hide
175 * Vector multiplication
176 *
177 * @param value
178 */
179 public void mul(short value) {
180 x *= value;
181 y *= value;
182 }
183
184 /** @hide
185 * Vector multiplication
186 *
187 * @param a
188 * @param b
189 * @return
190 */
191 public static Short2 mul(Short2 a, short b) {
192 Short2 result = new Short2();
193 result.x = (short)(a.x * b);
194 result.y = (short)(a.y * b);
195
196 return result;
197 }
198
199 /** @hide
200 * Vector division
201 *
202 * @param a
203 */
204 public void div(Short2 a) {
205 this.x /= a.x;
206 this.y /= a.y;
207 }
208
209 /** @hide
210 * Vector division
211 *
212 * @param a
213 * @param b
214 * @return
215 */
216 public static Short2 div(Short2 a, Short2 b) {
217 Short2 result = new Short2();
218 result.x = (short)(a.x / b.x);
219 result.y = (short)(a.y / b.y);
220
221 return result;
222 }
223
224 /** @hide
225 * Vector division
226 *
227 * @param value
228 */
229 public void div(short value) {
230 x /= value;
231 y /= value;
232 }
233
234 /** @hide
235 * Vector division
236 *
237 * @param a
238 * @param b
239 * @return
240 */
241 public static Short2 div(Short2 a, short b) {
242 Short2 result = new Short2();
243 result.x = (short)(a.x / b);
244 result.y = (short)(a.y / b);
245
246 return result;
247 }
248
249 /** @hide
250 * Vector Modulo
251 *
252 * @param a
253 */
254 public void mod(Short2 a) {
255 this.x %= a.x;
256 this.y %= a.y;
257 }
258
259 /** @hide
260 * Vector Modulo
261 *
262 * @param a
263 * @param b
264 * @return
265 */
266 public static Short2 mod(Short2 a, Short2 b) {
267 Short2 result = new Short2();
268 result.x = (short)(a.x % b.x);
269 result.y = (short)(a.y % b.y);
270
271 return result;
272 }
273
274 /** @hide
275 * Vector Modulo
276 *
277 * @param value
278 */
279 public void mod(short value) {
280 x %= value;
281 y %= value;
282 }
283
284 /** @hide
285 * Vector Modulo
286 *
287 * @param a
288 * @param b
289 * @return
290 */
291 public static Short2 mod(Short2 a, short b) {
292 Short2 result = new Short2();
293 result.x = (short)(a.x % b);
294 result.y = (short)(a.y % b);
295
296 return result;
297 }
298
299 /** @hide
300 * get vector length
301 *
302 * @return
303 */
304 public short length() {
305 return 2;
306 }
307
308 /** @hide
309 * set vector negate
310 */
311 public void negate() {
312 this.x = (short)(-x);
313 this.y = (short)(-y);
314 }
315
316 /** @hide
317 * Vector dot Product
318 *
319 * @param a
320 * @return
321 */
322 public short dotProduct(Short2 a) {
323 return (short)((x * a.x) + (y * a.y));
324 }
325
326 /** @hide
327 * Vector dot Product
328 *
329 * @param a
330 * @param b
331 * @return
332 */
333 public static short dotProduct(Short2 a, Short2 b) {
334 return (short)((b.x * a.x) + (b.y * a.y));
335 }
336
337 /** @hide
338 * Vector add Multiple
339 *
340 * @param a
341 * @param factor
342 */
343 public void addMultiple(Short2 a, short factor) {
344 x += a.x * factor;
345 y += a.y * factor;
346 }
347
348 /** @hide
349 * set vector value by Short2
350 *
351 * @param a
352 */
353 public void set(Short2 a) {
354 this.x = a.x;
355 this.y = a.y;
356 }
357
358 /** @hide
359 * set the vector field value by Short
360 *
361 * @param a
362 * @param b
363 */
364 public void setValues(short a, short b) {
365 this.x = a;
366 this.y = b;
367 }
368
369 /** @hide
370 * return the element sum of vector
371 *
372 * @return
373 */
374 public short elementSum() {
375 return (short)(x + y);
376 }
377
378 /** @hide
379 * get the vector field value by index
380 *
381 * @param i
382 * @return
383 */
384 public short get(int i) {
385 switch (i) {
386 case 0:
387 return (short)(x);
388 case 1:
389 return (short)(y);
390 default:
391 throw new IndexOutOfBoundsException("Index: i");
392 }
393 }
394
395 /** @hide
396 * set the vector field value by index
397 *
398 * @param i
399 * @param value
400 */
401 public void setAt(int i, short value) {
402 switch (i) {
403 case 0:
404 x = value;
405 return;
406 case 1:
407 y = value;
408 return;
409 default:
410 throw new IndexOutOfBoundsException("Index: i");
411 }
412 }
413
414 /** @hide
415 * add the vector field value by index
416 *
417 * @param i
418 * @param value
419 */
420 public void addAt(int i, short value) {
421 switch (i) {
422 case 0:
423 x += value;
424 return;
425 case 1:
426 y += value;
427 return;
428 default:
429 throw new IndexOutOfBoundsException("Index: i");
430 }
431 }
432
433 /** @hide
434 * copy the vector to short array
435 *
436 * @param data
437 * @param offset
438 */
439 public void copyTo(short[] data, int offset) {
440 data[offset] = (short)(x);
441 data[offset + 1] = (short)(y);
442 }
Jason Sams25430d02010-02-02 15:26:40 -0800443}