Home | History | Annotate | Download | only in renderscript
      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 
     28     public Byte2() {
     29     }
     30 
     31     public Byte2(byte initX, byte initY) {
     32         x = initX;
     33         y = initY;
     34     }
     35 
     36     /** @hide */
     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      */
     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      */
     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      */
     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      */
     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      */
     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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    247     public byte length() {
    248         return 2;
    249     }
    250 
    251     /** @hide
    252      * set vector negate
    253      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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      */
    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