Script.java revision 8919a441f977cb787d244aa42cc2d4dda1cbfa11
145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams/* 245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Copyright (C) 2012 The Android Open Source Project 345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * 445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * you may not use this file except in compliance with the License. 645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * You may obtain a copy of the License at 745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * 845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * 1045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Unless required by applicable law or agreed to in writing, software 1145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 1245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * See the License for the specific language governing permissions and 1445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * limitations under the License. 1545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams */ 1645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 1745d443665f5ce7efa934706a89883f0cc87f3513Jason Samspackage android.support.v8.renderscript; 1845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 19a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Samsimport android.util.SparseArray; 20a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams 2145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams/** 22032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * The parent class for all executable scripts. This should not be used by 23032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * applications. 2445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams **/ 2545d443665f5ce7efa934706a89883f0cc87f3513Jason Samspublic class Script extends BaseObj { 26a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams /** 276f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang * Determine if Incremental Intrinsic Support is needed 286f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang * 296f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang */ 306f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang private boolean mUseIncSupp; 316f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang protected void setIncSupp(boolean useInc) { 326f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang mUseIncSupp = useInc; 336f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang } 346f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang protected boolean isIncSupp() { 356f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang return mUseIncSupp; 366f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang } 376f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang /** 386f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang * An allocation for the compat context will be created when needed 396f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang * e.g. foreach(ain, aout), setVar(ain); 406f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang * 416f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang */ 428919a441f977cb787d244aa42cc2d4dda1cbfa11Miao Wang long getDummyAlloc(Allocation ain) { 436f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang long dInElement = 0; 446f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang long dInType = 0; 456f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang long dummyAlloc = 0; 466f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang if (ain != null) { 476f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang dInElement = ain.getType().getElement().getDummyElement(mRS); 486f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang dInType = ain.getType().getDummyType(mRS, dInElement); 496f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang dummyAlloc = mRS.nIncAllocationCreateTyped(ain.getID(mRS), dInType); 506f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang ain.setIncAllocID(dummyAlloc); 516f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang } 526f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang 536f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang return dummyAlloc; 546f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang } 556f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang /** 56a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * KernelID is an identifier for a Script + root function pair. It is used 57a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * as an identifier for ScriptGroup creation. 58a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * 59a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * This class should not be directly created. Instead use the method in the 60a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * reflected or intrinsic code "getKernelID_funcname()". 61a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * 62a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams */ 63a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams public static final class KernelID extends BaseObj { 64baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray android.renderscript.Script.KernelID mN; 65a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams Script mScript; 66a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams int mSlot; 67a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams int mSig; 68bec39b6de685a7dddb1925c7e9f83fae20388de3Miao Wang KernelID(long id, RenderScript rs, Script s, int slot, int sig) { 69a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams super(id, rs); 70a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams mScript = s; 71a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams mSlot = slot; 72a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams mSig = sig; 73a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams } 74a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams } 75a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams 76a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams private final SparseArray<KernelID> mKIDs = new SparseArray<KernelID>(); 77a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams /** 78a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * Only to be used by generated reflected classes. 79a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * 80a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * 81a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * @param slot 82a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * @param sig 83a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * @param ein 84a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * @param eout 85a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * 86a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * @return KernelID 87a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams */ 88a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams protected KernelID createKernelID(int slot, int sig, Element ein, Element eout) { 89a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams KernelID k = mKIDs.get(slot); 90a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams if (k != null) { 91a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams return k; 92a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams } 936f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang 946f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang long id = mRS.nScriptKernelIDCreate(getID(mRS), slot, sig, mUseIncSupp); 95a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams if (id == 0) { 96a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams throw new RSDriverException("Failed to create KernelID"); 97a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams } 98a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams 99a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams k = new KernelID(id, mRS, this, slot, sig); 100baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray 101a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams mKIDs.put(slot, k); 102a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams return k; 103a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams } 104a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams 105a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams /** 106086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni * InvokeID is an identifier for a invoke function. It is used 107086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni * as an identifier for ScriptGroup creation. 108086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni * 109086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni * This class should not be directly created. Instead use the method in the 110086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni * reflected or intrinsic code "getInvokeID_funcname()". 111086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni * 112086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni * @hide 113086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni */ 114086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni public static final class InvokeID extends BaseObj { 115086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni Script mScript; 116086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni int mSlot; 117086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni InvokeID(long id, RenderScript rs, Script s, int slot) { 118086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni super(id, rs); 119086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni mScript = s; 120086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni mSlot = slot; 121086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni } 122086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni } 123086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni 124086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni private final SparseArray<InvokeID> mIIDs = new SparseArray<InvokeID>(); 125086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni /** 126086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni * Only to be used by generated reflected classes. 127086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni */ 128086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni protected InvokeID createInvokeID(int slot) { 129086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni InvokeID i = mIIDs.get(slot); 130086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni if (i != null) { 131086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni return i; 132086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni } 133086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni 134086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni long id = mRS.nScriptInvokeIDCreate(getID(mRS), slot); 135086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni if (id == 0) { 136086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni throw new RSDriverException("Failed to create KernelID"); 137086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni } 138086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni 139086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni i = new InvokeID(id, mRS, this, slot); 140086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni mIIDs.put(slot, i); 141086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni return i; 142086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni } 143086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni 144086010500c28e2bca57ea583d3f38da9a2f2f414Yang Ni /** 145a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * FieldID is an identifier for a Script + exported field pair. It is used 146a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * as an identifier for ScriptGroup creation. 147a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * 148a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * This class should not be directly created. Instead use the method in the 149a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * reflected or intrinsic code "getFieldID_funcname()". 150a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * 151a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams */ 152a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams public static final class FieldID extends BaseObj { 153baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray android.renderscript.Script.FieldID mN; 154a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams Script mScript; 155a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams int mSlot; 156bec39b6de685a7dddb1925c7e9f83fae20388de3Miao Wang FieldID(long id, RenderScript rs, Script s, int slot) { 157a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams super(id, rs); 158a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams mScript = s; 159a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams mSlot = slot; 160a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams } 161a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams } 162a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams 163a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams private final SparseArray<FieldID> mFIDs = new SparseArray(); 164a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams /** 165a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * Only to be used by generated reflected classes. 166a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * 167a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * @param slot 168a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * @param e 169a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * 170a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams * @return FieldID 171a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams */ 172a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams protected FieldID createFieldID(int slot, Element e) { 173a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams FieldID f = mFIDs.get(slot); 174a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams if (f != null) { 175a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams return f; 176a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams } 177a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams 1786f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang long id = mRS.nScriptFieldIDCreate(getID(mRS), slot, mUseIncSupp); 179a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams if (id == 0) { 180a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams throw new RSDriverException("Failed to create FieldID"); 181a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams } 182a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams 183a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams f = new FieldID(id, mRS, this, slot); 184a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams mFIDs.put(slot, f); 185a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams return f; 186a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams } 187a5e8cafe9173abee2b47e7c927210a22934a30e5Jason Sams 18845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams /** 18945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Only intended for use by generated reflected code. 19045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * 19145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param slot 19245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams */ 19345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams protected void invoke(int slot) { 1946f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang mRS.nScriptInvoke(getID(mRS), slot, mUseIncSupp); 19545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 19645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 19745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams /** 19845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Only intended for use by generated reflected code. 19945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * 20045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param slot 20145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param v 20245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams */ 20345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams protected void invoke(int slot, FieldPacker v) { 20445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams if (v != null) { 2056f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang mRS.nScriptInvokeV(getID(mRS), slot, v.getData(), mUseIncSupp); 20645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } else { 2076f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang mRS.nScriptInvoke(getID(mRS), slot, mUseIncSupp); 20845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 20945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 21045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 21145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams /** 21245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Only intended for use by generated reflected code. 21345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * 214baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray * @param va 215baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray * @param slot 216baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray */ 217baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray public void bindAllocation(Allocation va, int slot) { 218baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray mRS.validate(); 219baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray if (va != null) { 2206f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang mRS.nScriptBindAllocation(getID(mRS), va.getID(mRS), slot, mUseIncSupp); 221baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray } else { 2226f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang mRS.nScriptBindAllocation(getID(mRS), 0, slot, mUseIncSupp); 223baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray } 224baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray } 225baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray 226baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray public void setTimeZone(String timeZone) { 227baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray mRS.validate(); 228baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray try { 2296f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang mRS.nScriptSetTimeZone(getID(mRS), timeZone.getBytes("UTF-8"), mUseIncSupp); 230baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray } catch (java.io.UnsupportedEncodingException e) { 231baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray throw new RuntimeException(e); 232baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray } 233baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray } 234baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray 235baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray 236baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray /** 237baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray * Only intended for use by generated reflected code. 238baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray * 23945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param slot 24045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param ain 24145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param aout 24245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param v 24345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams */ 24445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v) { 24545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams if (ain == null && aout == null) { 24645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams throw new RSIllegalArgumentException( 24745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams "At least one of ain or aout is required to be non-null."); 24845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 249bec39b6de685a7dddb1925c7e9f83fae20388de3Miao Wang long in_id = 0; 2506f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang long out_id = 0; 25145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams if (ain != null) { 25245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams in_id = ain.getID(mRS); 25345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 25445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams if (aout != null) { 25545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams out_id = aout.getID(mRS); 25645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 2576f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang 25845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams byte[] params = null; 25945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams if (v != null) { 26045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams params = v.getData(); 26145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 2626f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang 2636f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang if (mUseIncSupp) { 2646f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang long ainInc = getDummyAlloc(ain); 2656f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang long aoutInc = getDummyAlloc(aout); 2666f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang mRS.nScriptForEach(getID(mRS), slot, ainInc, aoutInc, params, mUseIncSupp); 2676f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang } else { 2686f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang mRS.nScriptForEach(getID(mRS), slot, in_id, out_id, params, mUseIncSupp); 2696f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang } 27045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 27145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 272032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines /** 273032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * Only intended for use by generated reflected code. 274032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * 275032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * @param slot 276032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * @param ain 277032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * @param aout 278032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * @param v 279032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * @param sc 280032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines */ 281e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v, LaunchOptions sc) { 282e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray if (ain == null && aout == null) { 283dfe51945d97812921083af3693deaa4bde6ab11fStephen Hines throw new RSIllegalArgumentException( 284dfe51945d97812921083af3693deaa4bde6ab11fStephen Hines "At least one of ain or aout is required to be non-null."); 285dfe51945d97812921083af3693deaa4bde6ab11fStephen Hines } 286dfe51945d97812921083af3693deaa4bde6ab11fStephen Hines 287dfe51945d97812921083af3693deaa4bde6ab11fStephen Hines if (sc == null) { 288dfe51945d97812921083af3693deaa4bde6ab11fStephen Hines forEach(slot, ain, aout, v); 289dfe51945d97812921083af3693deaa4bde6ab11fStephen Hines return; 290e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray } 291bec39b6de685a7dddb1925c7e9f83fae20388de3Miao Wang long in_id = 0; 2926f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang long out_id = 0; 293e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray if (ain != null) { 294e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray in_id = ain.getID(mRS); 295e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray } 296e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray if (aout != null) { 297e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray out_id = aout.getID(mRS); 298e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray } 2996f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang 300e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray byte[] params = null; 301e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray if (v != null) { 302e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray params = v.getData(); 303e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray } 3046f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang if (mUseIncSupp) { 3056f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang long ainInc = getDummyAlloc(ain); 3066f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang long aoutInc = getDummyAlloc(aout); 3076f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang mRS.nScriptForEachClipped(getID(mRS), slot, ainInc, aoutInc, params, sc.xstart, sc.xend, sc.ystart, sc.yend, sc.zstart, sc.zend, mUseIncSupp); 3086f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang } else { 3096f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang mRS.nScriptForEachClipped(getID(mRS), slot, in_id, out_id, params, sc.xstart, sc.xend, sc.ystart, sc.yend, sc.zstart, sc.zend, mUseIncSupp); 3106f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang } 311e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray } 312e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray 313bec39b6de685a7dddb1925c7e9f83fae20388de3Miao Wang Script(long id, RenderScript rs) { 31445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams super(id, rs); 3156f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang mUseIncSupp = false; 31645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 31745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 31845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams /** 31945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Only intended for use by generated reflected code. 32045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * 32145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param index 32245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param v 32345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams */ 32445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams public void setVar(int index, float v) { 3256f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang mRS.nScriptSetVarF(getID(mRS), index, v, mUseIncSupp); 32645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 32745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 32845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams /** 32945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Only intended for use by generated reflected code. 33045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * 33145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param index 33245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param v 33345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams */ 33445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams public void setVar(int index, double v) { 3356f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang mRS.nScriptSetVarD(getID(mRS), index, v, mUseIncSupp); 33645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 33745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 33845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams /** 33945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Only intended for use by generated reflected code. 34045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * 34145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param index 34245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param v 34345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams */ 34445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams public void setVar(int index, int v) { 3456f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang mRS.nScriptSetVarI(getID(mRS), index, v, mUseIncSupp); 34645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 34745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 34845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams /** 34945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Only intended for use by generated reflected code. 35045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * 35145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param index 35245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param v 35345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams */ 35445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams public void setVar(int index, long v) { 35569331f9e1951415062a79181551abbfc440e6b35Miao Wang mRS.nScriptSetVarJ(getID(mRS), index, v, mUseIncSupp); 35645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 35745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 35845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams /** 35945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Only intended for use by generated reflected code. 36045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * 36145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param index 36245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param v 36345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams */ 36445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams public void setVar(int index, boolean v) { 3656f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang mRS.nScriptSetVarI(getID(mRS), index, v ? 1 : 0, mUseIncSupp); 36645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 36745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 36845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams /** 36945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Only intended for use by generated reflected code. 37045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * 37145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param index 37245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param o 37345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams */ 37445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams public void setVar(int index, BaseObj o) { 3756f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang if (mUseIncSupp) { 3766f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang long oInc = getDummyAlloc((Allocation)o); 3776f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang mRS.nScriptSetVarObj(getID(mRS), index, (o == null) ? 0 : oInc, mUseIncSupp); 3786f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang } else { 3796f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang mRS.nScriptSetVarObj(getID(mRS), index, (o == null) ? 0 : o.getID(mRS), mUseIncSupp); 3806f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang } 38145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 38245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 38345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams /** 38445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Only intended for use by generated reflected code. 38545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * 38645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param index 38745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param v 38845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams */ 38945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams public void setVar(int index, FieldPacker v) { 3906f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang mRS.nScriptSetVarV(getID(mRS), index, v.getData(), mUseIncSupp); 39145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 39245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 39345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams /** 39445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Only intended for use by generated reflected code. 39545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * 39645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param index 39745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param v 39845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param e 39945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * @param dims 40045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams */ 40145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams public void setVar(int index, FieldPacker v, Element e, int[] dims) { 4026f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang if (mUseIncSupp) { 4036f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang long dElement = e.getDummyElement(mRS); 4046f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang mRS.nScriptSetVarVE(getID(mRS), index, v.getData(), dElement, dims, mUseIncSupp); 4056f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang } else { 4066f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang mRS.nScriptSetVarVE(getID(mRS), index, v.getData(), e.getID(mRS), dims, mUseIncSupp); 4076f5555db1af436bb5aad430e6e00aa5b69d5ca6cMiao Wang } 40845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 40945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 410032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines /** 411032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * Only intended for use by generated reflected code. 412032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * 413032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines */ 41445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams public static class Builder { 41545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams RenderScript mRS; 41645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 41745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams Builder(RenderScript rs) { 41845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams mRS = rs; 41945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 42045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 42145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 42245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 423032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines /** 424032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * Only intended for use by generated reflected code. 425032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * 426032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines */ 42745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams public static class FieldBase { 42845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams protected Element mElement; 42945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams protected Allocation mAllocation; 43045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 43145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams protected void init(RenderScript rs, int dimx) { 43245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams mAllocation = Allocation.createSized(rs, mElement, dimx, Allocation.USAGE_SCRIPT); 43345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 43445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 43545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams protected void init(RenderScript rs, int dimx, int usages) { 43645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams mAllocation = Allocation.createSized(rs, mElement, dimx, Allocation.USAGE_SCRIPT | usages); 43745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 43845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 43945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams protected FieldBase() { 44045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 44145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 44245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams public Element getElement() { 44345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams return mElement; 44445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 44545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 44645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams public Type getType() { 44745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams return mAllocation.getType(); 44845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 44945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 45045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams public Allocation getAllocation() { 45145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams return mAllocation; 45245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 45345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams 45445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams //@Override 45545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams public void updateAllocation() { 45645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 45745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams } 458e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray 459e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray 460032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines /** 461032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * Class used to specify clipping for a kernel launch. 462032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * 463032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines */ 464032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines public static final class LaunchOptions { 465032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines private int xstart = 0; 466032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines private int ystart = 0; 467032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines private int xend = 0; 468032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines private int yend = 0; 469032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines private int zstart = 0; 470032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines private int zend = 0; 471032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines private int strategy; 472032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines 473032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines /** 474032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * Set the X range. If the end value is set to 0 the X dimension is not 475032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * clipped. 476032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * 477032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * @param xstartArg Must be >= 0 478032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * @param xendArg Must be >= xstartArg 479032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * 480032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * @return LaunchOptions 481032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines */ 482e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray public LaunchOptions setX(int xstartArg, int xendArg) { 483e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray if (xstartArg < 0 || xendArg <= xstartArg) { 484e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray throw new RSIllegalArgumentException("Invalid dimensions"); 485e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray } 486e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray xstart = xstartArg; 487e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray xend = xendArg; 488e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray return this; 489e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray } 490e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray 491032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines /** 492032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * Set the Y range. If the end value is set to 0 the Y dimension is not 493032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * clipped. 494032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * 495032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * @param ystartArg Must be >= 0 496032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * @param yendArg Must be >= ystartArg 497032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * 498032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * @return LaunchOptions 499032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines */ 500e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray public LaunchOptions setY(int ystartArg, int yendArg) { 501e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray if (ystartArg < 0 || yendArg <= ystartArg) { 502e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray throw new RSIllegalArgumentException("Invalid dimensions"); 503e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray } 504e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray ystart = ystartArg; 505e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray yend = yendArg; 506e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray return this; 507e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray } 508e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray 509032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines /** 510032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * Set the Z range. If the end value is set to 0 the Z dimension is not 511032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * clipped. 512032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * 513032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * @param zstartArg Must be >= 0 514032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * @param zendArg Must be >= zstartArg 515032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * 516032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * @return LaunchOptions 517032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines */ 518e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray public LaunchOptions setZ(int zstartArg, int zendArg) { 519e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray if (zstartArg < 0 || zendArg <= zstartArg) { 520e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray throw new RSIllegalArgumentException("Invalid dimensions"); 521e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray } 522e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray zstart = zstartArg; 523e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray zend = zendArg; 524e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray return this; 525e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray } 526e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray 527e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray 528032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines /** 529032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * Returns the current X start 530032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * 531032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * @return int current value 532032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines */ 533e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray public int getXStart() { 534e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray return xstart; 535e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray } 536032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines /** 537032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * Returns the current X end 538032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * 539032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * @return int current value 540032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines */ 541e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray public int getXEnd() { 542e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray return xend; 543e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray } 544032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines /** 545032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * Returns the current Y start 546032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * 547032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * @return int current value 548032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines */ 549e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray public int getYStart() { 550e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray return ystart; 551e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray } 552032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines /** 553032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * Returns the current Y end 554032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * 555032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * @return int current value 556032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines */ 557e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray public int getYEnd() { 558e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray return yend; 559e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray } 560032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines /** 561032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * Returns the current Z start 562032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * 563032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * @return int current value 564032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines */ 565e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray public int getZStart() { 566e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray return zstart; 567e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray } 568032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines /** 569032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * Returns the current Z end 570032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * 571032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * @return int current value 572032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines */ 573e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray public int getZEnd() { 574e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray return zend; 575e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray } 576e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray 577e47cec65ee7148f14c32a000da1b51ff4dfc78e9Tim Murray } 57845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams} 579