diff options
Diffstat (limited to 'src/com/android/launcher2/ScriptField_VpConsts.java')
-rw-r--r-- | src/com/android/launcher2/ScriptField_VpConsts.java | 74 |
1 files changed, 42 insertions, 32 deletions
diff --git a/src/com/android/launcher2/ScriptField_VpConsts.java b/src/com/android/launcher2/ScriptField_VpConsts.java index c6411fe84..f3ef68413 100644 --- a/src/com/android/launcher2/ScriptField_VpConsts.java +++ b/src/com/android/launcher2/ScriptField_VpConsts.java @@ -1,15 +1,34 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.android.launcher2; -import android.content.res.Resources; import android.renderscript.*; +import android.content.res.Resources; import android.util.Log; -public class ScriptField_VpConsts - extends android.renderscript.Script.FieldBase -{ - +public class ScriptField_VpConsts extends android.renderscript.Script.FieldBase { static public class Item { + public static final int sizeof = 48; + + Float4 Position; + Float4 ScaleOffset; + Float2 BendPos; + Float2 ImgSize; + Item() { Position = new Float4(); ScaleOffset = new Float4(); @@ -17,32 +36,27 @@ public class ScriptField_VpConsts ImgSize = new Float2(); } - public static final int sizeof = (12*4); - - Float4 Position; - Float4 ScaleOffset; - Float2 BendPos; - Float2 ImgSize; } - private Item mItemArray[]; - - - public ScriptField_VpConsts(RenderScript rs, int count) { - // Allocate a pack/unpack buffer - mIOBuffer = new FieldPacker(Item.sizeof * count); - mItemArray = new Item[count]; - Element.Builder eb = new Element.Builder(rs); - eb.add(Element.F32_4(rs), "Position"); - eb.add(Element.F32_4(rs), "ScaleOffset"); - eb.add(Element.F32_2(rs), "BendPos"); - eb.add(Element.F32_2(rs), "ImgSize"); - mElement = eb.create(); + private Item mItemArray[]; + private FieldPacker mIOBuffer; + public ScriptField_VpConsts(RenderScript rs, int count) { + mItemArray = null; + mIOBuffer = null; + { + Element.Builder eb = new Element.Builder(rs); + eb.add(Element.createVector(rs, Element.DataType.FLOAT_32, 4), "Position"); + eb.add(Element.createVector(rs, Element.DataType.FLOAT_32, 4), "ScaleOffset"); + eb.add(Element.createVector(rs, Element.DataType.FLOAT_32, 2), "BendPos"); + eb.add(Element.createVector(rs, Element.DataType.FLOAT_32, 2), "ImgSize"); + mElement = eb.create(); + } init(rs, count); } private void copyToArray(Item i, int index) { + if (mIOBuffer == null) mIOBuffer = new FieldPacker(Item.sizeof * mType.getX() /* count */); mIOBuffer.reset(index * Item.sizeof); mIOBuffer.addF32(i.Position); mIOBuffer.addF32(i.ScaleOffset); @@ -51,23 +65,19 @@ public class ScriptField_VpConsts } public void set(Item i, int index, boolean copyNow) { + if (mItemArray == null) mItemArray = new Item[mType.getX() /* count */]; mItemArray[index] = i; - if (copyNow) { + if (copyNow) { copyToArray(i, index); mAllocation.subData1D(index * Item.sizeof, Item.sizeof, mIOBuffer.getData()); } + } public void copyAll() { - for (int ct=0; ct < mItemArray.length; ct++) { - copyToArray(mItemArray[ct], ct); - } + for (int ct=0; ct < mItemArray.length; ct++) copyToArray(mItemArray[ct], ct); mAllocation.data(mIOBuffer.getData()); } - - private FieldPacker mIOBuffer; - - } |