Home | History | Annotate | Download | only in test
      1 // Copyright (C) 2009 The Android Open Source Project
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use this file except in compliance with the License.
      5 // You may obtain a copy of the License at
      6 //
      7 //      http://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 #pragma version(1)
     16 
     17 #pragma rs java_package_name(com.android.rs.test_v14)
     18 
     19 #include "rs_graphics.rsh"
     20 
     21 float gDY;
     22 
     23 rs_font gFont;
     24 
     25 typedef struct ListAllocs_s {
     26     rs_allocation text;
     27     int result;
     28 } ListAllocs;
     29 
     30 ListAllocs *gList;
     31 
     32 void init() {
     33     gDY = 0.0f;
     34 }
     35 
     36 int textPos = 0;
     37 
     38 int root(void) {
     39 
     40     rsgClearColor(0.0f, 0.0f, 0.0f, 0.0f);
     41     rsgClearDepth(1.0f);
     42 
     43     textPos -= (int)gDY*2;
     44     gDY *= 0.95;
     45 
     46     rsgFontColor(0.9f, 0.9f, 0.9f, 1.0f);
     47     rsgBindFont(gFont);
     48 
     49     rs_allocation listAlloc;
     50     listAlloc = rsGetAllocation(gList);
     51     int allocSize = rsAllocationGetDimX(listAlloc);
     52 
     53     int width = rsgGetWidth();
     54     int height = rsgGetHeight();
     55 
     56     int itemHeight = 80;
     57     int totalItemHeight = itemHeight * allocSize;
     58 
     59     /* Prevent scrolling above the top of the list */
     60     int firstItem = height - totalItemHeight;
     61     if (firstItem < 0) {
     62         firstItem = 0;
     63     }
     64 
     65     /* Prevent scrolling past the last line of the list */
     66     int lastItem = -1 * (totalItemHeight - height);
     67     if (lastItem > 0) {
     68         lastItem = 0;
     69     }
     70 
     71     if (textPos > firstItem) {
     72         textPos = firstItem;
     73     }
     74     else if (textPos < lastItem) {
     75         textPos = lastItem;
     76     }
     77 
     78     int currentYPos = itemHeight + textPos;
     79 
     80     for(int i = 0; i < allocSize; i ++) {
     81         if(currentYPos - itemHeight > height) {
     82             break;
     83         }
     84 
     85         if(currentYPos > 0) {
     86             switch(gList[i].result) {
     87                 case 1: /* Passed */
     88                     rsgFontColor(0.5f, 0.9f, 0.5f, 1.0f);
     89                     break;
     90                 case -1: /* Failed */
     91                     rsgFontColor(0.9f, 0.5f, 0.5f, 1.0f);
     92                     break;
     93                 case 0: /* Still Testing */
     94                     rsgFontColor(0.9f, 0.9f, 0.5f, 1.0f);
     95                     break;
     96                 default: /* Unknown */
     97                     rsgFontColor(0.9f, 0.9f, 0.9f, 1.0f);
     98                     break;
     99             }
    100             rsgDrawRect(0, currentYPos - 1, width, currentYPos, 0);
    101             rsgDrawText(gList[i].text, 30, currentYPos - 32);
    102         }
    103         currentYPos += itemHeight;
    104     }
    105 
    106     return 10;
    107 }
    108