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