1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
23 nTemp = p1T[nX++] >> 12; \
24 nBErr = MinMax( nTemp, 0, 255 ); \
25 nBErr = nBErr - FloydIndexMap[ nBC = FloydMap[nBErr] ]; \
26 nTemp = p1T[nX++] >> 12; \
27 nGErr = MinMax( nTemp, 0, 255 ); \
28 nGErr = nGErr - FloydIndexMap[ nGC = FloydMap[nGErr] ]; \
29 nTemp = p1T[nX] >> 12; \
30 nRErr = MinMax( nTemp, 0, 255 ); \
31 nRErr = nRErr - FloydIndexMap[ nRC = FloydMap[nRErr] ];
33 #define CALC_TABLES3 \
34 p2T[nX++] += FloydError3[nBErr]; \
35 p2T[nX++] += FloydError3[nGErr]; \
36 p2T[nX++] += FloydError3[nRErr];
38 #define CALC_TABLES5 \
39 p2T[nX++] += FloydError5[nBErr]; \
40 p2T[nX++] += FloydError5[nGErr]; \
41 p2T[nX++] += FloydError5[nRErr];
43 #define CALC_TABLES7 \
44 p1T[++nX] += FloydError7[nBErr]; \
45 p2T[nX++] += FloydError1[nBErr]; \
46 p1T[nX] += FloydError7[nGErr]; \
47 p2T[nX++] += FloydError1[nGErr]; \
48 p1T[nX] += FloydError7[nRErr]; \
49 p2T[nX] += FloydError1[nRErr];
51 const extern sal_uLong nVCLRLut
[ 6 ] = { 16, 17, 18, 19, 20, 21 };
52 const extern sal_uLong nVCLGLut
[ 6 ] = { 0, 6, 12, 18, 24, 30 };
53 const extern sal_uLong nVCLBLut
[ 6 ] = { 0, 36, 72, 108, 144, 180 };
55 const extern sal_uLong nVCLDitherLut
[ 256 ] =
57 0, 49152, 12288, 61440, 3072, 52224, 15360, 64512, 768, 49920, 13056,
58 62208, 3840, 52992, 16128, 65280, 32768, 16384, 45056, 28672, 35840, 19456,
59 48128, 31744, 33536, 17152, 45824, 29440, 36608, 20224, 48896, 32512, 8192,
60 57344, 4096, 53248, 11264, 60416, 7168, 56320, 8960, 58112, 4864, 54016,
61 12032, 61184, 7936, 57088, 40960, 24576, 36864, 20480, 44032, 27648, 39936,
62 23552, 41728, 25344, 37632, 21248, 44800, 28416, 40704, 24320, 2048, 51200,
63 14336, 63488, 1024, 50176, 13312, 62464, 2816, 51968, 15104, 64256, 1792,
64 50944, 14080, 63232, 34816, 18432, 47104, 30720, 33792, 17408, 46080, 29696,
65 35584, 19200, 47872, 31488, 34560, 18176, 46848, 30464, 10240, 59392, 6144,
66 55296, 9216, 58368, 5120, 54272, 11008, 60160, 6912, 56064, 9984, 59136,
67 5888, 55040, 43008, 26624, 38912, 22528, 41984, 25600, 37888, 21504, 43776,
68 27392, 39680, 23296, 42752, 26368, 38656, 22272, 512, 49664, 12800, 61952,
69 3584, 52736, 15872, 65024, 256, 49408, 12544, 61696, 3328, 52480, 15616,
70 64768, 33280, 16896, 45568, 29184, 36352, 19968, 48640, 32256, 33024, 16640,
71 45312, 28928, 36096, 19712, 48384, 32000, 8704, 57856, 4608, 53760, 11776,
72 60928, 7680, 56832, 8448, 57600, 4352, 53504, 11520, 60672, 7424, 56576,
73 41472, 25088, 37376, 20992, 44544, 28160, 40448, 24064, 41216, 24832, 37120,
74 20736, 44288, 27904, 40192, 23808, 2560, 51712, 14848, 64000, 1536, 50688,
75 13824, 62976, 2304, 51456, 14592, 63744, 1280, 50432, 13568, 62720, 35328,
76 18944, 47616, 31232, 34304, 17920, 46592, 30208, 35072, 18688, 47360, 30976,
77 34048, 17664, 46336, 29952, 10752, 59904, 6656, 55808, 9728, 58880, 5632,
78 54784, 10496, 59648, 6400, 55552, 9472, 58624, 5376, 54528, 43520, 27136,
79 39424, 23040, 42496, 26112, 38400, 22016, 43264, 26880, 39168, 22784, 42240,
83 const extern sal_uLong nVCLLut
[ 256 ] =
85 0, 1286, 2572, 3858, 5144, 6430, 7716, 9002,
86 10288, 11574, 12860, 14146, 15432, 16718, 18004, 19290,
87 20576, 21862, 23148, 24434, 25720, 27006, 28292, 29578,
88 30864, 32150, 33436, 34722, 36008, 37294, 38580, 39866,
89 41152, 42438, 43724, 45010, 46296, 47582, 48868, 50154,
90 51440, 52726, 54012, 55298, 56584, 57870, 59156, 60442,
91 61728, 63014, 64300, 65586, 66872, 68158, 69444, 70730,
92 72016, 73302, 74588, 75874, 77160, 78446, 79732, 81018,
93 82304, 83590, 84876, 86162, 87448, 88734, 90020, 91306,
94 92592, 93878, 95164, 96450, 97736, 99022,100308,101594,
95 102880,104166,105452,106738,108024,109310,110596,111882,
96 113168,114454,115740,117026,118312,119598,120884,122170,
97 123456,124742,126028,127314,128600,129886,131172,132458,
98 133744,135030,136316,137602,138888,140174,141460,142746,
99 144032,145318,146604,147890,149176,150462,151748,153034,
100 154320,155606,156892,158178,159464,160750,162036,163322,
101 164608,165894,167180,168466,169752,171038,172324,173610,
102 174896,176182,177468,178754,180040,181326,182612,183898,
103 185184,186470,187756,189042,190328,191614,192900,194186,
104 195472,196758,198044,199330,200616,201902,203188,204474,
105 205760,207046,208332,209618,210904,212190,213476,214762,
106 216048,217334,218620,219906,221192,222478,223764,225050,
107 226336,227622,228908,230194,231480,232766,234052,235338,
108 236624,237910,239196,240482,241768,243054,244340,245626,
109 246912,248198,249484,250770,252056,253342,254628,255914,
110 257200,258486,259772,261058,262344,263630,264916,266202,
111 267488,268774,270060,271346,272632,273918,275204,276490,
112 277776,279062,280348,281634,282920,284206,285492,286778,
113 288064,289350,290636,291922,293208,294494,295780,297066,
114 298352,299638,300924,302210,303496,304782,306068,307354,
115 308640,309926,311212,312498,313784,315070,316356,317642,
116 318928,320214,321500,322786,324072,325358,326644,327930
119 const tools::Long FloydMap
[256] =
121 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
123 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
124 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
125 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
126 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
127 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
128 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
129 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
130 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
131 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
132 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
133 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
134 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
135 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
136 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
139 const tools::Long FloydError1
[61] =
141 -7680, -7424, -7168, -6912, -6656, -6400, -6144,
142 -5888, -5632, -5376, -5120, -4864, -4608, -4352,
143 -4096, -3840, -3584, -3328, -3072, -2816, -2560,
144 -2304, -2048, -1792, -1536, -1280, -1024, -768,
145 -512, -256, 0, 256, 512, 768, 1024, 1280, 1536,
146 1792, 2048, 2304, 2560, 2816, 3072, 3328, 3584,
147 3840, 4096, 4352, 4608, 4864, 5120, 5376, 5632,
148 5888, 6144, 6400, 6656, 6912, 7168, 7424, 7680
151 const tools::Long FloydError3
[61] =
153 -23040, -22272, -21504, -20736, -19968, -19200,
154 -18432, -17664, -16896, -16128, -15360, -14592,
155 -13824, -13056, -12288, -11520, -10752, -9984,
156 -9216, -8448, -7680, -6912, -6144, -5376, -4608,
157 -3840, -3072, -2304, -1536, -768, 0, 768, 1536,
158 2304, 3072, 3840, 4608, 5376, 6144, 6912, 7680,
159 8448, 9216, 9984, 10752, 11520, 12288, 13056,
160 13824, 14592, 15360, 16128, 16896, 17664, 18432,
161 19200, 19968, 20736, 21504, 22272, 23040
164 const tools::Long FloydError5
[61] =
166 -38400, -37120, -35840, -34560, -33280, -32000,
167 -30720, -29440, -28160, -26880, -25600, -24320,
168 -23040, -21760, -20480, -19200, -17920, -16640,
169 -15360, -14080, -12800, -11520, -10240, -8960,
170 -7680, -6400, -5120, -3840, -2560, -1280, 0,
171 1280, 2560, 3840, 5120, 6400, 7680, 8960, 10240,
172 11520, 12800, 14080, 15360, 16640, 17920, 19200,
173 20480, 21760, 23040, 24320, 25600, 26880, 28160,
174 29440, 30720, 32000, 33280, 34560, 35840, 37120,
178 const tools::Long FloydError7
[61] =
180 -53760, -51968, -50176, -48384, -46592, -44800,
181 -43008, -41216, -39424, -37632, -35840, -34048,
182 -32256, -30464, -28672, -26880, -25088, -23296,
183 -21504, -19712, -17920, -16128, -14336, -12544,
184 -10752, -8960, -7168, -5376, -3584, -1792, 0,
185 1792, 3584, 5376, 7168, 8960, 10752, 12544, 14336,
186 16128, 17920, 19712, 21504, 23296, 25088, 26880,
187 28672, 30464, 32256, 34048, 35840, 37632, 39424,
188 41216, 43008, 44800, 46592, 48384, 50176, 51968,
192 const tools::Long FloydIndexMap
[6] =
194 -30, 21, 72, 123, 174, 225
197 /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */