LibreOffice Module vcl (master) 1
floyd.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
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/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
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 .
18 */
19
20#pragma once
21
22#define CALC_ERRORS \
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] ];
32
33#define CALC_TABLES3 \
34 p2T[nX++] += FloydError3[nBErr]; \
35 p2T[nX++] += FloydError3[nGErr]; \
36 p2T[nX++] += FloydError3[nRErr];
37
38#define CALC_TABLES5 \
39 p2T[nX++] += FloydError5[nBErr]; \
40 p2T[nX++] += FloydError5[nGErr]; \
41 p2T[nX++] += FloydError5[nRErr];
42
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];
50
51const extern sal_uLong nVCLRLut[ 6 ] = { 16, 17, 18, 19, 20, 21 };
52const extern sal_uLong nVCLGLut[ 6 ] = { 0, 6, 12, 18, 24, 30 };
53const extern sal_uLong nVCLBLut[ 6 ] = { 0, 36, 72, 108, 144, 180 };
54
55const extern sal_uLong nVCLDitherLut[ 256 ] =
56{
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,
80 25856, 38144, 21760
81};
82
83const extern sal_uLong nVCLLut[ 256 ] =
84{
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
117};
118
120{
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
137};
138
140{
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
149};
150
152{
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
162};
163
165{
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,
175 38400
176};
177
179{
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,
189 53760
190};
191
193{
194 -30, 21, 72, 123, 174, 225
195};
196
197/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
const tools::Long FloydError7[61]
Definition: floyd.hxx:178
const sal_uLong nVCLLut[256]
const tools::Long FloydMap[256]
Definition: floyd.hxx:119
const tools::Long FloydError1[61]
Definition: floyd.hxx:139
const sal_uLong nVCLBLut[6]
const tools::Long FloydError5[61]
Definition: floyd.hxx:164
const sal_uLong nVCLGLut[6]
const tools::Long FloydError3[61]
Definition: floyd.hxx:151
const tools::Long FloydIndexMap[6]
Definition: floyd.hxx:192
const sal_uLong nVCLRLut[6]
const sal_uLong nVCLDitherLut[256]
long Long
sal_uIntPtr sal_uLong