1e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams/*
2e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams * Copyright (C) 2008 The Android Open Source Project
3e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams *
4e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams * Licensed under the Apache License, Version 2.0 (the "License");
5e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams * you may not use this file except in compliance with the License.
6e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams * You may obtain a copy of the License at
7e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams *
8e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams *      http://www.apache.org/licenses/LICENSE-2.0
9e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams *
10e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams * Unless required by applicable law or agreed to in writing, software
11e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams * distributed under the License is distributed on an "AS IS" BASIS,
12e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams * See the License for the specific language governing permissions and
14e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams * limitations under the License.
15e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams */
16e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
17e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Samspackage com.example.android.rs.miscsamples;
18e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
19e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Samsimport java.io.Writer;
20e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Samsimport java.util.Vector;
21e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
22e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Samsimport android.content.res.Resources;
23e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Samsimport android.renderscript.*;
24e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Samsimport android.renderscript.ProgramStore.DepthFunc;
25e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Samsimport android.util.Log;
26e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
27e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
28e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Samspublic class RsListRS {
29e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
30e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    private final int STATE_LAST_FOCUS = 1;
31e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
32e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    private static final String[] DATA_LIST = {
33e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
34e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",
35e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
36e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium",
37e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia",
38e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil",
39e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "British Indian Ocean Territory", "British Virgin Islands", "Brunei", "Bulgaria",
40e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Burkina Faso", "Burundi", "Cote d'Ivoire", "Cambodia", "Cameroon", "Canada", "Cape Verde",
41e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Cayman Islands", "Central African Republic", "Chad", "Chile", "China",
42e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo",
43e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Cook Islands", "Costa Rica", "Croatia", "Cuba", "Cyprus", "Czech Republic",
44e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Democratic Republic of the Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic",
45e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea",
46e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Estonia", "Ethiopia", "Faeroe Islands", "Falkland Islands", "Fiji", "Finland",
47e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Former Yugoslav Republic of Macedonia", "France", "French Guiana", "French Polynesia",
48e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "French Southern Territories", "Gabon", "Georgia", "Germany", "Ghana", "Gibraltar",
49e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guinea", "Guinea-Bissau",
50e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Guyana", "Haiti", "Heard Island and McDonald Islands", "Honduras", "Hong Kong", "Hungary",
51e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica",
52e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kuwait", "Kyrgyzstan", "Laos",
53e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg",
54e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Macau", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands",
55e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova",
56e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia",
57e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Nauru", "Nepal", "Netherlands", "Netherlands Antilles", "New Caledonia", "New Zealand",
58e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "North Korea", "Northern Marianas",
59e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "Peru",
60e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Philippines", "Pitcairn Islands", "Poland", "Portugal", "Puerto Rico", "Qatar",
61e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Reunion", "Romania", "Russia", "Rwanda", "Sqo Tome and Principe", "Saint Helena",
62e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Saint Kitts and Nevis", "Saint Lucia", "Saint Pierre and Miquelon",
63e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Saudi Arabia", "Senegal",
64e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands",
65e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Korea",
66e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden",
67e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "The Bahamas",
68e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "The Gambia", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey",
69e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Virgin Islands", "Uganda",
70e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Ukraine", "United Arab Emirates", "United Kingdom",
71e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan",
72e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Wallis and Futuna", "Western Sahara",
73e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    "Yemen", "Yugoslavia", "Zambia", "Zimbabwe"
74e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    };
75e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
76e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    public RsListRS() {
77e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    }
78e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
79e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    public void init(RenderScriptGL rs, Resources res) {
80e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        mRS = rs;
81e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        mRes = res;
82e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        initRS();
83e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    }
84e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
85e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    private Resources mRes;
86e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    private RenderScriptGL mRS;
87e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    private Font mItalic;
88e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
89e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    ScriptField_ListAllocs_s mListAllocs;
90e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
91e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    private ScriptC_rslist mScript;
92e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
93e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    int mLastX;
94e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    int mLastY;
95e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
96e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    public void onActionDown(int x, int y) {
97e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        mScript.set_gDY(0.0f);
98e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
99e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        mLastX = x;
100e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        mLastY = y;
101e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    }
102e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
103e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    public void onActionMove(int x, int y) {
104e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        int dx = mLastX - x;
105e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        int dy = mLastY - y;
106e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
107e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        if (Math.abs(dy) <= 2) {
108e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams            dy = 0;
109e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        }
110e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
111e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        mScript.set_gDY(dy);
112e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
113e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        mLastX = x;
114e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        mLastY = y;
115e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    }
116e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
117e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    private void initRS() {
118e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
119e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        mScript = new ScriptC_rslist(mRS, mRes, R.raw.rslist);
120e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
121e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        mListAllocs = new ScriptField_ListAllocs_s(mRS, DATA_LIST.length);
122e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        for (int i = 0; i < DATA_LIST.length; i ++) {
123e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams            ScriptField_ListAllocs_s.Item listElem = new ScriptField_ListAllocs_s.Item();
124e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams            listElem.text = Allocation.createFromString(mRS, DATA_LIST[i], Allocation.USAGE_SCRIPT);
125e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams            mListAllocs.set(listElem, i, false);
126e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        }
127e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
128e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        mListAllocs.copyAll();
129e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
130e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        mScript.bind_gList(mListAllocs);
131e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
132e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        mItalic = Font.create(mRS, mRes, "serif", Font.Style.BOLD_ITALIC, 8);
133e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        mScript.set_gItalic(mItalic);
134e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
135e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        mRS.bindRootScript(mScript);
136e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    }
137e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams}
138e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
139e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
140e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
141