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