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