blob: de6c7f1ff408e13568b259b2408f36fa1371176e [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 1998-2003 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Sun designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Sun in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25
26#include <mlib_image.h>
27#include "mlib_c_ImageBlendTable.h"
28
29const mlib_f32 mlib_c_blend_u8[] = {
30 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f,
31 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f,
32 16.0f, 17.0f, 18.0f, 19.0f, 20.0f, 21.0f, 22.0f, 23.0f,
33 24.0f, 25.0f, 26.0f, 27.0f, 28.0f, 29.0f, 30.0f, 31.0f,
34 32.0f, 33.0f, 34.0f, 35.0f, 36.0f, 37.0f, 38.0f, 39.0f,
35 40.0f, 41.0f, 42.0f, 43.0f, 44.0f, 45.0f, 46.0f, 47.0f,
36 48.0f, 49.0f, 50.0f, 51.0f, 52.0f, 53.0f, 54.0f, 55.0f,
37 56.0f, 57.0f, 58.0f, 59.0f, 60.0f, 61.0f, 62.0f, 63.0f,
38 64.0f, 65.0f, 66.0f, 67.0f, 68.0f, 69.0f, 70.0f, 71.0f,
39 72.0f, 73.0f, 74.0f, 75.0f, 76.0f, 77.0f, 78.0f, 79.0f,
40 80.0f, 81.0f, 82.0f, 83.0f, 84.0f, 85.0f, 86.0f, 87.0f,
41 88.0f, 89.0f, 90.0f, 91.0f, 92.0f, 93.0f, 94.0f, 95.0f,
42 96.0f, 97.0f, 98.0f, 99.0f, 100.0f, 101.0f, 102.0f, 103.0f,
43 104.0f, 105.0f, 106.0f, 107.0f, 108.0f, 109.0f, 110.0f, 111.0f,
44 112.0f, 113.0f, 114.0f, 115.0f, 116.0f, 117.0f, 118.0f, 119.0f,
45 120.0f, 121.0f, 122.0f, 123.0f, 124.0f, 125.0f, 126.0f, 127.0f,
46 128.0f, 129.0f, 130.0f, 131.0f, 132.0f, 133.0f, 134.0f, 135.0f,
47 136.0f, 137.0f, 138.0f, 139.0f, 140.0f, 141.0f, 142.0f, 143.0f,
48 144.0f, 145.0f, 146.0f, 147.0f, 148.0f, 149.0f, 150.0f, 151.0f,
49 152.0f, 153.0f, 154.0f, 155.0f, 156.0f, 157.0f, 158.0f, 159.0f,
50 160.0f, 161.0f, 162.0f, 163.0f, 164.0f, 165.0f, 166.0f, 167.0f,
51 168.0f, 169.0f, 170.0f, 171.0f, 172.0f, 173.0f, 174.0f, 175.0f,
52 176.0f, 177.0f, 178.0f, 179.0f, 180.0f, 181.0f, 182.0f, 183.0f,
53 184.0f, 185.0f, 186.0f, 187.0f, 188.0f, 189.0f, 190.0f, 191.0f,
54 192.0f, 193.0f, 194.0f, 195.0f, 196.0f, 197.0f, 198.0f, 199.0f,
55 200.0f, 201.0f, 202.0f, 203.0f, 204.0f, 205.0f, 206.0f, 207.0f,
56 208.0f, 209.0f, 210.0f, 211.0f, 212.0f, 213.0f, 214.0f, 215.0f,
57 216.0f, 217.0f, 218.0f, 219.0f, 220.0f, 221.0f, 222.0f, 223.0f,
58 224.0f, 225.0f, 226.0f, 227.0f, 228.0f, 229.0f, 230.0f, 231.0f,
59 232.0f, 233.0f, 234.0f, 235.0f, 236.0f, 237.0f, 238.0f, 239.0f,
60 240.0f, 241.0f, 242.0f, 243.0f, 244.0f, 245.0f, 246.0f, 247.0f,
61 248.0f, 249.0f, 250.0f, 251.0f, 252.0f, 253.0f, 254.0f, 255.0f,
62 256.0f
63};
64
65const mlib_f32 mlib_c_blend_Q8[] = {
66 0.00000000f, 0.00390625f, 0.00781250f, 0.01171875f,
67 0.01562500f, 0.01953125f, 0.02343750f, 0.02734375f,
68 0.03125000f, 0.03515625f, 0.03906250f, 0.04296875f,
69 0.04687500f, 0.05078125f, 0.05468750f, 0.05859375f,
70 0.06250000f, 0.06640625f, 0.07031250f, 0.07421875f,
71 0.07812500f, 0.08203125f, 0.08593750f, 0.08984375f,
72 0.09375000f, 0.09765625f, 0.10156250f, 0.10546875f,
73 0.10937500f, 0.11328125f, 0.11718750f, 0.12109375f,
74 0.12500000f, 0.12890625f, 0.13281250f, 0.13671875f,
75 0.14062500f, 0.14453125f, 0.14843750f, 0.15234375f,
76 0.15625000f, 0.16015625f, 0.16406250f, 0.16796875f,
77 0.17187500f, 0.17578125f, 0.17968750f, 0.18359375f,
78 0.18750000f, 0.19140625f, 0.19531250f, 0.19921875f,
79 0.20312500f, 0.20703125f, 0.21093750f, 0.21484375f,
80 0.21875000f, 0.22265625f, 0.22656250f, 0.23046875f,
81 0.23437500f, 0.23828125f, 0.24218750f, 0.24609375f,
82 0.25000000f, 0.25390625f, 0.25781250f, 0.26171875f,
83 0.26562500f, 0.26953125f, 0.27343750f, 0.27734375f,
84 0.28125000f, 0.28515625f, 0.28906250f, 0.29296875f,
85 0.29687500f, 0.30078125f, 0.30468750f, 0.30859375f,
86 0.31250000f, 0.31640625f, 0.32031250f, 0.32421875f,
87 0.32812500f, 0.33203125f, 0.33593750f, 0.33984375f,
88 0.34375000f, 0.34765625f, 0.35156250f, 0.35546875f,
89 0.35937500f, 0.36328125f, 0.36718750f, 0.37109375f,
90 0.37500000f, 0.37890625f, 0.38281250f, 0.38671875f,
91 0.39062500f, 0.39453125f, 0.39843750f, 0.40234375f,
92 0.40625000f, 0.41015625f, 0.41406250f, 0.41796875f,
93 0.42187500f, 0.42578125f, 0.42968750f, 0.43359375f,
94 0.43750000f, 0.44140625f, 0.44531250f, 0.44921875f,
95 0.45312500f, 0.45703125f, 0.46093750f, 0.46484375f,
96 0.46875000f, 0.47265625f, 0.47656250f, 0.48046875f,
97 0.48437500f, 0.48828125f, 0.49218750f, 0.49609375f,
98 0.50000000f, 0.50390625f, 0.50781250f, 0.51171875f,
99 0.51562500f, 0.51953125f, 0.52343750f, 0.52734375f,
100 0.53125000f, 0.53515625f, 0.53906250f, 0.54296875f,
101 0.54687500f, 0.55078125f, 0.55468750f, 0.55859375f,
102 0.56250000f, 0.56640625f, 0.57031250f, 0.57421875f,
103 0.57812500f, 0.58203125f, 0.58593750f, 0.58984375f,
104 0.59375000f, 0.59765625f, 0.60156250f, 0.60546875f,
105 0.60937500f, 0.61328125f, 0.61718750f, 0.62109375f,
106 0.62500000f, 0.62890625f, 0.63281250f, 0.63671875f,
107 0.64062500f, 0.64453125f, 0.64843750f, 0.65234375f,
108 0.65625000f, 0.66015625f, 0.66406250f, 0.66796875f,
109 0.67187500f, 0.67578125f, 0.67968750f, 0.68359375f,
110 0.68750000f, 0.69140625f, 0.69531250f, 0.69921875f,
111 0.70312500f, 0.70703125f, 0.71093750f, 0.71484375f,
112 0.71875000f, 0.72265625f, 0.72656250f, 0.73046875f,
113 0.73437500f, 0.73828125f, 0.74218750f, 0.74609375f,
114 0.75000000f, 0.75390625f, 0.75781250f, 0.76171875f,
115 0.76562500f, 0.76953125f, 0.77343750f, 0.77734375f,
116 0.78125000f, 0.78515625f, 0.78906250f, 0.79296875f,
117 0.79687500f, 0.80078125f, 0.80468750f, 0.80859375f,
118 0.81250000f, 0.81640625f, 0.82031250f, 0.82421875f,
119 0.82812500f, 0.83203125f, 0.83593750f, 0.83984375f,
120 0.84375000f, 0.84765625f, 0.85156250f, 0.85546875f,
121 0.85937500f, 0.86328125f, 0.86718750f, 0.87109375f,
122 0.87500000f, 0.87890625f, 0.88281250f, 0.88671875f,
123 0.89062500f, 0.89453125f, 0.89843750f, 0.90234375f,
124 0.90625000f, 0.91015625f, 0.91406250f, 0.91796875f,
125 0.92187500f, 0.92578125f, 0.92968750f, 0.93359375f,
126 0.93750000f, 0.94140625f, 0.94531250f, 0.94921875f,
127 0.95312500f, 0.95703125f, 0.96093750f, 0.96484375f,
128 0.96875000f, 0.97265625f, 0.97656250f, 0.98046875f,
129 0.98437500f, 0.98828125f, 0.99218750f, 0.99609375f,
130 1.00000000f, 1.00390625f, 1.00781250f, 1.01171875f,
131 1.01562500f, 1.01953125f, 1.02343750f, 1.02734375f,
132 1.03125000f, 1.03515625f, 1.03906250f, 1.04296875f,
133 1.04687500f, 1.05078125f, 1.05468750f, 1.05859375f,
134 1.06250000f, 1.06640625f, 1.07031250f, 1.07421875f,
135 1.07812500f, 1.08203125f, 1.08593750f, 1.08984375f,
136 1.09375000f, 1.09765625f, 1.10156250f, 1.10546875f,
137 1.10937500f, 1.11328125f, 1.11718750f, 1.12109375f,
138 1.12500000f, 1.12890625f, 1.13281250f, 1.13671875f,
139 1.14062500f, 1.14453125f, 1.14843750f, 1.15234375f,
140 1.15625000f, 1.16015625f, 1.16406250f, 1.16796875f,
141 1.17187500f, 1.17578125f, 1.17968750f, 1.18359375f,
142 1.18750000f, 1.19140625f, 1.19531250f, 1.19921875f,
143 1.20312500f, 1.20703125f, 1.21093750f, 1.21484375f,
144 1.21875000f, 1.22265625f, 1.22656250f, 1.23046875f,
145 1.23437500f, 1.23828125f, 1.24218750f, 1.24609375f,
146 1.25000000f, 1.25390625f, 1.25781250f, 1.26171875f,
147 1.26562500f, 1.26953125f, 1.27343750f, 1.27734375f,
148 1.28125000f, 1.28515625f, 1.28906250f, 1.29296875f,
149 1.29687500f, 1.30078125f, 1.30468750f, 1.30859375f,
150 1.31250000f, 1.31640625f, 1.32031250f, 1.32421875f,
151 1.32812500f, 1.33203125f, 1.33593750f, 1.33984375f,
152 1.34375000f, 1.34765625f, 1.35156250f, 1.35546875f,
153 1.35937500f, 1.36328125f, 1.36718750f, 1.37109375f,
154 1.37500000f, 1.37890625f, 1.38281250f, 1.38671875f,
155 1.39062500f, 1.39453125f, 1.39843750f, 1.40234375f,
156 1.40625000f, 1.41015625f, 1.41406250f, 1.41796875f,
157 1.42187500f, 1.42578125f, 1.42968750f, 1.43359375f,
158 1.43750000f, 1.44140625f, 1.44531250f, 1.44921875f,
159 1.45312500f, 1.45703125f, 1.46093750f, 1.46484375f,
160 1.46875000f, 1.47265625f, 1.47656250f, 1.48046875f,
161 1.48437500f, 1.48828125f, 1.49218750f, 1.49609375f,
162 1.50000000f, 1.50390625f, 1.50781250f, 1.51171875f,
163 1.51562500f, 1.51953125f, 1.52343750f, 1.52734375f,
164 1.53125000f, 1.53515625f, 1.53906250f, 1.54296875f,
165 1.54687500f, 1.55078125f, 1.55468750f, 1.55859375f,
166 1.56250000f, 1.56640625f, 1.57031250f, 1.57421875f,
167 1.57812500f, 1.58203125f, 1.58593750f, 1.58984375f,
168 1.59375000f, 1.59765625f, 1.60156250f, 1.60546875f,
169 1.60937500f, 1.61328125f, 1.61718750f, 1.62109375f,
170 1.62500000f, 1.62890625f, 1.63281250f, 1.63671875f,
171 1.64062500f, 1.64453125f, 1.64843750f, 1.65234375f,
172 1.65625000f, 1.66015625f, 1.66406250f, 1.66796875f,
173 1.67187500f, 1.67578125f, 1.67968750f, 1.68359375f,
174 1.68750000f, 1.69140625f, 1.69531250f, 1.69921875f,
175 1.70312500f, 1.70703125f, 1.71093750f, 1.71484375f,
176 1.71875000f, 1.72265625f, 1.72656250f, 1.73046875f,
177 1.73437500f, 1.73828125f, 1.74218750f, 1.74609375f,
178 1.75000000f, 1.75390625f, 1.75781250f, 1.76171875f,
179 1.76562500f, 1.76953125f, 1.77343750f, 1.77734375f,
180 1.78125000f, 1.78515625f, 1.78906250f, 1.79296875f,
181 1.79687500f, 1.80078125f, 1.80468750f, 1.80859375f,
182 1.81250000f, 1.81640625f, 1.82031250f, 1.82421875f,
183 1.82812500f, 1.83203125f, 1.83593750f, 1.83984375f,
184 1.84375000f, 1.84765625f, 1.85156250f, 1.85546875f,
185 1.85937500f, 1.86328125f, 1.86718750f, 1.87109375f,
186 1.87500000f, 1.87890625f, 1.88281250f, 1.88671875f,
187 1.89062500f, 1.89453125f, 1.89843750f, 1.90234375f,
188 1.90625000f, 1.91015625f, 1.91406250f, 1.91796875f,
189 1.92187500f, 1.92578125f, 1.92968750f, 1.93359375f,
190 1.93750000f, 1.94140625f, 1.94531250f, 1.94921875f,
191 1.95312500f, 1.95703125f, 1.96093750f, 1.96484375f,
192 1.96875000f, 1.97265625f, 1.97656250f, 1.98046875f,
193 1.98437500f, 1.98828125f, 1.99218750f, 1.99609375f,
194 2.00000000f
195};
196
197const mlib_f32 mlib_c_blend_u8_sat[] = {
198 0.0f, 8388608.0f, 16777216.0f, 25165824.0f,
199 33554432.0f, 41943040.0f, 50331648.0f, 58720256.0f,
200 67108864.0f, 75497472.0f, 83886080.0f, 92274688.0f,
201 100663296.0f, 109051904.0f, 117440512.0f, 125829120.0f,
202 134217728.0f, 142606336.0f, 150994944.0f, 159383552.0f,
203 167772160.0f, 176160768.0f, 184549376.0f, 192937984.0f,
204 201326592.0f, 209715200.0f, 218103808.0f, 226492416.0f,
205 234881024.0f, 243269632.0f, 251658240.0f, 260046848.0f,
206 268435456.0f, 276824064.0f, 285212672.0f, 293601280.0f,
207 301989888.0f, 310378496.0f, 318767104.0f, 327155712.0f,
208 335544320.0f, 343932928.0f, 352321536.0f, 360710144.0f,
209 369098752.0f, 377487360.0f, 385875968.0f, 394264576.0f,
210 402653184.0f, 411041792.0f, 419430400.0f, 427819008.0f,
211 436207616.0f, 444596224.0f, 452984832.0f, 461373440.0f,
212 469762048.0f, 478150656.0f, 486539264.0f, 494927872.0f,
213 503316480.0f, 511705088.0f, 520093696.0f, 528482304.0f,
214 536870912.0f, 545259520.0f, 553648128.0f, 562036736.0f,
215 570425344.0f, 578813952.0f, 587202560.0f, 595591168.0f,
216 603979776.0f, 612368384.0f, 620756992.0f, 629145600.0f,
217 637534208.0f, 645922816.0f, 654311424.0f, 662700032.0f,
218 671088640.0f, 679477248.0f, 687865856.0f, 696254464.0f,
219 704643072.0f, 713031680.0f, 721420288.0f, 729808896.0f,
220 738197504.0f, 746586112.0f, 754974720.0f, 763363328.0f,
221 771751936.0f, 780140544.0f, 788529152.0f, 796917760.0f,
222 805306368.0f, 813694976.0f, 822083584.0f, 830472192.0f,
223 838860800.0f, 847249408.0f, 855638016.0f, 864026624.0f,
224 872415232.0f, 880803840.0f, 889192448.0f, 897581056.0f,
225 905969664.0f, 914358272.0f, 922746880.0f, 931135488.0f,
226 939524096.0f, 947912704.0f, 956301312.0f, 964689920.0f,
227 973078528.0f, 981467136.0f, 989855744.0f, 998244352.0f,
228 1006632960.0f, 1015021568.0f, 1023410176.0f, 1031798784.0f,
229 1040187392.0f, 1048576000.0f, 1056964608.0f, 1065353216.0f,
230 1073741824.0f, 1082130432.0f, 1090519040.0f, 1098907648.0f,
231 1107296256.0f, 1115684864.0f, 1124073472.0f, 1132462080.0f,
232 1140850688.0f, 1149239296.0f, 1157627904.0f, 1166016512.0f,
233 1174405120.0f, 1182793728.0f, 1191182336.0f, 1199570944.0f,
234 1207959552.0f, 1216348160.0f, 1224736768.0f, 1233125376.0f,
235 1241513984.0f, 1249902592.0f, 1258291200.0f, 1266679808.0f,
236 1275068416.0f, 1283457024.0f, 1291845632.0f, 1300234240.0f,
237 1308622848.0f, 1317011456.0f, 1325400064.0f, 1333788672.0f,
238 1342177280.0f, 1350565888.0f, 1358954496.0f, 1367343104.0f,
239 1375731712.0f, 1384120320.0f, 1392508928.0f, 1400897536.0f,
240 1409286144.0f, 1417674752.0f, 1426063360.0f, 1434451968.0f,
241 1442840576.0f, 1451229184.0f, 1459617792.0f, 1468006400.0f,
242 1476395008.0f, 1484783616.0f, 1493172224.0f, 1501560832.0f,
243 1509949440.0f, 1518338048.0f, 1526726656.0f, 1535115264.0f,
244 1543503872.0f, 1551892480.0f, 1560281088.0f, 1568669696.0f,
245 1577058304.0f, 1585446912.0f, 1593835520.0f, 1602224128.0f,
246 1610612736.0f, 1619001344.0f, 1627389952.0f, 1635778560.0f,
247 1644167168.0f, 1652555776.0f, 1660944384.0f, 1669332992.0f,
248 1677721600.0f, 1686110208.0f, 1694498816.0f, 1702887424.0f,
249 1711276032.0f, 1719664640.0f, 1728053248.0f, 1736441856.0f,
250 1744830464.0f, 1753219072.0f, 1761607680.0f, 1769996288.0f,
251 1778384896.0f, 1786773504.0f, 1795162112.0f, 1803550720.0f,
252 1811939328.0f, 1820327936.0f, 1828716544.0f, 1837105152.0f,
253 1845493760.0f, 1853882368.0f, 1862270976.0f, 1870659584.0f,
254 1879048192.0f, 1887436800.0f, 1895825408.0f, 1904214016.0f,
255 1912602624.0f, 1920991232.0f, 1929379840.0f, 1937768448.0f,
256 1946157056.0f, 1954545664.0f, 1962934272.0f, 1971322880.0f,
257 1979711488.0f, 1988100096.0f, 1996488704.0f, 2004877312.0f,
258 2013265920.0f, 2021654528.0f, 2030043136.0f, 2038431744.0f,
259 2046820352.0f, 2055208960.0f, 2063597568.0f, 2071986176.0f,
260 2080374784.0f, 2088763392.0f, 2097152000.0f, 2105540608.0f,
261 2113929216.0f, 2122317824.0f, 2130706432.0f, 2139095040.0f,
262 2147483648.0f
263};