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_v11) 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(int launchID) { 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 rsSetObject(&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