• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
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 
17 package android.renderscript;
18 
19 
20 /**
21  * Class for exposing the native RenderScript byte2 type back to the Android system.
22  *
23  **/
24 public class Byte2 {
25     public byte x;
26     public byte y;
27 
Byte2()28     public Byte2() {
29     }
30 
Byte2(byte initX, byte initY)31     public Byte2(byte initX, byte initY) {
32         x = initX;
33         y = initY;
34     }
35 
36     /** @hide */
Byte2(Byte2 source)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      */
add(Byte2 a)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      */
add(Byte2 a, Byte2 b)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      */
add(byte value)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      */
add(Byte2 a, byte b)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      */
sub(Byte2 a)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      */
sub(Byte2 a, Byte2 b)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      */
sub(byte value)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      */
sub(Byte2 a, byte b)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      */
mul(Byte2 a)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      */
mul(Byte2 a, Byte2 b)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      */
mul(byte value)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      */
mul(Byte2 a, byte b)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      */
div(Byte2 a)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      */
div(Byte2 a, Byte2 b)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      */
div(byte value)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      */
div(Byte2 a, byte b)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      */
length()247     public byte length() {
248         return 2;
249     }
250 
251     /** @hide
252      * set vector negate
253      */
negate()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      */
dotProduct(Byte2 a)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      */
dotProduct(Byte2 a, Byte2 b)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      */
addMultiple(Byte2 a, byte factor)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      */
set(Byte2 a)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      */
setValues(byte a, byte b)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      */
elementSum()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      */
get(int i)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      */
setAt(int i, byte value)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      */
addAt(int i, byte value)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      */
copyTo(byte[] data, int offset)382     public void copyTo(byte[] data, int offset) {
383         data[offset] = x;
384         data[offset + 1] = y;
385     }
386 
387 }
388 
389 
390 
391 
392