summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher2/ScriptField_VpConsts.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher2/ScriptField_VpConsts.java')
-rw-r--r--src/com/android/launcher2/ScriptField_VpConsts.java74
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;
-
-
}