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