• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2013 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 
17 package android.renderscript;
18 
19 /**
20  * Vector version of the basic int type.
21  * Provides three int fields packed.
22  *
23  * @deprecated Renderscript has been deprecated in API level 31. Please refer to the <a
24  * href="https://developer.android.com/guide/topics/renderscript/migration-guide">migration
25  * guide</a> for the proposed alternatives.
26  */
27 @Deprecated
28 public class Int3 {
29     public int x;
30     public int y;
31     public int z;
32 
Int3()33     public Int3() {
34     }
35 
36     /** @hide */
Int3(int i)37     public Int3(int i) {
38         this.x = this.y = this.z = i;
39     }
40 
Int3(int x, int y, int z)41     public Int3(int x, int y, int z) {
42         this.x = x;
43         this.y = y;
44         this.z = z;
45     }
46 
47     /** @hide */
Int3(Int3 source)48     public Int3(Int3 source) {
49         this.x = source.x;
50         this.y = source.y;
51         this.z = source.z;
52     }
53 
54     /** @hide
55      * Vector add
56      *
57      * @param a
58      */
add(Int3 a)59     public void add(Int3 a) {
60         this.x += a.x;
61         this.y += a.y;
62         this.z += a.z;
63     }
64 
65     /** @hide
66      * Vector add
67      *
68      * @param a
69      * @param b
70      * @return
71      */
add(Int3 a, Int3 b)72     public static Int3 add(Int3 a, Int3 b) {
73         Int3 result = new Int3();
74         result.x = a.x + b.x;
75         result.y = a.y + b.y;
76         result.z = a.z + b.z;
77 
78         return result;
79     }
80 
81     /** @hide
82      * Vector add
83      *
84      * @param value
85      */
add(int value)86     public void add(int value) {
87         x += value;
88         y += value;
89         z += value;
90     }
91 
92     /** @hide
93      * Vector add
94      *
95      * @param a
96      * @param b
97      * @return
98      */
add(Int3 a, int b)99     public static Int3 add(Int3 a, int b) {
100         Int3 result = new Int3();
101         result.x = a.x + b;
102         result.y = a.y + b;
103         result.z = a.z + b;
104 
105         return result;
106     }
107 
108     /** @hide
109      * Vector subtraction
110      *
111      * @param a
112      */
sub(Int3 a)113     public void sub(Int3 a) {
114         this.x -= a.x;
115         this.y -= a.y;
116         this.z -= a.z;
117     }
118 
119     /** @hide
120      * Vector subtraction
121      *
122      * @param a
123      * @param b
124      * @return
125      */
sub(Int3 a, Int3 b)126     public static Int3 sub(Int3 a, Int3 b) {
127         Int3 result = new Int3();
128         result.x = a.x - b.x;
129         result.y = a.y - b.y;
130         result.z = a.z - b.z;
131 
132         return result;
133     }
134 
135     /** @hide
136      * Vector subtraction
137      *
138      * @param value
139      */
sub(int value)140     public void sub(int value) {
141         x -= value;
142         y -= value;
143         z -= value;
144     }
145 
146     /** @hide
147      * Vector subtraction
148      *
149      * @param a
150      * @param b
151      * @return
152      */
sub(Int3 a, int b)153     public static Int3 sub(Int3 a, int b) {
154         Int3 result = new Int3();
155         result.x = a.x - b;
156         result.y = a.y - b;
157         result.z = a.z - b;
158 
159         return result;
160     }
161 
162     /** @hide
163      * Vector multiplication
164      *
165      * @param a
166      */
mul(Int3 a)167     public void mul(Int3 a) {
168         this.x *= a.x;
169         this.y *= a.y;
170         this.z *= a.z;
171     }
172 
173     /** @hide
174      * Vector multiplication
175      *
176      * @param a
177      * @param b
178      * @return
179      */
mul(Int3 a, Int3 b)180     public static Int3 mul(Int3 a, Int3 b) {
181         Int3 result = new Int3();
182         result.x = a.x * b.x;
183         result.y = a.y * b.y;
184         result.z = a.z * b.z;
185 
186         return result;
187     }
188 
189     /** @hide
190      * Vector multiplication
191      *
192      * @param value
193      */
mul(int value)194     public void mul(int value) {
195         x *= value;
196         y *= value;
197         z *= value;
198     }
199 
200     /** @hide
201      * Vector multiplication
202      *
203      * @param a
204      * @param b
205      * @return
206      */
mul(Int3 a, int b)207     public static Int3 mul(Int3 a, int b) {
208         Int3 result = new Int3();
209         result.x = a.x * b;
210         result.y = a.y * b;
211         result.z = a.z * b;
212 
213         return result;
214     }
215 
216     /** @hide
217      * Vector division
218      *
219      * @param a
220      */
div(Int3 a)221     public void div(Int3 a) {
222         this.x /= a.x;
223         this.y /= a.y;
224         this.z /= a.z;
225     }
226 
227     /** @hide
228      * Vector division
229      *
230      * @param a
231      * @param b
232      * @return
233      */
div(Int3 a, Int3 b)234     public static Int3 div(Int3 a, Int3 b) {
235         Int3 result = new Int3();
236         result.x = a.x / b.x;
237         result.y = a.y / b.y;
238         result.z = a.z / b.z;
239 
240         return result;
241     }
242 
243     /** @hide
244      * Vector division
245      *
246      * @param value
247      */
div(int value)248     public void div(int value) {
249         x /= value;
250         y /= value;
251         z /= value;
252     }
253 
254     /** @hide
255      * Vector division
256      *
257      * @param a
258      * @param b
259      * @return
260      */
div(Int3 a, int b)261     public static Int3 div(Int3 a, int b) {
262         Int3 result = new Int3();
263         result.x = a.x / b;
264         result.y = a.y / b;
265         result.z = a.z / b;
266 
267         return result;
268     }
269 
270     /** @hide
271      * Vector Modulo
272      *
273      * @param a
274      */
mod(Int3 a)275     public void mod(Int3 a) {
276         this.x %= a.x;
277         this.y %= a.y;
278         this.z %= a.z;
279     }
280 
281     /** @hide
282      * Vector Modulo
283      *
284      * @param a
285      * @param b
286      * @return
287      */
mod(Int3 a, Int3 b)288     public static Int3 mod(Int3 a, Int3 b) {
289         Int3 result = new Int3();
290         result.x = a.x % b.x;
291         result.y = a.y % b.y;
292         result.z = a.z % b.z;
293 
294         return result;
295     }
296 
297     /** @hide
298      * Vector Modulo
299      *
300      * @param value
301      */
mod(int value)302     public void mod(int value) {
303         x %= value;
304         y %= value;
305         z %= value;
306     }
307 
308     /** @hide
309      * Vector Modulo
310      *
311      * @param a
312      * @param b
313      * @return
314      */
mod(Int3 a, int b)315     public static Int3 mod(Int3 a, int b) {
316         Int3 result = new Int3();
317         result.x = a.x % b;
318         result.y = a.y % b;
319         result.z = a.z % b;
320 
321         return result;
322     }
323 
324     /** @hide
325      * get vector length
326      *
327      * @return
328      */
length()329     public int length() {
330         return 3;
331     }
332 
333     /** @hide
334      * set vector negate
335      */
negate()336     public void negate() {
337         this.x = -x;
338         this.y = -y;
339         this.z = -z;
340     }
341 
342     /** @hide
343      * Vector dot Product
344      *
345      * @param a
346      * @return
347      */
dotProduct(Int3 a)348     public int dotProduct(Int3 a) {
349         return (int)((x * a.x) + (y * a.y) + (z * a.z));
350     }
351 
352     /** @hide
353      * Vector dot Product
354      *
355      * @param a
356      * @param b
357      * @return
358      */
dotProduct(Int3 a, Int3 b)359     public static int dotProduct(Int3 a, Int3 b) {
360         return (int)((b.x * a.x) + (b.y * a.y) + (b.z * a.z));
361     }
362 
363     /** @hide
364      * Vector add Multiple
365      *
366      * @param a
367      * @param factor
368      */
addMultiple(Int3 a, int factor)369     public void addMultiple(Int3 a, int factor) {
370         x += a.x * factor;
371         y += a.y * factor;
372         z += a.z * factor;
373     }
374 
375     /** @hide
376      * set vector value by Int3
377      *
378      * @param a
379      */
set(Int3 a)380     public void set(Int3 a) {
381         this.x = a.x;
382         this.y = a.y;
383         this.z = a.z;
384     }
385 
386     /** @hide
387      * set the vector field value by Int
388      *
389      * @param a
390      * @param b
391      * @param c
392      */
setValues(int a, int b, int c)393     public void setValues(int a, int b, int c) {
394         this.x = a;
395         this.y = b;
396         this.z = c;
397     }
398 
399     /** @hide
400      * return the element sum of vector
401      *
402      * @return
403      */
elementSum()404     public int elementSum() {
405         return (int)(x + y + z);
406     }
407 
408     /** @hide
409      * get the vector field value by index
410      *
411      * @param i
412      * @return
413      */
get(int i)414     public int get(int i) {
415         switch (i) {
416         case 0:
417             return (int)(x);
418         case 1:
419             return (int)(y);
420         case 2:
421             return (int)(z);
422         default:
423             throw new IndexOutOfBoundsException("Index: i");
424         }
425     }
426 
427     /** @hide
428      * set the vector field value by index
429      *
430      * @param i
431      * @param value
432      */
setAt(int i, int value)433     public void setAt(int i, int value) {
434         switch (i) {
435         case 0:
436             x = value;
437             return;
438         case 1:
439             y = value;
440             return;
441         case 2:
442             z = value;
443             return;
444         default:
445             throw new IndexOutOfBoundsException("Index: i");
446         }
447     }
448 
449     /** @hide
450      * add the vector field value by index
451      *
452      * @param i
453      * @param value
454      */
addAt(int i, int value)455     public void addAt(int i, int value) {
456         switch (i) {
457         case 0:
458             x += value;
459             return;
460         case 1:
461             y += value;
462             return;
463         case 2:
464             z += value;
465             return;
466         default:
467             throw new IndexOutOfBoundsException("Index: i");
468         }
469     }
470 
471     /** @hide
472      * copy the vector to int array
473      *
474      * @param data
475      * @param offset
476      */
copyTo(int[] data, int offset)477     public void copyTo(int[] data, int offset) {
478         data[offset] = (int)(x);
479         data[offset + 1] = (int)(y);
480         data[offset + 2] = (int)(z);
481     }
482 }
483