ScriptIntrinsicBlend.java revision c11e25c4e653124def1fb18e203b894f42106cbe
1f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams/* 2f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * Copyright (C) 2012 The Android Open Source Project 3f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 4f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * you may not use this file except in compliance with the License. 6f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * You may obtain a copy of the License at 7f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 8f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * http://www.apache.org/licenses/LICENSE-2.0 9f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 10f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * Unless required by applicable law or agreed to in writing, software 11f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * See the License for the specific language governing permissions and 14f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * limitations under the License. 15f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 16f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 17f70bb04346707c49f31d5ac4853a6fce555b715eJason Samspackage android.renderscript; 18f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 19f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 20f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams/** 21c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * Intrinsic kernels for blending two {@link android.renderscript.Allocation} objects. 22f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams **/ 23f70bb04346707c49f31d5ac4853a6fce555b715eJason Samspublic class ScriptIntrinsicBlend extends ScriptIntrinsic { 24f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams ScriptIntrinsicBlend(int id, RenderScript rs) { 25f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams super(id, rs); 26f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 27f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 28f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 29c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * Supported elements types are {@link Element#U8_4} 30f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 31c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * @param rs The RenderScript context 32c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * @param e Element type for inputs and outputs 33f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 34f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @return ScriptIntrinsicBlend 35f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 36f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public static ScriptIntrinsicBlend create(RenderScript rs, Element e) { 3774478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray // 7 comes from RS_SCRIPT_INTRINSIC_ID_BLEND in rsDefines.h 3874478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray int id = rs.nScriptIntrinsicCreate(7, e.getID(rs)); 39f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams return new ScriptIntrinsicBlend(id, rs); 40f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 41f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 42f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 43f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams private void blend(int id, Allocation ain, Allocation aout) { 4474478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray if (!ain.getElement().isCompatible(Element.U8_4(mRS))) { 4574478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray throw new RSIllegalArgumentException("Input is not of expected format."); 46f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 4774478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray if (!aout.getElement().isCompatible(Element.U8_4(mRS))) { 4874478f73b7ecf5c6bceb214b2704184ad9e2e0ecTim Murray throw new RSIllegalArgumentException("Output is not of expected format."); 49f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 50f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams forEach(id, ain, aout, null); 51f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 52f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 53f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 54c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * Sets dst = {0, 0, 0, 0} 55f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 56f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param ain The source buffer 57f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param aout The destination buffer 58f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 59f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachClear(Allocation ain, Allocation aout) { 60f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(0, ain, aout); 61f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 62f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 63f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 64f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * Get a KernelID for the Clear kernel. 65f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 66f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @return Script.KernelID The KernelID object. 67f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 68f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public Script.KernelID getKernelIDClear() { 69f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams return createKernelID(0, 3, null, null); 70f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 71f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 72f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 73f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 74c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * Sets dst = src 75f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 76f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param ain The source buffer 77f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param aout The destination buffer 78f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 79f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachSrc(Allocation ain, Allocation aout) { 80f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(1, ain, aout); 81f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 82f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 83f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 84f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * Get a KernelID for the Src kernel. 85f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 86f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @return Script.KernelID The KernelID object. 87f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 88f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public Script.KernelID getKernelIDSrc() { 89f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams return createKernelID(1, 3, null, null); 90f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 91f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 92f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 93c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * Sets dst = dst 94c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * 95c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * This is a NOP. 96f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 97f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param ain The source buffer 98f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param aout The destination buffer 99f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 100f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachDst(Allocation ain, Allocation aout) { 101f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams // NOP 102f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 103f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 104f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 105f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * Get a KernelID for the Dst kernel. 106f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 107f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @return Script.KernelID The KernelID object. 108f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 109f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public Script.KernelID getKernelIDDst() { 110f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams return createKernelID(2, 3, null, null); 111f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 112f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 113f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 114c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * Sets dst = src + dst * (1.0 - src.a) 115f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 116f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param ain The source buffer 117f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param aout The destination buffer 118f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 119f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachSrcOver(Allocation ain, Allocation aout) { 120f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(3, ain, aout); 121f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 122f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 123f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 124f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * Get a KernelID for the SrcOver kernel. 125f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 126f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @return Script.KernelID The KernelID object. 127f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 128f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public Script.KernelID getKernelIDSrcOver() { 129f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams return createKernelID(3, 3, null, null); 130f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 131f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 132f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 133c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * Sets dst = dst + src * (1.0 - dst.a) 134f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 135f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param ain The source buffer 136f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param aout The destination buffer 137f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 138f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachDstOver(Allocation ain, Allocation aout) { 139f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(4, ain, aout); 140f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 141f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 142f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 143f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * Get a KernelID for the DstOver kernel. 144f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 145f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @return Script.KernelID The KernelID object. 146f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 147f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public Script.KernelID getKernelIDDstOver() { 148f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams return createKernelID(4, 3, null, null); 149f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 150f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 151f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 152c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * Sets dst = src * dst.a 153f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 154f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param ain The source buffer 155f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param aout The destination buffer 156f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 157f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachSrcIn(Allocation ain, Allocation aout) { 158f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(5, ain, aout); 159f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 160f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 161f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 162f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * Get a KernelID for the SrcIn kernel. 163f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 164f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @return Script.KernelID The KernelID object. 165f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 166f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public Script.KernelID getKernelIDSrcIn() { 167f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams return createKernelID(5, 3, null, null); 168f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 169f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 170f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 171c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * Sets dst = dst * src.a 172f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 173f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param ain The source buffer 174f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param aout The destination buffer 175f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 176f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachDstIn(Allocation ain, Allocation aout) { 177f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(6, ain, aout); 178f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 179f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 180f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 181f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * Get a KernelID for the DstIn kernel. 182f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 183f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @return Script.KernelID The KernelID object. 184f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 185f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public Script.KernelID getKernelIDDstIn() { 186f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams return createKernelID(6, 3, null, null); 187f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 188f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 189f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 190c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * Sets dst = src * (1.0 - dst.a) 191f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 192f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param ain The source buffer 193f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param aout The destination buffer 194f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 195f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachSrcOut(Allocation ain, Allocation aout) { 196f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(7, ain, aout); 197f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 198f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 199f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 200f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * Get a KernelID for the SrcOut kernel. 201f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 202f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @return Script.KernelID The KernelID object. 203f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 204f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public Script.KernelID getKernelIDSrcOut() { 205f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams return createKernelID(7, 3, null, null); 206f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 207f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 208f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 209c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * Sets dst = dst * (1.0 - src.a) 210f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 211f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param ain The source buffer 212f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param aout The destination buffer 213f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 214f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachDstOut(Allocation ain, Allocation aout) { 215f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(8, ain, aout); 216f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 217f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 218f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 219f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * Get a KernelID for the DstOut kernel. 220f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 221f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @return Script.KernelID The KernelID object. 222f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 223f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public Script.KernelID getKernelIDDstOut() { 224f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams return createKernelID(8, 3, null, null); 225f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 226f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 227f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 228f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * dst.rgb = src.rgb * dst.a + (1.0 - src.a) * dst.rgb 229f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * dst.a = dst.a 230f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 231f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param ain The source buffer 232f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param aout The destination buffer 233f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 234f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachSrcAtop(Allocation ain, Allocation aout) { 235f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(9, ain, aout); 236f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 237f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 238f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 239f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * Get a KernelID for the SrcAtop kernel. 240f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 241f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @return Script.KernelID The KernelID object. 242f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 243f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public Script.KernelID getKernelIDSrcAtop() { 244f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams return createKernelID(9, 3, null, null); 245f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 246f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 247f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 248f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * dst = dst.rgb * src.a + (1.0 - dst.a) * src.rgb 249f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * dst.a = src.a 250f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 251f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param ain The source buffer 252f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param aout The destination buffer 253f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 254f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachDstAtop(Allocation ain, Allocation aout) { 255f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(10, ain, aout); 256f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 257f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 258f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 259f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * Get a KernelID for the DstAtop kernel. 260f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 261f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @return Script.KernelID The KernelID object. 262f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 263f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public Script.KernelID getKernelIDDstAtop() { 264f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams return createKernelID(10, 3, null, null); 265f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 266f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 267f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 268c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * Sets dst = {src.r ^ dst.r, src.g ^ dst.g, src.b ^ dst.b, src.a ^ dst.a} 269f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 270f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param ain The source buffer 271f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param aout The destination buffer 272f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 273f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachXor(Allocation ain, Allocation aout) { 274f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(11, ain, aout); 275f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 276f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 277f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 278f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * Get a KernelID for the Xor kernel. 279f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 280f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @return Script.KernelID The KernelID object. 281f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 282f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public Script.KernelID getKernelIDXor() { 283f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams return createKernelID(11, 3, null, null); 284f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 285f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 286f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams //////// 287f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams/* 288f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachNormal(Allocation ain, Allocation aout) { 289f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(12, ain, aout); 290f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 291f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 292f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachAverage(Allocation ain, Allocation aout) { 293f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(13, ain, aout); 294f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 295f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams*/ 296f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 297c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * Sets dst = src * dst 298f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 299f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param ain The source buffer 300f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param aout The destination buffer 301f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 302f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachMultiply(Allocation ain, Allocation aout) { 303f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(14, ain, aout); 304f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 305f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 306f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 307f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * Get a KernelID for the Multiply kernel. 308f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 309f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @return Script.KernelID The KernelID object. 310f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 311f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public Script.KernelID getKernelIDMultiply() { 312f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams return createKernelID(14, 3, null, null); 313f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 314f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 315f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams/* 316f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachScreen(Allocation ain, Allocation aout) { 317f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(15, ain, aout); 318f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 319f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 320f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachDarken(Allocation ain, Allocation aout) { 321f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(16, ain, aout); 322f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 323f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 324f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachLighten(Allocation ain, Allocation aout) { 325f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(17, ain, aout); 326f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 327f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 328f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachOverlay(Allocation ain, Allocation aout) { 329f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(18, ain, aout); 330f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 331f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 332f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachHardlight(Allocation ain, Allocation aout) { 333f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(19, ain, aout); 334f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 335f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 336f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachSoftlight(Allocation ain, Allocation aout) { 337f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(20, ain, aout); 338f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 339f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 340f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachDifference(Allocation ain, Allocation aout) { 341f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(21, ain, aout); 342f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 343f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 344f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachNegation(Allocation ain, Allocation aout) { 345f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(22, ain, aout); 346f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 347f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 348f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachExclusion(Allocation ain, Allocation aout) { 349f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(23, ain, aout); 350f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 351f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 352f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachColorDodge(Allocation ain, Allocation aout) { 353f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(24, ain, aout); 354f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 355f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 356f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachInverseColorDodge(Allocation ain, Allocation aout) { 357f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(25, ain, aout); 358f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 359f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 360f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachSoftDodge(Allocation ain, Allocation aout) { 361f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(26, ain, aout); 362f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 363f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 364f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachColorBurn(Allocation ain, Allocation aout) { 365f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(27, ain, aout); 366f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 367f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 368f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachInverseColorBurn(Allocation ain, Allocation aout) { 369f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(28, ain, aout); 370f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 371f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 372f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachSoftBurn(Allocation ain, Allocation aout) { 373f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(29, ain, aout); 374f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 375f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 376f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachReflect(Allocation ain, Allocation aout) { 377f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(30, ain, aout); 378f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 379f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 380f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachGlow(Allocation ain, Allocation aout) { 381f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(31, ain, aout); 382f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 383f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 384f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachFreeze(Allocation ain, Allocation aout) { 385f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(32, ain, aout); 386f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 387f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 388f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachHeat(Allocation ain, Allocation aout) { 389f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(33, ain, aout); 390f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 391f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams*/ 392f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 393c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * Sets dst = min(src + dst, 1.0) 394f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 395f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param ain The source buffer 396f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param aout The destination buffer 397f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 398f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachAdd(Allocation ain, Allocation aout) { 399f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(34, ain, aout); 400f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 401f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 402f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 403f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * Get a KernelID for the Add kernel. 404f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 405f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @return Script.KernelID The KernelID object. 406f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 407f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public Script.KernelID getKernelIDAdd() { 408f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams return createKernelID(34, 3, null, null); 409f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 410f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 411f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 412c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * Sets dst = max(dst - src, 0.0) 413f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 414f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param ain The source buffer 415f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @param aout The destination buffer 416f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 417f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachSubtract(Allocation ain, Allocation aout) { 418f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(35, ain, aout); 419f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 420f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 421f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams /** 422f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * Get a KernelID for the Subtract kernel. 423f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * 424f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams * @return Script.KernelID The KernelID object. 425f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams */ 426f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public Script.KernelID getKernelIDSubtract() { 427f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams return createKernelID(35, 3, null, null); 428f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 429f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 430f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams/* 431f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachStamp(Allocation ain, Allocation aout) { 432f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(36, ain, aout); 433f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 434f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 435f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachRed(Allocation ain, Allocation aout) { 436f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(37, ain, aout); 437f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 438f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 439f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachGreen(Allocation ain, Allocation aout) { 440f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(38, ain, aout); 441f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 442f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 443f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachBlue(Allocation ain, Allocation aout) { 444f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(39, ain, aout); 445f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 446f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 447f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachHue(Allocation ain, Allocation aout) { 448f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(40, ain, aout); 449f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 450f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 451f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachSaturation(Allocation ain, Allocation aout) { 452f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(41, ain, aout); 453f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 454f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 455f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachColor(Allocation ain, Allocation aout) { 456f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(42, ain, aout); 457f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 458f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 459f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams public void forEachLuminosity(Allocation ain, Allocation aout) { 460f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams blend(43, ain, aout); 461f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams } 462f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams*/ 463f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams} 464f70bb04346707c49f31d5ac4853a6fce555b715eJason Sams 465