169f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams/* 2adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines * Copyright (C) 2008-2012 The Android Open Source Project 369f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams * 469f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 569f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams * you may not use this file except in compliance with the License. 669f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams * You may obtain a copy of the License at 769f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams * 869f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams * http://www.apache.org/licenses/LICENSE-2.0 969f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams * 1069f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams * Unless required by applicable law or agreed to in writing, software 1169f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 1269f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1369f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams * See the License for the specific language governing permissions and 1469f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams * limitations under the License. 1569f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams */ 1669f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams 1769f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Samspackage android.renderscript; 1869f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams 1908a81583c18a849e442ceeb8d7baeca743fb3be8Jason Samsimport android.util.SparseArray; 2008a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 219c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines/** 22c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * The parent class for all executable scripts. This should not be used by 23c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * applications. 2469f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams **/ 2569f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Samspublic class Script extends BaseObj { 2608a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 2708a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams /** 2808a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams * KernelID is an identifier for a Script + root function pair. It is used 2908a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams * as an identifier for ScriptGroup creation. 3008a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams * 3108a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams * This class should not be directly created. Instead use the method in the 3208a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams * reflected or intrinsic code "getKernelID_funcname()". 3308a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams * 3408a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams */ 3508a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams public static final class KernelID extends BaseObj { 3608a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams Script mScript; 3708a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams int mSlot; 3808a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams int mSig; 397a629fac82f88126642081b4474879f6a883e313Tim Murray KernelID(long id, RenderScript rs, Script s, int slot, int sig) { 4008a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams super(id, rs); 4108a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams mScript = s; 4208a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams mSlot = slot; 4308a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams mSig = sig; 4408a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams } 4508a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams } 4608a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 4708a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams private final SparseArray<KernelID> mKIDs = new SparseArray<KernelID>(); 4808a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams /** 4908a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams * Only to be used by generated reflected classes. 5008a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams */ 5108a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams protected KernelID createKernelID(int slot, int sig, Element ein, Element eout) { 5208a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams KernelID k = mKIDs.get(slot); 5308a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams if (k != null) { 5408a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams return k; 5508a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams } 5608a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 577a629fac82f88126642081b4474879f6a883e313Tim Murray long id = mRS.nScriptKernelIDCreate(getID(mRS), slot, sig); 5808a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams if (id == 0) { 5908a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams throw new RSDriverException("Failed to create KernelID"); 6008a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams } 6108a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 6208a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams k = new KernelID(id, mRS, this, slot, sig); 6308a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams mKIDs.put(slot, k); 6408a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams return k; 6508a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams } 6608a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 6708a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams /** 6808a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams * FieldID is an identifier for a Script + exported field pair. It is used 6908a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams * as an identifier for ScriptGroup creation. 7008a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams * 7108a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams * This class should not be directly created. Instead use the method in the 7208a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams * reflected or intrinsic code "getFieldID_funcname()". 7308a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams * 7408a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams */ 7508a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams public static final class FieldID extends BaseObj { 7608a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams Script mScript; 7708a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams int mSlot; 787a629fac82f88126642081b4474879f6a883e313Tim Murray FieldID(long id, RenderScript rs, Script s, int slot) { 7908a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams super(id, rs); 8008a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams mScript = s; 8108a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams mSlot = slot; 8208a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams } 8308a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams } 8408a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 8508a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams private final SparseArray<FieldID> mFIDs = new SparseArray(); 8608a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams /** 8708a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams * Only to be used by generated reflected classes. 8808a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams */ 8908a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams protected FieldID createFieldID(int slot, Element e) { 9008a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams FieldID f = mFIDs.get(slot); 9108a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams if (f != null) { 9208a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams return f; 9308a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams } 9408a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 957a629fac82f88126642081b4474879f6a883e313Tim Murray long id = mRS.nScriptFieldIDCreate(getID(mRS), slot); 9608a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams if (id == 0) { 9708a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams throw new RSDriverException("Failed to create FieldID"); 9808a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams } 9908a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 10008a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams f = new FieldID(id, mRS, this, slot); 10108a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams mFIDs.put(slot, f); 10208a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams return f; 10308a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams } 10408a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 10508a81583c18a849e442ceeb8d7baeca743fb3be8Jason Sams 1069c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 10767e3d206ca80dd97309ca63169503088cb509bdeJason Sams * Only intended for use by generated reflected code. 10867e3d206ca80dd97309ca63169503088cb509bdeJason Sams * 10967e3d206ca80dd97309ca63169503088cb509bdeJason Sams */ 1102d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams protected void invoke(int slot) { 111e07694b24f7d12d72b084b6651356681ebd0efd6Jason Sams mRS.nScriptInvoke(getID(mRS), slot); 1122d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams } 1132d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams 1149c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 11567e3d206ca80dd97309ca63169503088cb509bdeJason Sams * Only intended for use by generated reflected code. 11667e3d206ca80dd97309ca63169503088cb509bdeJason Sams * 11767e3d206ca80dd97309ca63169503088cb509bdeJason Sams */ 11896ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams protected void invoke(int slot, FieldPacker v) { 11996ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams if (v != null) { 120e07694b24f7d12d72b084b6651356681ebd0efd6Jason Sams mRS.nScriptInvokeV(getID(mRS), slot, v.getData()); 12196ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams } else { 122e07694b24f7d12d72b084b6651356681ebd0efd6Jason Sams mRS.nScriptInvoke(getID(mRS), slot); 12396ed4cfa62dd09aafb3f9da01e047661b4fe3c95Jason Sams } 1244d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams } 1254d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 1269c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 1276e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams * Only intended for use by generated reflected code. 1286e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams * 1296e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams */ 1306e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v) { 131678cc7fe9fef00fb3381e64f95cc6907796bcd8eJason Sams mRS.validate(); 132678cc7fe9fef00fb3381e64f95cc6907796bcd8eJason Sams mRS.validateObject(ain); 133678cc7fe9fef00fb3381e64f95cc6907796bcd8eJason Sams mRS.validateObject(aout); 1346e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams if (ain == null && aout == null) { 1356e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams throw new RSIllegalArgumentException( 1366e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams "At least one of ain or aout is required to be non-null."); 1376e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams } 1387a629fac82f88126642081b4474879f6a883e313Tim Murray long in_id = 0; 1396e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams if (ain != null) { 140e07694b24f7d12d72b084b6651356681ebd0efd6Jason Sams in_id = ain.getID(mRS); 1416e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams } 1427a629fac82f88126642081b4474879f6a883e313Tim Murray long out_id = 0; 1436e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams if (aout != null) { 144e07694b24f7d12d72b084b6651356681ebd0efd6Jason Sams out_id = aout.getID(mRS); 1456e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams } 1466e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams byte[] params = null; 1476e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams if (v != null) { 1486e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams params = v.getData(); 1496e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams } 150e07694b24f7d12d72b084b6651356681ebd0efd6Jason Sams mRS.nScriptForEach(getID(mRS), slot, in_id, out_id, params); 1516e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams } 1526e494d3ab606be8c06f8d4930fbec572bbfa15c2Jason Sams 153f64cca905c45fcc74aacf78e6510e133385110cfJason Sams /** 154f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * Only intended for use by generated reflected code. 155f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * 156f64cca905c45fcc74aacf78e6510e133385110cfJason Sams */ 157eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v, LaunchOptions sc) { 158678cc7fe9fef00fb3381e64f95cc6907796bcd8eJason Sams mRS.validate(); 159678cc7fe9fef00fb3381e64f95cc6907796bcd8eJason Sams mRS.validateObject(ain); 160678cc7fe9fef00fb3381e64f95cc6907796bcd8eJason Sams mRS.validateObject(aout); 161eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray if (ain == null && aout == null) { 162eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray throw new RSIllegalArgumentException( 163eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray "At least one of ain or aout is required to be non-null."); 164eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray } 165ba9dd06176cf833898832861114e225fdb428ea0Tim Murray 166ba9dd06176cf833898832861114e225fdb428ea0Tim Murray if (sc == null) { 167ba9dd06176cf833898832861114e225fdb428ea0Tim Murray forEach(slot, ain, aout, v); 168ba9dd06176cf833898832861114e225fdb428ea0Tim Murray return; 169ba9dd06176cf833898832861114e225fdb428ea0Tim Murray } 1707a629fac82f88126642081b4474879f6a883e313Tim Murray long in_id = 0; 171eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray if (ain != null) { 172eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray in_id = ain.getID(mRS); 173eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray } 1747a629fac82f88126642081b4474879f6a883e313Tim Murray long out_id = 0; 175eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray if (aout != null) { 176eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray out_id = aout.getID(mRS); 177eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray } 178eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray byte[] params = null; 179eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray if (v != null) { 180eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray params = v.getData(); 181eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray } 182eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray mRS.nScriptForEachClipped(getID(mRS), slot, in_id, out_id, params, sc.xstart, sc.xend, sc.ystart, sc.yend, sc.zstart, sc.zend); 183eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray } 1844d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 185949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes /** 186949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes * Only intended for use by generated reflected code. 187949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes * 188949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes * @hide 189949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes */ 190949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes protected void forEach(int slot, Allocation[] ains, Allocation aout, FieldPacker v) { 191949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes forEach(slot, ains, aout, v, new LaunchOptions()); 192949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes } 193949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 194949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes /** 195949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes * Only intended for use by generated reflected code. 196949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes * 197949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes * @hide 198949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes */ 199949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes protected void forEach(int slot, Allocation[] ains, Allocation aout, FieldPacker v, LaunchOptions sc) { 200949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes mRS.validate(); 201949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 202949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes for (Allocation ain : ains) { 203949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes mRS.validateObject(ain); 204949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes } 205949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 206949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes mRS.validateObject(aout); 207949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes if (ains == null && aout == null) { 208949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes throw new RSIllegalArgumentException( 209949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes "At least one of ain or aout is required to be non-null."); 210949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes } 211949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 212949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes if (sc == null) { 213949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes forEach(slot, ains, aout, v); 214949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes return; 215949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes } 216949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 217949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes long[] in_ids = new long[ains.length]; 218949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes for (int index = 0; index < ains.length; ++index) { 219949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes in_ids[index] = ains[index].getID(mRS); 220949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes } 221949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 222949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes long out_id = 0; 223949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes if (aout != null) { 224949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes out_id = aout.getID(mRS); 225949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes } 226949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes byte[] params = null; 227949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes if (v != null) { 228949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes params = v.getData(); 229949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes } 230949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes mRS.nScriptForEachMultiClipped(getID(mRS), slot, in_ids, out_id, params, sc.xstart, sc.xend, sc.ystart, sc.yend, sc.zstart, sc.zend); 231949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes } 232949610653fdf55dd2cb3c846047e6aa2c6d73f0dChris Wailes 2337a629fac82f88126642081b4474879f6a883e313Tim Murray Script(long id, RenderScript rs) { 2340de9444aa6c25d2c586e8204a6168d10e67376e0Alex Sakhartchouk super(id, rs); 23569f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams } 23669f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams 23767e3d206ca80dd97309ca63169503088cb509bdeJason Sams 2389c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 23967e3d206ca80dd97309ca63169503088cb509bdeJason Sams * Only intended for use by generated reflected code. 24067e3d206ca80dd97309ca63169503088cb509bdeJason Sams * 24167e3d206ca80dd97309ca63169503088cb509bdeJason Sams */ 24269f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams public void bindAllocation(Allocation va, int slot) { 243771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 244678cc7fe9fef00fb3381e64f95cc6907796bcd8eJason Sams mRS.validateObject(va); 2454d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams if (va != null) { 246cf9c894a9b7523cd5ec707218b89517f67caa047Jason Sams if (mRS.getApplicationContext().getApplicationInfo().targetSdkVersion >= 20) { 247cf9c894a9b7523cd5ec707218b89517f67caa047Jason Sams final Type t = va.mType; 248cf9c894a9b7523cd5ec707218b89517f67caa047Jason Sams if (t.hasMipmaps() || t.hasFaces() || (t.getY() != 0) || (t.getZ() != 0)) { 249cf9c894a9b7523cd5ec707218b89517f67caa047Jason Sams throw new RSIllegalArgumentException( 250cf9c894a9b7523cd5ec707218b89517f67caa047Jason Sams "API 20+ only allows simple 1D allocations to be used with bind."); 251cf9c894a9b7523cd5ec707218b89517f67caa047Jason Sams } 252cf9c894a9b7523cd5ec707218b89517f67caa047Jason Sams } 253e07694b24f7d12d72b084b6651356681ebd0efd6Jason Sams mRS.nScriptBindAllocation(getID(mRS), va.getID(mRS), slot); 2544d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams } else { 255e07694b24f7d12d72b084b6651356681ebd0efd6Jason Sams mRS.nScriptBindAllocation(getID(mRS), 0, slot); 2564d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams } 2574d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams } 2584d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 2599c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 26067e3d206ca80dd97309ca63169503088cb509bdeJason Sams * Only intended for use by generated reflected code. 26167e3d206ca80dd97309ca63169503088cb509bdeJason Sams * 26267e3d206ca80dd97309ca63169503088cb509bdeJason Sams */ 2634d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams public void setVar(int index, float v) { 264e07694b24f7d12d72b084b6651356681ebd0efd6Jason Sams mRS.nScriptSetVarF(getID(mRS), index, v); 2654d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams } 2667c4caadb939b1563328251c156262c179a685c70Tim Murray public float getVarF(int index) { 2677c4caadb939b1563328251c156262c179a685c70Tim Murray return mRS.nScriptGetVarF(getID(mRS), index); 2687c4caadb939b1563328251c156262c179a685c70Tim Murray } 2694d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 2709c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 27167e3d206ca80dd97309ca63169503088cb509bdeJason Sams * Only intended for use by generated reflected code. 27267e3d206ca80dd97309ca63169503088cb509bdeJason Sams * 27367e3d206ca80dd97309ca63169503088cb509bdeJason Sams */ 274ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines public void setVar(int index, double v) { 275e07694b24f7d12d72b084b6651356681ebd0efd6Jason Sams mRS.nScriptSetVarD(getID(mRS), index, v); 276ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines } 2777c4caadb939b1563328251c156262c179a685c70Tim Murray public double getVarD(int index) { 2787c4caadb939b1563328251c156262c179a685c70Tim Murray return mRS.nScriptGetVarD(getID(mRS), index); 2797c4caadb939b1563328251c156262c179a685c70Tim Murray } 280ca54ec302f5bddd1674ea1f36cd3b7c540b2fbcaStephen Hines 2819c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 28267e3d206ca80dd97309ca63169503088cb509bdeJason Sams * Only intended for use by generated reflected code. 28367e3d206ca80dd97309ca63169503088cb509bdeJason Sams * 28467e3d206ca80dd97309ca63169503088cb509bdeJason Sams */ 2854d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams public void setVar(int index, int v) { 286e07694b24f7d12d72b084b6651356681ebd0efd6Jason Sams mRS.nScriptSetVarI(getID(mRS), index, v); 2874d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams } 2887c4caadb939b1563328251c156262c179a685c70Tim Murray public int getVarI(int index) { 2897c4caadb939b1563328251c156262c179a685c70Tim Murray return mRS.nScriptGetVarI(getID(mRS), index); 2907c4caadb939b1563328251c156262c179a685c70Tim Murray } 2917c4caadb939b1563328251c156262c179a685c70Tim Murray 2924d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams 2939c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 29467e3d206ca80dd97309ca63169503088cb509bdeJason Sams * Only intended for use by generated reflected code. 29567e3d206ca80dd97309ca63169503088cb509bdeJason Sams * 29667e3d206ca80dd97309ca63169503088cb509bdeJason Sams */ 297031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines public void setVar(int index, long v) { 298e07694b24f7d12d72b084b6651356681ebd0efd6Jason Sams mRS.nScriptSetVarJ(getID(mRS), index, v); 299031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines } 3007c4caadb939b1563328251c156262c179a685c70Tim Murray public long getVarJ(int index) { 3017c4caadb939b1563328251c156262c179a685c70Tim Murray return mRS.nScriptGetVarJ(getID(mRS), index); 3027c4caadb939b1563328251c156262c179a685c70Tim Murray } 3037c4caadb939b1563328251c156262c179a685c70Tim Murray 304031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines 3059c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 30667e3d206ca80dd97309ca63169503088cb509bdeJason Sams * Only intended for use by generated reflected code. 30767e3d206ca80dd97309ca63169503088cb509bdeJason Sams * 30867e3d206ca80dd97309ca63169503088cb509bdeJason Sams */ 3090b9a22cf782ab8f837161bf3357e08471ff5b9f2Jason Sams public void setVar(int index, boolean v) { 310e07694b24f7d12d72b084b6651356681ebd0efd6Jason Sams mRS.nScriptSetVarI(getID(mRS), index, v ? 1 : 0); 3110b9a22cf782ab8f837161bf3357e08471ff5b9f2Jason Sams } 3127c4caadb939b1563328251c156262c179a685c70Tim Murray public boolean getVarB(int index) { 3137c4caadb939b1563328251c156262c179a685c70Tim Murray return mRS.nScriptGetVarI(getID(mRS), index) > 0 ? true : false; 3147c4caadb939b1563328251c156262c179a685c70Tim Murray } 3150b9a22cf782ab8f837161bf3357e08471ff5b9f2Jason Sams 3169c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 31767e3d206ca80dd97309ca63169503088cb509bdeJason Sams * Only intended for use by generated reflected code. 31867e3d206ca80dd97309ca63169503088cb509bdeJason Sams * 31967e3d206ca80dd97309ca63169503088cb509bdeJason Sams */ 3206f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams public void setVar(int index, BaseObj o) { 321678cc7fe9fef00fb3381e64f95cc6907796bcd8eJason Sams mRS.validate(); 322678cc7fe9fef00fb3381e64f95cc6907796bcd8eJason Sams mRS.validateObject(o); 323e07694b24f7d12d72b084b6651356681ebd0efd6Jason Sams mRS.nScriptSetVarObj(getID(mRS), index, (o == null) ? 0 : o.getID(mRS)); 3246f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams } 3256f4cf0b8885403ead157ae00fd43cf1282331c23Jason Sams 3269c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 32767e3d206ca80dd97309ca63169503088cb509bdeJason Sams * Only intended for use by generated reflected code. 32867e3d206ca80dd97309ca63169503088cb509bdeJason Sams * 32967e3d206ca80dd97309ca63169503088cb509bdeJason Sams */ 3304d3399337d18ef04116bc8a2e5799274655d0c30Jason Sams public void setVar(int index, FieldPacker v) { 331e07694b24f7d12d72b084b6651356681ebd0efd6Jason Sams mRS.nScriptSetVarV(getID(mRS), index, v.getData()); 33269f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams } 33369f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams 3349c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 335adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines * Only intended for use by generated reflected code. 336adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines * 337adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines */ 338adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines public void setVar(int index, FieldPacker v, Element e, int[] dims) { 339adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines mRS.nScriptSetVarVE(getID(mRS), index, v.getData(), e.getID(mRS), dims); 340adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines } 341adeb809201fcb77ba2b76a814ae4cdc9dacb326bStephen Hines 342f64cca905c45fcc74aacf78e6510e133385110cfJason Sams /** 343f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * Only intended for use by generated reflected code. 344f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * 345f64cca905c45fcc74aacf78e6510e133385110cfJason Sams */ 3467c4caadb939b1563328251c156262c179a685c70Tim Murray public void getVarV(int index, FieldPacker v) { 3477c4caadb939b1563328251c156262c179a685c70Tim Murray mRS.nScriptGetVarV(getID(mRS), index, v.getData()); 3487c4caadb939b1563328251c156262c179a685c70Tim Murray } 3497c4caadb939b1563328251c156262c179a685c70Tim Murray 35022534176fb5c1257130ef4ee589739ca42766a32Jason Sams public void setTimeZone(String timeZone) { 351771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 35222534176fb5c1257130ef4ee589739ca42766a32Jason Sams try { 353e07694b24f7d12d72b084b6651356681ebd0efd6Jason Sams mRS.nScriptSetTimeZone(getID(mRS), timeZone.getBytes("UTF-8")); 35422534176fb5c1257130ef4ee589739ca42766a32Jason Sams } catch (java.io.UnsupportedEncodingException e) { 35522534176fb5c1257130ef4ee589739ca42766a32Jason Sams throw new RuntimeException(e); 35622534176fb5c1257130ef4ee589739ca42766a32Jason Sams } 35722534176fb5c1257130ef4ee589739ca42766a32Jason Sams } 35869f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams 359c11e25c4e653124def1fb18e203b894f42106cbeTim Murray /** 360c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * Only intended for use by generated reflected code. 361c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * 362c11e25c4e653124def1fb18e203b894f42106cbeTim Murray */ 36369f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams public static class Builder { 36469f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams RenderScript mRS; 36569f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams 36669f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams Builder(RenderScript rs) { 36769f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams mRS = rs; 368fbf0b9ecda03fbdbd4ebabfd18da09a789686249Jason Sams } 36969f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams } 37069f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams 3712d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams 372f64cca905c45fcc74aacf78e6510e133385110cfJason Sams /** 373f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * Only intended for use by generated reflected code. 374f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * 375f64cca905c45fcc74aacf78e6510e133385110cfJason Sams */ 3762d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams public static class FieldBase { 3772d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams protected Element mElement; 3782d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams protected Allocation mAllocation; 3792d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams 3802d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams protected void init(RenderScript rs, int dimx) { 3815476b450e50939940dcf3f15c92335cee2fc572dJason Sams mAllocation = Allocation.createSized(rs, mElement, dimx, Allocation.USAGE_SCRIPT); 3825476b450e50939940dcf3f15c92335cee2fc572dJason Sams } 3835476b450e50939940dcf3f15c92335cee2fc572dJason Sams 3845476b450e50939940dcf3f15c92335cee2fc572dJason Sams protected void init(RenderScript rs, int dimx, int usages) { 3855476b450e50939940dcf3f15c92335cee2fc572dJason Sams mAllocation = Allocation.createSized(rs, mElement, dimx, Allocation.USAGE_SCRIPT | usages); 3862d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams } 3872d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams 3882d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams protected FieldBase() { 3892d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams } 3902d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams 3912d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams public Element getElement() { 3922d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams return mElement; 3932d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams } 3942d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams 3952d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams public Type getType() { 39631a7e42f4baa059352f0db119de38428e655eab2Jason Sams return mAllocation.getType(); 3972d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams } 3982d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams 3992d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams public Allocation getAllocation() { 4002d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams return mAllocation; 4012d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams } 4022d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams 4032d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams //@Override 4042d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams public void updateAllocation() { 4052d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams } 4062d71bc7b4c46a32cead32a35e6e137d13e8315eaJason Sams } 407fbfaa853630edfca25eaa840f92035713eef13baTim Murray 408fbfaa853630edfca25eaa840f92035713eef13baTim Murray 409f64cca905c45fcc74aacf78e6510e133385110cfJason Sams /** 410f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * Class used to specify clipping for a kernel launch. 411f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * 412f64cca905c45fcc74aacf78e6510e133385110cfJason Sams */ 413f64cca905c45fcc74aacf78e6510e133385110cfJason Sams public static final class LaunchOptions { 414f64cca905c45fcc74aacf78e6510e133385110cfJason Sams private int xstart = 0; 415f64cca905c45fcc74aacf78e6510e133385110cfJason Sams private int ystart = 0; 416f64cca905c45fcc74aacf78e6510e133385110cfJason Sams private int xend = 0; 417f64cca905c45fcc74aacf78e6510e133385110cfJason Sams private int yend = 0; 418f64cca905c45fcc74aacf78e6510e133385110cfJason Sams private int zstart = 0; 419f64cca905c45fcc74aacf78e6510e133385110cfJason Sams private int zend = 0; 420f64cca905c45fcc74aacf78e6510e133385110cfJason Sams private int strategy; 421f64cca905c45fcc74aacf78e6510e133385110cfJason Sams 422f64cca905c45fcc74aacf78e6510e133385110cfJason Sams /** 423f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * Set the X range. If the end value is set to 0 the X dimension is not 424f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * clipped. 425f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * 426f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * @param xstartArg Must be >= 0 427f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * @param xendArg Must be >= xstartArg 428f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * 429f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * @return LaunchOptions 430f64cca905c45fcc74aacf78e6510e133385110cfJason Sams */ 431eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray public LaunchOptions setX(int xstartArg, int xendArg) { 432fbfaa853630edfca25eaa840f92035713eef13baTim Murray if (xstartArg < 0 || xendArg <= xstartArg) { 433fbfaa853630edfca25eaa840f92035713eef13baTim Murray throw new RSIllegalArgumentException("Invalid dimensions"); 434fbfaa853630edfca25eaa840f92035713eef13baTim Murray } 435fbfaa853630edfca25eaa840f92035713eef13baTim Murray xstart = xstartArg; 436fbfaa853630edfca25eaa840f92035713eef13baTim Murray xend = xendArg; 437eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray return this; 438fbfaa853630edfca25eaa840f92035713eef13baTim Murray } 439fbfaa853630edfca25eaa840f92035713eef13baTim Murray 440f64cca905c45fcc74aacf78e6510e133385110cfJason Sams /** 441f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * Set the Y range. If the end value is set to 0 the Y dimension is not 442f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * clipped. 443f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * 444f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * @param ystartArg Must be >= 0 445f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * @param yendArg Must be >= ystartArg 446f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * 447f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * @return LaunchOptions 448f64cca905c45fcc74aacf78e6510e133385110cfJason Sams */ 449eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray public LaunchOptions setY(int ystartArg, int yendArg) { 450fbfaa853630edfca25eaa840f92035713eef13baTim Murray if (ystartArg < 0 || yendArg <= ystartArg) { 451fbfaa853630edfca25eaa840f92035713eef13baTim Murray throw new RSIllegalArgumentException("Invalid dimensions"); 452fbfaa853630edfca25eaa840f92035713eef13baTim Murray } 453fbfaa853630edfca25eaa840f92035713eef13baTim Murray ystart = ystartArg; 454fbfaa853630edfca25eaa840f92035713eef13baTim Murray yend = yendArg; 455eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray return this; 456eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray } 457eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray 458f64cca905c45fcc74aacf78e6510e133385110cfJason Sams /** 459f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * Set the Z range. If the end value is set to 0 the Z dimension is not 460f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * clipped. 461f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * 462f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * @param zstartArg Must be >= 0 463f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * @param zendArg Must be >= zstartArg 464f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * 465f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * @return LaunchOptions 466f64cca905c45fcc74aacf78e6510e133385110cfJason Sams */ 467eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray public LaunchOptions setZ(int zstartArg, int zendArg) { 468eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray if (zstartArg < 0 || zendArg <= zstartArg) { 469eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray throw new RSIllegalArgumentException("Invalid dimensions"); 470eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray } 471eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray zstart = zstartArg; 472eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray zend = zendArg; 473eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray return this; 474fbfaa853630edfca25eaa840f92035713eef13baTim Murray } 475fbfaa853630edfca25eaa840f92035713eef13baTim Murray 476eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray 477f64cca905c45fcc74aacf78e6510e133385110cfJason Sams /** 478f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * Returns the current X start 479f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * 480f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * @return int current value 481f64cca905c45fcc74aacf78e6510e133385110cfJason Sams */ 482fbfaa853630edfca25eaa840f92035713eef13baTim Murray public int getXStart() { 483fbfaa853630edfca25eaa840f92035713eef13baTim Murray return xstart; 484fbfaa853630edfca25eaa840f92035713eef13baTim Murray } 485f64cca905c45fcc74aacf78e6510e133385110cfJason Sams /** 486f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * Returns the current X end 487f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * 488f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * @return int current value 489f64cca905c45fcc74aacf78e6510e133385110cfJason Sams */ 490fbfaa853630edfca25eaa840f92035713eef13baTim Murray public int getXEnd() { 491fbfaa853630edfca25eaa840f92035713eef13baTim Murray return xend; 492fbfaa853630edfca25eaa840f92035713eef13baTim Murray } 493f64cca905c45fcc74aacf78e6510e133385110cfJason Sams /** 494f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * Returns the current Y start 495f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * 496f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * @return int current value 497f64cca905c45fcc74aacf78e6510e133385110cfJason Sams */ 498fbfaa853630edfca25eaa840f92035713eef13baTim Murray public int getYStart() { 499fbfaa853630edfca25eaa840f92035713eef13baTim Murray return ystart; 500fbfaa853630edfca25eaa840f92035713eef13baTim Murray } 501f64cca905c45fcc74aacf78e6510e133385110cfJason Sams /** 502f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * Returns the current Y end 503f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * 504f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * @return int current value 505f64cca905c45fcc74aacf78e6510e133385110cfJason Sams */ 506fbfaa853630edfca25eaa840f92035713eef13baTim Murray public int getYEnd() { 507fbfaa853630edfca25eaa840f92035713eef13baTim Murray return yend; 508fbfaa853630edfca25eaa840f92035713eef13baTim Murray } 509f64cca905c45fcc74aacf78e6510e133385110cfJason Sams /** 510f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * Returns the current Z start 511f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * 512f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * @return int current value 513f64cca905c45fcc74aacf78e6510e133385110cfJason Sams */ 514eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray public int getZStart() { 515eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray return zstart; 516eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray } 517f64cca905c45fcc74aacf78e6510e133385110cfJason Sams /** 518f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * Returns the current Z end 519f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * 520f64cca905c45fcc74aacf78e6510e133385110cfJason Sams * @return int current value 521f64cca905c45fcc74aacf78e6510e133385110cfJason Sams */ 522eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray public int getZEnd() { 523eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray return zend; 524eb8c29cb7ece3f4b7ad18e5393b07fa7418a541cTim Murray } 525fbfaa853630edfca25eaa840f92035713eef13baTim Murray 526fbfaa853630edfca25eaa840f92035713eef13baTim Murray } 52769f0d31e576c0110c2cbbafc3b9bd46e73fc1afcJason Sams} 528