/src/ghostpdl/base/gsbitops.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* Copyright (C) 2001-2023 Artifex Software, Inc. |
2 | | All Rights Reserved. |
3 | | |
4 | | This software is provided AS-IS with no warranty, either express or |
5 | | implied. |
6 | | |
7 | | This software is distributed under license and may not be copied, |
8 | | modified or distributed except as expressly authorized under the terms |
9 | | of the license contained in the file LICENSE in this distribution. |
10 | | |
11 | | Refer to licensing information at http://www.artifex.com or contact |
12 | | Artifex Software, Inc., 39 Mesa Street, Suite 108A, San Francisco, |
13 | | CA 94129, USA, for further information. |
14 | | */ |
15 | | |
16 | | |
17 | | /* Interface for bitmap operations */ |
18 | | |
19 | | |
20 | | #ifndef gsbitops_INCLUDED |
21 | | # define gsbitops_INCLUDED |
22 | | |
23 | | #include "gxcindex.h" |
24 | | #include "gstypes.h" |
25 | | |
26 | | /* ---------------- Pixel processing macros ---------------- */ |
27 | | |
28 | | /* |
29 | | * These macros support code that processes data pixel-by-pixel (or, to be |
30 | | * more accurate, packed arrays of values -- they may be complete pixels |
31 | | * or individual components of pixels). |
32 | | * |
33 | | * Supported #s of bits per value (bpv) are 1, 2, 4, or n * 8, where n <= 8. |
34 | | * The suffix 8, 12, 16, 32, or 64 on a macro name indicates the maximum |
35 | | * value of bpv that the macro is prepared to handle. |
36 | | * |
37 | | * The setup macros number bits within a byte in big-endian order, i.e., |
38 | | * 0x80 is bit 0, 0x01 is bit 7. However, sbit/dbit may use a different |
39 | | * representation for better performance. ****** NYI ****** |
40 | | */ |
41 | | |
42 | | /* macro to eliminate compiler warning message */ |
43 | | #define SAMPLE_BOUND_SHIFT(value, shift)\ |
44 | 0 | ((shift) >= 8 * sizeof(value) ? (shift) & (8 * sizeof(value) - 1) : (shift)) |
45 | | |
46 | | /* Load a value from memory, without incrementing. */ |
47 | | static int inline sample_load_next8(uint *value, const byte **sptr, int *sbit, int sbpv) |
48 | 0 | { |
49 | 0 | switch ( sbpv >> 2 ) { |
50 | 0 | case 0: |
51 | 0 | *value = (**sptr >> (8 - *sbit - sbpv)) & (sbpv | 1); |
52 | 0 | break; |
53 | 0 | case 1: |
54 | 0 | *value = (**sptr >> (4 - *sbit)) & 0xf; |
55 | 0 | break; |
56 | 0 | case 2: |
57 | 0 | *value = **sptr; |
58 | 0 | break; |
59 | 0 | default: |
60 | 0 | return -1; |
61 | 0 | } |
62 | 0 | *sbit += sbpv; |
63 | 0 | *sptr += *sbit >> 3; |
64 | 0 | *sbit &= 7; |
65 | 0 | return 0; |
66 | 0 | } Unexecuted instantiation: gximage3.c:sample_load_next8 Unexecuted instantiation: gximag3x.c:sample_load_next8 Unexecuted instantiation: gdevp14.c:sample_load_next8 Unexecuted instantiation: gdevprn.c:sample_load_next8 Unexecuted instantiation: gsflip.c:sample_load_next8 Unexecuted instantiation: gdevmpla.c:sample_load_next8 Unexecuted instantiation: gdevpng.c:sample_load_next8 Unexecuted instantiation: gsbitops.c:sample_load_next8 Unexecuted instantiation: gsovrc.c:sample_load_next8 Unexecuted instantiation: gxoprect.c:sample_load_next8 Unexecuted instantiation: gxccman.c:sample_load_next8 Unexecuted instantiation: gxht.c:sample_load_next8 Unexecuted instantiation: gxhtbit.c:sample_load_next8 Unexecuted instantiation: gxifast.c:sample_load_next8 Unexecuted instantiation: gximono.c:sample_load_next8 Unexecuted instantiation: gxiscale.c:sample_load_next8 Unexecuted instantiation: gdevabuf.c:sample_load_next8 Unexecuted instantiation: gdevdbit.c:sample_load_next8 Unexecuted instantiation: gdevdgbr.c:sample_load_next8 Unexecuted instantiation: gdevmem.c:sample_load_next8 Unexecuted instantiation: gdevplnx.c:sample_load_next8 Unexecuted instantiation: gdevm1.c:sample_load_next8 Unexecuted instantiation: gdevm2.c:sample_load_next8 Unexecuted instantiation: gdevm4.c:sample_load_next8 Unexecuted instantiation: gdevm8.c:sample_load_next8 Unexecuted instantiation: gdevm16.c:sample_load_next8 Unexecuted instantiation: gdevm24.c:sample_load_next8 Unexecuted instantiation: gdevm32.c:sample_load_next8 Unexecuted instantiation: gdevm40.c:sample_load_next8 Unexecuted instantiation: gdevm48.c:sample_load_next8 Unexecuted instantiation: gdevm56.c:sample_load_next8 Unexecuted instantiation: gdevm64.c:sample_load_next8 Unexecuted instantiation: gdevmx.c:sample_load_next8 Unexecuted instantiation: gdevdrop.c:sample_load_next8 Unexecuted instantiation: gdevmr1.c:sample_load_next8 Unexecuted instantiation: gdevmr2n.c:sample_load_next8 Unexecuted instantiation: gdevmr8n.c:sample_load_next8 Unexecuted instantiation: gxclbits.c:sample_load_next8 Unexecuted instantiation: gxclrast.c:sample_load_next8 Unexecuted instantiation: gsbitcom.c:sample_load_next8 |
67 | | static int inline sample_load_next12(uint *value, const byte **sptr, int *sbit, int sbpv) |
68 | 0 | { |
69 | 0 | switch ( sbpv >> 2 ) { |
70 | 0 | case 0: |
71 | 0 | *value = (**sptr >> (8 - *sbit - sbpv)) & (sbpv | 1); |
72 | 0 | break; |
73 | 0 | case 1: |
74 | 0 | *value = (**sptr >> (4 - *sbit)) & 0xf; |
75 | 0 | break; |
76 | 0 | case 2: |
77 | 0 | *value = **sptr; |
78 | 0 | break; |
79 | 0 | case 3: |
80 | 0 | *value = (*sbit ? ((**sptr & 0xf) << 8) | (*sptr)[1] : |
81 | 0 | (**sptr << 4) | ((*sptr)[1] >> 4)); |
82 | 0 | break; |
83 | 0 | default: |
84 | 0 | return -1; |
85 | 0 | } |
86 | 0 | *sbit += sbpv; |
87 | 0 | *sptr += *sbit >> 3; |
88 | 0 | *sbit &= 7; |
89 | 0 | return 0; |
90 | 0 | } Unexecuted instantiation: gximage3.c:sample_load_next12 Unexecuted instantiation: gximag3x.c:sample_load_next12 Unexecuted instantiation: gdevp14.c:sample_load_next12 Unexecuted instantiation: gdevprn.c:sample_load_next12 Unexecuted instantiation: gsflip.c:sample_load_next12 Unexecuted instantiation: gdevmpla.c:sample_load_next12 Unexecuted instantiation: gdevpng.c:sample_load_next12 Unexecuted instantiation: gsbitops.c:sample_load_next12 Unexecuted instantiation: gsovrc.c:sample_load_next12 Unexecuted instantiation: gxoprect.c:sample_load_next12 Unexecuted instantiation: gxccman.c:sample_load_next12 Unexecuted instantiation: gxht.c:sample_load_next12 Unexecuted instantiation: gxhtbit.c:sample_load_next12 Unexecuted instantiation: gxifast.c:sample_load_next12 Unexecuted instantiation: gximono.c:sample_load_next12 Unexecuted instantiation: gxiscale.c:sample_load_next12 Unexecuted instantiation: gdevabuf.c:sample_load_next12 Unexecuted instantiation: gdevdbit.c:sample_load_next12 Unexecuted instantiation: gdevdgbr.c:sample_load_next12 Unexecuted instantiation: gdevmem.c:sample_load_next12 Unexecuted instantiation: gdevplnx.c:sample_load_next12 Unexecuted instantiation: gdevm1.c:sample_load_next12 Unexecuted instantiation: gdevm2.c:sample_load_next12 Unexecuted instantiation: gdevm4.c:sample_load_next12 Unexecuted instantiation: gdevm8.c:sample_load_next12 Unexecuted instantiation: gdevm16.c:sample_load_next12 Unexecuted instantiation: gdevm24.c:sample_load_next12 Unexecuted instantiation: gdevm32.c:sample_load_next12 Unexecuted instantiation: gdevm40.c:sample_load_next12 Unexecuted instantiation: gdevm48.c:sample_load_next12 Unexecuted instantiation: gdevm56.c:sample_load_next12 Unexecuted instantiation: gdevm64.c:sample_load_next12 Unexecuted instantiation: gdevmx.c:sample_load_next12 Unexecuted instantiation: gdevdrop.c:sample_load_next12 Unexecuted instantiation: gdevmr1.c:sample_load_next12 Unexecuted instantiation: gdevmr2n.c:sample_load_next12 Unexecuted instantiation: gdevmr8n.c:sample_load_next12 Unexecuted instantiation: gxclbits.c:sample_load_next12 Unexecuted instantiation: gxclrast.c:sample_load_next12 Unexecuted instantiation: gsbitcom.c:sample_load_next12 |
91 | | static int inline sample_load16(uint *value, const byte *sptr, int sbit, int sbpv) |
92 | 0 | { |
93 | 0 | switch (sbpv >> 2 ) { |
94 | 0 | case 0: |
95 | 0 | *value = (*sptr >> (8 - sbit - sbpv)) & (sbpv | 1); |
96 | 0 | break; |
97 | 0 | case 1: |
98 | 0 | *value = (*sptr >> (4 - sbit)) & 0xf; |
99 | 0 | break; |
100 | 0 | case 2: |
101 | 0 | *value = *sptr; |
102 | 0 | break; |
103 | 0 | case 3: |
104 | 0 | *value = (sbit ? ((*sptr & 0xf) << 8) | sptr[1] : |
105 | 0 | (*sptr << 4) | (sptr[1] >> 4)); |
106 | 0 | break; |
107 | 0 | case 4: |
108 | 0 | *value = (*sptr << 8) | sptr[1]; |
109 | 0 | break; |
110 | 0 | default: |
111 | 0 | return -1; |
112 | 0 | } |
113 | 0 | return 0; |
114 | 0 | } Unexecuted instantiation: gximage3.c:sample_load16 Unexecuted instantiation: gximag3x.c:sample_load16 Unexecuted instantiation: gdevp14.c:sample_load16 Unexecuted instantiation: gdevprn.c:sample_load16 Unexecuted instantiation: gsflip.c:sample_load16 Unexecuted instantiation: gdevmpla.c:sample_load16 Unexecuted instantiation: gdevpng.c:sample_load16 Unexecuted instantiation: gsbitops.c:sample_load16 Unexecuted instantiation: gsovrc.c:sample_load16 Unexecuted instantiation: gxoprect.c:sample_load16 Unexecuted instantiation: gxccman.c:sample_load16 Unexecuted instantiation: gxht.c:sample_load16 Unexecuted instantiation: gxhtbit.c:sample_load16 Unexecuted instantiation: gxifast.c:sample_load16 Unexecuted instantiation: gximono.c:sample_load16 Unexecuted instantiation: gxiscale.c:sample_load16 Unexecuted instantiation: gdevabuf.c:sample_load16 Unexecuted instantiation: gdevdbit.c:sample_load16 Unexecuted instantiation: gdevdgbr.c:sample_load16 Unexecuted instantiation: gdevmem.c:sample_load16 Unexecuted instantiation: gdevplnx.c:sample_load16 Unexecuted instantiation: gdevm1.c:sample_load16 Unexecuted instantiation: gdevm2.c:sample_load16 Unexecuted instantiation: gdevm4.c:sample_load16 Unexecuted instantiation: gdevm8.c:sample_load16 Unexecuted instantiation: gdevm16.c:sample_load16 Unexecuted instantiation: gdevm24.c:sample_load16 Unexecuted instantiation: gdevm32.c:sample_load16 Unexecuted instantiation: gdevm40.c:sample_load16 Unexecuted instantiation: gdevm48.c:sample_load16 Unexecuted instantiation: gdevm56.c:sample_load16 Unexecuted instantiation: gdevm64.c:sample_load16 Unexecuted instantiation: gdevmx.c:sample_load16 Unexecuted instantiation: gdevdrop.c:sample_load16 Unexecuted instantiation: gdevmr1.c:sample_load16 Unexecuted instantiation: gdevmr2n.c:sample_load16 Unexecuted instantiation: gdevmr8n.c:sample_load16 Unexecuted instantiation: gxclbits.c:sample_load16 Unexecuted instantiation: gxclrast.c:sample_load16 Unexecuted instantiation: gsbitcom.c:sample_load16 |
115 | | static int inline sample_load_next16 (ushort *value, const byte **sptr, int *sbit, int sbpv) |
116 | 84.6M | { |
117 | 84.6M | switch ( sbpv >> 2 ) { |
118 | 84.6M | case 0: |
119 | 84.6M | *value = (**sptr >> (8 - *sbit - sbpv)) & (sbpv | 1); |
120 | 84.6M | break; |
121 | 0 | case 1: |
122 | 0 | *value = (**sptr >> (4 - *sbit)) & 0xf; |
123 | 0 | break; |
124 | 0 | case 2: |
125 | 0 | *value = **sptr; |
126 | 0 | break; |
127 | 0 | case 3: |
128 | 0 | *value = (*sbit ? ((**sptr & 0xf) << 8) | (*sptr)[1] : |
129 | 0 | (**sptr << 4) | ((*sptr)[1] >> 4)); |
130 | 0 | break; |
131 | 0 | case 4: |
132 | 0 | *value = (**sptr << 8) | (*sptr)[1]; |
133 | 0 | break; |
134 | 0 | default: |
135 | 0 | return -1; |
136 | 84.6M | } |
137 | 84.6M | *sbit += sbpv; |
138 | 84.6M | *sptr += *sbit >> 3; |
139 | 84.6M | *sbit &= 7; |
140 | 84.6M | return 0; |
141 | 84.6M | } Unexecuted instantiation: gximage3.c:sample_load_next16 Unexecuted instantiation: gximag3x.c:sample_load_next16 Unexecuted instantiation: gdevp14.c:sample_load_next16 Unexecuted instantiation: gdevprn.c:sample_load_next16 Unexecuted instantiation: gsflip.c:sample_load_next16 gdevmpla.c:sample_load_next16 Line | Count | Source | 116 | 84.6M | { | 117 | 84.6M | switch ( sbpv >> 2 ) { | 118 | 84.6M | case 0: | 119 | 84.6M | *value = (**sptr >> (8 - *sbit - sbpv)) & (sbpv | 1); | 120 | 84.6M | break; | 121 | 0 | case 1: | 122 | 0 | *value = (**sptr >> (4 - *sbit)) & 0xf; | 123 | 0 | break; | 124 | 0 | case 2: | 125 | 0 | *value = **sptr; | 126 | 0 | break; | 127 | 0 | case 3: | 128 | 0 | *value = (*sbit ? ((**sptr & 0xf) << 8) | (*sptr)[1] : | 129 | 0 | (**sptr << 4) | ((*sptr)[1] >> 4)); | 130 | 0 | break; | 131 | 0 | case 4: | 132 | 0 | *value = (**sptr << 8) | (*sptr)[1]; | 133 | 0 | break; | 134 | 0 | default: | 135 | 0 | return -1; | 136 | 84.6M | } | 137 | 84.6M | *sbit += sbpv; | 138 | 84.6M | *sptr += *sbit >> 3; | 139 | 84.6M | *sbit &= 7; | 140 | 84.6M | return 0; | 141 | 84.6M | } |
Unexecuted instantiation: gdevpng.c:sample_load_next16 Unexecuted instantiation: gsbitops.c:sample_load_next16 Unexecuted instantiation: gsovrc.c:sample_load_next16 Unexecuted instantiation: gxoprect.c:sample_load_next16 Unexecuted instantiation: gxccman.c:sample_load_next16 Unexecuted instantiation: gxht.c:sample_load_next16 Unexecuted instantiation: gxhtbit.c:sample_load_next16 Unexecuted instantiation: gxifast.c:sample_load_next16 Unexecuted instantiation: gximono.c:sample_load_next16 Unexecuted instantiation: gxiscale.c:sample_load_next16 Unexecuted instantiation: gdevabuf.c:sample_load_next16 Unexecuted instantiation: gdevdbit.c:sample_load_next16 Unexecuted instantiation: gdevdgbr.c:sample_load_next16 Unexecuted instantiation: gdevmem.c:sample_load_next16 Unexecuted instantiation: gdevplnx.c:sample_load_next16 Unexecuted instantiation: gdevm1.c:sample_load_next16 Unexecuted instantiation: gdevm2.c:sample_load_next16 Unexecuted instantiation: gdevm4.c:sample_load_next16 Unexecuted instantiation: gdevm8.c:sample_load_next16 Unexecuted instantiation: gdevm16.c:sample_load_next16 Unexecuted instantiation: gdevm24.c:sample_load_next16 Unexecuted instantiation: gdevm32.c:sample_load_next16 Unexecuted instantiation: gdevm40.c:sample_load_next16 Unexecuted instantiation: gdevm48.c:sample_load_next16 Unexecuted instantiation: gdevm56.c:sample_load_next16 Unexecuted instantiation: gdevm64.c:sample_load_next16 Unexecuted instantiation: gdevmx.c:sample_load_next16 Unexecuted instantiation: gdevdrop.c:sample_load_next16 Unexecuted instantiation: gdevmr1.c:sample_load_next16 Unexecuted instantiation: gdevmr2n.c:sample_load_next16 Unexecuted instantiation: gdevmr8n.c:sample_load_next16 Unexecuted instantiation: gxclbits.c:sample_load_next16 Unexecuted instantiation: gxclrast.c:sample_load_next16 Unexecuted instantiation: gsbitcom.c:sample_load_next16 |
142 | | static int inline sample_load_next32(uint32_t *value, const byte **sptr, int *sbit, int sbpv) |
143 | 0 | { |
144 | 0 | switch ( sbpv >> 2 ) { |
145 | 0 | case 0: |
146 | 0 | *value = (**sptr >> (8 - *sbit - sbpv)) & (sbpv | 1); |
147 | 0 | break; |
148 | 0 | case 1: |
149 | 0 | *value = (**sptr >> (4 - *sbit)) & 0xf; |
150 | 0 | break; |
151 | 0 | case 2: |
152 | 0 | *value = **sptr; |
153 | 0 | break; |
154 | 0 | case 3: |
155 | 0 | *value = (*sbit ? ((**sptr & 0xf) << 8) | (*sptr)[1] : |
156 | 0 | (**sptr << 4) | ((*sptr)[1] >> 4)); |
157 | 0 | break; |
158 | 0 | case 4: |
159 | 0 | *value = (**sptr << 8) | (*sptr)[1]; |
160 | 0 | break; |
161 | 0 | case 6: |
162 | 0 | *value = (**sptr << 16) | ((*sptr)[1] << 8) | (*sptr)[2]; |
163 | 0 | break; |
164 | 0 | case 8: |
165 | 0 | *value = (**sptr << 24) | ((*sptr)[1] << 16) | ((*sptr)[2] << 8) | (*sptr)[3]; |
166 | 0 | break; |
167 | 0 | default: |
168 | 0 | return -1; |
169 | 0 | } |
170 | 0 | *sbit += sbpv; |
171 | 0 | *sptr += *sbit >> 3; |
172 | 0 | *sbit &= 7; |
173 | 0 | return -1; |
174 | 0 | } Unexecuted instantiation: gximage3.c:sample_load_next32 Unexecuted instantiation: gximag3x.c:sample_load_next32 Unexecuted instantiation: gdevp14.c:sample_load_next32 Unexecuted instantiation: gdevprn.c:sample_load_next32 Unexecuted instantiation: gsflip.c:sample_load_next32 Unexecuted instantiation: gdevmpla.c:sample_load_next32 Unexecuted instantiation: gdevpng.c:sample_load_next32 Unexecuted instantiation: gsbitops.c:sample_load_next32 Unexecuted instantiation: gsovrc.c:sample_load_next32 Unexecuted instantiation: gxoprect.c:sample_load_next32 Unexecuted instantiation: gxccman.c:sample_load_next32 Unexecuted instantiation: gxht.c:sample_load_next32 Unexecuted instantiation: gxhtbit.c:sample_load_next32 Unexecuted instantiation: gxifast.c:sample_load_next32 Unexecuted instantiation: gximono.c:sample_load_next32 Unexecuted instantiation: gxiscale.c:sample_load_next32 Unexecuted instantiation: gdevabuf.c:sample_load_next32 Unexecuted instantiation: gdevdbit.c:sample_load_next32 Unexecuted instantiation: gdevdgbr.c:sample_load_next32 Unexecuted instantiation: gdevmem.c:sample_load_next32 Unexecuted instantiation: gdevplnx.c:sample_load_next32 Unexecuted instantiation: gdevm1.c:sample_load_next32 Unexecuted instantiation: gdevm2.c:sample_load_next32 Unexecuted instantiation: gdevm4.c:sample_load_next32 Unexecuted instantiation: gdevm8.c:sample_load_next32 Unexecuted instantiation: gdevm16.c:sample_load_next32 Unexecuted instantiation: gdevm24.c:sample_load_next32 Unexecuted instantiation: gdevm32.c:sample_load_next32 Unexecuted instantiation: gdevm40.c:sample_load_next32 Unexecuted instantiation: gdevm48.c:sample_load_next32 Unexecuted instantiation: gdevm56.c:sample_load_next32 Unexecuted instantiation: gdevm64.c:sample_load_next32 Unexecuted instantiation: gdevmx.c:sample_load_next32 Unexecuted instantiation: gdevdrop.c:sample_load_next32 Unexecuted instantiation: gdevmr1.c:sample_load_next32 Unexecuted instantiation: gdevmr2n.c:sample_load_next32 Unexecuted instantiation: gdevmr8n.c:sample_load_next32 Unexecuted instantiation: gxclbits.c:sample_load_next32 Unexecuted instantiation: gxclrast.c:sample_load_next32 Unexecuted instantiation: gsbitcom.c:sample_load_next32 |
175 | | static int inline sample_load_next64(uint64_t *value, const byte **sptr, int *sbit, int sbpv) |
176 | 16.4M | { |
177 | 16.4M | switch ( sbpv >> 2 ) { |
178 | 0 | case 0: |
179 | 0 | *value = (**sptr >> (8 - *sbit - sbpv)) & (sbpv | 1); |
180 | 0 | break; |
181 | 0 | case 1: |
182 | 0 | *value = (**sptr >> (4 - *sbit)) & 0xf; |
183 | 0 | break; |
184 | 16.4M | case 2: |
185 | 16.4M | *value = **sptr; |
186 | 16.4M | break; |
187 | 0 | case 3: |
188 | 0 | *value = (*sbit ? ((**sptr & 0xf) << 8) | (*sptr)[1] : |
189 | 0 | (**sptr << 4) | ((*sptr)[1] >> 4)); |
190 | 0 | break; |
191 | 0 | case 4: |
192 | 0 | *value = (**sptr << 8) | (*sptr)[1]; |
193 | 0 | break; |
194 | 0 | case 6: |
195 | 0 | *value = (**sptr << 16) | ((*sptr)[1] << 8) | (*sptr)[2]; |
196 | 0 | break; |
197 | 0 | case 8: |
198 | 0 | *value = ((uint64_t)(**sptr) << 24) | ((uint64_t)((*sptr)[1]) << 16) | (((uint64_t)(*sptr)[2]) << 8) | (uint64_t)((*sptr)[3]); |
199 | 0 | break; |
200 | 0 | case 10: |
201 | 0 | *value = ((uint64_t)((*sptr)[0]) << SAMPLE_BOUND_SHIFT((*value), 32)) | |
202 | 0 | ((uint64_t)((*sptr)[1]) << 24) | |
203 | 0 | ((uint64_t)((*sptr)[2]) << 16) | |
204 | 0 | ((uint64_t)((*sptr)[3]) << 8) | |
205 | 0 | (uint64_t)((*sptr)[4]); |
206 | 0 | break; |
207 | 0 | case 12: |
208 | 0 | *value = ((uint64_t)((*sptr)[0]) << SAMPLE_BOUND_SHIFT((*value), 40)) | |
209 | 0 | ((uint64_t)((*sptr)[1]) << SAMPLE_BOUND_SHIFT((*value), 32)) | |
210 | 0 | ((uint64_t)((*sptr)[2]) << 24) | |
211 | 0 | ((uint64_t)((*sptr)[3]) << 16) | |
212 | 0 | ((uint64_t)((*sptr)[4]) << 8) | |
213 | 0 | (uint64_t)((*sptr)[5]); |
214 | 0 | break; |
215 | 0 | case 14: |
216 | 0 | *value = ((uint64_t)((*sptr)[0]) << SAMPLE_BOUND_SHIFT((*value), 48)) | |
217 | 0 | ((uint64_t)((*sptr)[1]) << SAMPLE_BOUND_SHIFT((*value), 40)) | |
218 | 0 | ((uint64_t)((*sptr)[2]) << SAMPLE_BOUND_SHIFT((*value), 32)) | |
219 | 0 | ((uint64_t)((*sptr)[3]) << 24) | |
220 | 0 | ((uint64_t)((*sptr)[4]) << 16) | |
221 | 0 | ((uint64_t)((*sptr)[5]) << 8) | |
222 | 0 | (uint64_t)((*sptr)[6]); |
223 | 0 | break; |
224 | 0 | case 16: |
225 | 0 | *value = ((uint64_t)((*sptr)[0]) << SAMPLE_BOUND_SHIFT((*value), 56)) | |
226 | 0 | ((uint64_t)((*sptr)[1]) << SAMPLE_BOUND_SHIFT((*value), 48)) | |
227 | 0 | ((uint64_t)((*sptr)[2]) << SAMPLE_BOUND_SHIFT((*value), 40)) | |
228 | 0 | ((uint64_t)((*sptr)[3]) << SAMPLE_BOUND_SHIFT((*value), 32)) | |
229 | 0 | ((uint64_t)((*sptr)[4]) << 24) | |
230 | 0 | ((uint64_t)((*sptr)[5]) << 16) | |
231 | 0 | ((uint64_t)((*sptr)[6]) << 8) | |
232 | 0 | (uint64_t)((*sptr)[7]); |
233 | 0 | break; |
234 | 0 | default: |
235 | 0 | return -1; |
236 | 16.4M | } |
237 | 16.4M | *sbit += sbpv; |
238 | 16.4M | *sptr += *sbit >> 3; |
239 | 16.4M | *sbit &= 7; |
240 | 16.4M | return 0; |
241 | 16.4M | } Unexecuted instantiation: gximage3.c:sample_load_next64 Unexecuted instantiation: gximag3x.c:sample_load_next64 Unexecuted instantiation: gdevp14.c:sample_load_next64 Unexecuted instantiation: gdevprn.c:sample_load_next64 Unexecuted instantiation: gsflip.c:sample_load_next64 gdevmpla.c:sample_load_next64 Line | Count | Source | 176 | 16.4M | { | 177 | 16.4M | switch ( sbpv >> 2 ) { | 178 | 0 | case 0: | 179 | 0 | *value = (**sptr >> (8 - *sbit - sbpv)) & (sbpv | 1); | 180 | 0 | break; | 181 | 0 | case 1: | 182 | 0 | *value = (**sptr >> (4 - *sbit)) & 0xf; | 183 | 0 | break; | 184 | 16.4M | case 2: | 185 | 16.4M | *value = **sptr; | 186 | 16.4M | break; | 187 | 0 | case 3: | 188 | 0 | *value = (*sbit ? ((**sptr & 0xf) << 8) | (*sptr)[1] : | 189 | 0 | (**sptr << 4) | ((*sptr)[1] >> 4)); | 190 | 0 | break; | 191 | 0 | case 4: | 192 | 0 | *value = (**sptr << 8) | (*sptr)[1]; | 193 | 0 | break; | 194 | 0 | case 6: | 195 | 0 | *value = (**sptr << 16) | ((*sptr)[1] << 8) | (*sptr)[2]; | 196 | 0 | break; | 197 | 0 | case 8: | 198 | 0 | *value = ((uint64_t)(**sptr) << 24) | ((uint64_t)((*sptr)[1]) << 16) | (((uint64_t)(*sptr)[2]) << 8) | (uint64_t)((*sptr)[3]); | 199 | 0 | break; | 200 | 0 | case 10: | 201 | 0 | *value = ((uint64_t)((*sptr)[0]) << SAMPLE_BOUND_SHIFT((*value), 32)) | | 202 | 0 | ((uint64_t)((*sptr)[1]) << 24) | | 203 | 0 | ((uint64_t)((*sptr)[2]) << 16) | | 204 | 0 | ((uint64_t)((*sptr)[3]) << 8) | | 205 | 0 | (uint64_t)((*sptr)[4]); | 206 | 0 | break; | 207 | 0 | case 12: | 208 | 0 | *value = ((uint64_t)((*sptr)[0]) << SAMPLE_BOUND_SHIFT((*value), 40)) | | 209 | 0 | ((uint64_t)((*sptr)[1]) << SAMPLE_BOUND_SHIFT((*value), 32)) | | 210 | 0 | ((uint64_t)((*sptr)[2]) << 24) | | 211 | 0 | ((uint64_t)((*sptr)[3]) << 16) | | 212 | 0 | ((uint64_t)((*sptr)[4]) << 8) | | 213 | 0 | (uint64_t)((*sptr)[5]); | 214 | 0 | break; | 215 | 0 | case 14: | 216 | 0 | *value = ((uint64_t)((*sptr)[0]) << SAMPLE_BOUND_SHIFT((*value), 48)) | | 217 | 0 | ((uint64_t)((*sptr)[1]) << SAMPLE_BOUND_SHIFT((*value), 40)) | | 218 | 0 | ((uint64_t)((*sptr)[2]) << SAMPLE_BOUND_SHIFT((*value), 32)) | | 219 | 0 | ((uint64_t)((*sptr)[3]) << 24) | | 220 | 0 | ((uint64_t)((*sptr)[4]) << 16) | | 221 | 0 | ((uint64_t)((*sptr)[5]) << 8) | | 222 | 0 | (uint64_t)((*sptr)[6]); | 223 | 0 | break; | 224 | 0 | case 16: | 225 | 0 | *value = ((uint64_t)((*sptr)[0]) << SAMPLE_BOUND_SHIFT((*value), 56)) | | 226 | 0 | ((uint64_t)((*sptr)[1]) << SAMPLE_BOUND_SHIFT((*value), 48)) | | 227 | 0 | ((uint64_t)((*sptr)[2]) << SAMPLE_BOUND_SHIFT((*value), 40)) | | 228 | 0 | ((uint64_t)((*sptr)[3]) << SAMPLE_BOUND_SHIFT((*value), 32)) | | 229 | 0 | ((uint64_t)((*sptr)[4]) << 24) | | 230 | 0 | ((uint64_t)((*sptr)[5]) << 16) | | 231 | 0 | ((uint64_t)((*sptr)[6]) << 8) | | 232 | 0 | (uint64_t)((*sptr)[7]); | 233 | 0 | break; | 234 | 0 | default: | 235 | 0 | return -1; | 236 | 16.4M | } | 237 | 16.4M | *sbit += sbpv; | 238 | 16.4M | *sptr += *sbit >> 3; | 239 | 16.4M | *sbit &= 7; | 240 | 16.4M | return 0; | 241 | 16.4M | } |
Unexecuted instantiation: gdevpng.c:sample_load_next64 Unexecuted instantiation: gsbitops.c:sample_load_next64 Unexecuted instantiation: gsovrc.c:sample_load_next64 Unexecuted instantiation: gxoprect.c:sample_load_next64 Unexecuted instantiation: gxccman.c:sample_load_next64 Unexecuted instantiation: gxht.c:sample_load_next64 Unexecuted instantiation: gxhtbit.c:sample_load_next64 Unexecuted instantiation: gxifast.c:sample_load_next64 Unexecuted instantiation: gximono.c:sample_load_next64 Unexecuted instantiation: gxiscale.c:sample_load_next64 Unexecuted instantiation: gdevabuf.c:sample_load_next64 Unexecuted instantiation: gdevdbit.c:sample_load_next64 Unexecuted instantiation: gdevdgbr.c:sample_load_next64 Unexecuted instantiation: gdevmem.c:sample_load_next64 Unexecuted instantiation: gdevplnx.c:sample_load_next64 Unexecuted instantiation: gdevm1.c:sample_load_next64 Unexecuted instantiation: gdevm2.c:sample_load_next64 Unexecuted instantiation: gdevm4.c:sample_load_next64 Unexecuted instantiation: gdevm8.c:sample_load_next64 Unexecuted instantiation: gdevm16.c:sample_load_next64 Unexecuted instantiation: gdevm24.c:sample_load_next64 Unexecuted instantiation: gdevm32.c:sample_load_next64 Unexecuted instantiation: gdevm40.c:sample_load_next64 Unexecuted instantiation: gdevm48.c:sample_load_next64 Unexecuted instantiation: gdevm56.c:sample_load_next64 Unexecuted instantiation: gdevm64.c:sample_load_next64 Unexecuted instantiation: gdevmx.c:sample_load_next64 Unexecuted instantiation: gdevdrop.c:sample_load_next64 Unexecuted instantiation: gdevmr1.c:sample_load_next64 Unexecuted instantiation: gdevmr2n.c:sample_load_next64 Unexecuted instantiation: gdevmr8n.c:sample_load_next64 Unexecuted instantiation: gxclbits.c:sample_load_next64 Unexecuted instantiation: gxclrast.c:sample_load_next64 Unexecuted instantiation: gsbitcom.c:sample_load_next64 |
242 | | |
243 | | /* Store a value and increment the pointer. */ |
244 | | static int inline sample_store_next8(uint value, byte **dptr, int *dbit, int dbpv, byte *dbbyte) |
245 | 0 | { |
246 | 0 | switch (dbpv >> 2 ) { |
247 | 0 | case 0: |
248 | 0 | if ( (*dbit += dbpv) == 8 ) { |
249 | 0 | *(*dptr)++ = *dbbyte | (byte)value; |
250 | 0 | *dbbyte = 0; |
251 | 0 | *dbit = 0; |
252 | 0 | } |
253 | 0 | else |
254 | 0 | *dbbyte |= (byte)(value << (8 - *dbit)); |
255 | 0 | break; |
256 | 0 | case 1: |
257 | 0 | if ( *dbit ^= 4 ) |
258 | 0 | *dbbyte = (byte)(value << 4); |
259 | 0 | else |
260 | 0 | *(*dptr)++ = *dbbyte | ((byte)value); |
261 | 0 | break; |
262 | 0 | case 2: |
263 | 0 | *(*dptr)++ = (byte)value; |
264 | 0 | break; |
265 | 0 | default: |
266 | 0 | return -1; |
267 | 0 | } |
268 | 0 | return 0; |
269 | 0 | } Unexecuted instantiation: gximage3.c:sample_store_next8 Unexecuted instantiation: gximag3x.c:sample_store_next8 Unexecuted instantiation: gdevp14.c:sample_store_next8 Unexecuted instantiation: gdevprn.c:sample_store_next8 Unexecuted instantiation: gsflip.c:sample_store_next8 Unexecuted instantiation: gdevmpla.c:sample_store_next8 Unexecuted instantiation: gdevpng.c:sample_store_next8 Unexecuted instantiation: gsbitops.c:sample_store_next8 Unexecuted instantiation: gsovrc.c:sample_store_next8 Unexecuted instantiation: gxoprect.c:sample_store_next8 Unexecuted instantiation: gxccman.c:sample_store_next8 Unexecuted instantiation: gxht.c:sample_store_next8 Unexecuted instantiation: gxhtbit.c:sample_store_next8 Unexecuted instantiation: gxifast.c:sample_store_next8 Unexecuted instantiation: gximono.c:sample_store_next8 Unexecuted instantiation: gxiscale.c:sample_store_next8 Unexecuted instantiation: gdevabuf.c:sample_store_next8 Unexecuted instantiation: gdevdbit.c:sample_store_next8 Unexecuted instantiation: gdevdgbr.c:sample_store_next8 Unexecuted instantiation: gdevmem.c:sample_store_next8 Unexecuted instantiation: gdevplnx.c:sample_store_next8 Unexecuted instantiation: gdevm1.c:sample_store_next8 Unexecuted instantiation: gdevm2.c:sample_store_next8 Unexecuted instantiation: gdevm4.c:sample_store_next8 Unexecuted instantiation: gdevm8.c:sample_store_next8 Unexecuted instantiation: gdevm16.c:sample_store_next8 Unexecuted instantiation: gdevm24.c:sample_store_next8 Unexecuted instantiation: gdevm32.c:sample_store_next8 Unexecuted instantiation: gdevm40.c:sample_store_next8 Unexecuted instantiation: gdevm48.c:sample_store_next8 Unexecuted instantiation: gdevm56.c:sample_store_next8 Unexecuted instantiation: gdevm64.c:sample_store_next8 Unexecuted instantiation: gdevmx.c:sample_store_next8 Unexecuted instantiation: gdevdrop.c:sample_store_next8 Unexecuted instantiation: gdevmr1.c:sample_store_next8 Unexecuted instantiation: gdevmr2n.c:sample_store_next8 Unexecuted instantiation: gdevmr8n.c:sample_store_next8 Unexecuted instantiation: gxclbits.c:sample_store_next8 Unexecuted instantiation: gxclrast.c:sample_store_next8 Unexecuted instantiation: gsbitcom.c:sample_store_next8 |
270 | | |
271 | | static void inline sample_store_next_12 (uint value, byte **dptr, int *dbit, byte *dbbyte) |
272 | 0 | { |
273 | 0 | if ( *dbit ^= 4 ) |
274 | 0 | *(*dptr)++ = (byte)(value >> 4), *dbbyte = (byte)(value << 4); |
275 | 0 | else |
276 | 0 | *(*dptr) = *dbbyte | (byte)(value >> 8), (*dptr)[1] = (byte)(value), *dptr += 2; |
277 | 0 | } Unexecuted instantiation: gximage3.c:sample_store_next_12 Unexecuted instantiation: gximag3x.c:sample_store_next_12 Unexecuted instantiation: gdevp14.c:sample_store_next_12 Unexecuted instantiation: gdevprn.c:sample_store_next_12 Unexecuted instantiation: gsflip.c:sample_store_next_12 Unexecuted instantiation: gdevmpla.c:sample_store_next_12 Unexecuted instantiation: gdevpng.c:sample_store_next_12 Unexecuted instantiation: gsbitops.c:sample_store_next_12 Unexecuted instantiation: gsovrc.c:sample_store_next_12 Unexecuted instantiation: gxoprect.c:sample_store_next_12 Unexecuted instantiation: gxccman.c:sample_store_next_12 Unexecuted instantiation: gxht.c:sample_store_next_12 Unexecuted instantiation: gxhtbit.c:sample_store_next_12 Unexecuted instantiation: gxifast.c:sample_store_next_12 Unexecuted instantiation: gximono.c:sample_store_next_12 Unexecuted instantiation: gxiscale.c:sample_store_next_12 Unexecuted instantiation: gdevabuf.c:sample_store_next_12 Unexecuted instantiation: gdevdbit.c:sample_store_next_12 Unexecuted instantiation: gdevdgbr.c:sample_store_next_12 Unexecuted instantiation: gdevmem.c:sample_store_next_12 Unexecuted instantiation: gdevplnx.c:sample_store_next_12 Unexecuted instantiation: gdevm1.c:sample_store_next_12 Unexecuted instantiation: gdevm2.c:sample_store_next_12 Unexecuted instantiation: gdevm4.c:sample_store_next_12 Unexecuted instantiation: gdevm8.c:sample_store_next_12 Unexecuted instantiation: gdevm16.c:sample_store_next_12 Unexecuted instantiation: gdevm24.c:sample_store_next_12 Unexecuted instantiation: gdevm32.c:sample_store_next_12 Unexecuted instantiation: gdevm40.c:sample_store_next_12 Unexecuted instantiation: gdevm48.c:sample_store_next_12 Unexecuted instantiation: gdevm56.c:sample_store_next_12 Unexecuted instantiation: gdevm64.c:sample_store_next_12 Unexecuted instantiation: gdevmx.c:sample_store_next_12 Unexecuted instantiation: gdevdrop.c:sample_store_next_12 Unexecuted instantiation: gdevmr1.c:sample_store_next_12 Unexecuted instantiation: gdevmr2n.c:sample_store_next_12 Unexecuted instantiation: gdevmr8n.c:sample_store_next_12 Unexecuted instantiation: gxclbits.c:sample_store_next_12 Unexecuted instantiation: gxclrast.c:sample_store_next_12 Unexecuted instantiation: gsbitcom.c:sample_store_next_12 |
278 | | static int inline sample_store_next12(uint value, byte **dptr, int *dbit, int dbpv, byte *dbbyte) |
279 | 0 | { |
280 | 0 | switch (dbpv >> 2 ) { |
281 | 0 | case 0: |
282 | 0 | if ((*dbit += dbpv) == 8 ) |
283 | 0 | *(*dptr)++ = *dbbyte | (byte)value, *dbbyte = 0, *dbit = 0; |
284 | 0 | else |
285 | 0 | *dbbyte |= (byte)(value << (8 - *dbit)); |
286 | 0 | break; |
287 | 0 | case 1: |
288 | 0 | if ( *dbit ^= 4 ) |
289 | 0 | *dbbyte = (byte)(value << 4); |
290 | 0 | else |
291 | 0 | *(*dptr)++ = *dbbyte | ((byte)value); |
292 | 0 | break; |
293 | 0 | case 3: |
294 | 0 | if ( *dbit ^= 4 ) |
295 | 0 | *(*dptr)++ = (byte)(value >> 4), *dbbyte = (byte)(value << 4); |
296 | 0 | else |
297 | 0 | *(*dptr) = *dbbyte | (byte)(value >> 8), (*dptr)[1] = (byte)value, *dptr += 2; |
298 | 0 | break; |
299 | 0 | case 2: |
300 | 0 | *(*dptr)++ = (byte)value; |
301 | 0 | break; |
302 | 0 | default: |
303 | 0 | return -1; |
304 | 0 | } |
305 | 0 | return 0; |
306 | 0 | } Unexecuted instantiation: gximage3.c:sample_store_next12 Unexecuted instantiation: gximag3x.c:sample_store_next12 Unexecuted instantiation: gdevp14.c:sample_store_next12 Unexecuted instantiation: gdevprn.c:sample_store_next12 Unexecuted instantiation: gsflip.c:sample_store_next12 Unexecuted instantiation: gdevmpla.c:sample_store_next12 Unexecuted instantiation: gdevpng.c:sample_store_next12 Unexecuted instantiation: gsbitops.c:sample_store_next12 Unexecuted instantiation: gsovrc.c:sample_store_next12 Unexecuted instantiation: gxoprect.c:sample_store_next12 Unexecuted instantiation: gxccman.c:sample_store_next12 Unexecuted instantiation: gxht.c:sample_store_next12 Unexecuted instantiation: gxhtbit.c:sample_store_next12 Unexecuted instantiation: gxifast.c:sample_store_next12 Unexecuted instantiation: gximono.c:sample_store_next12 Unexecuted instantiation: gxiscale.c:sample_store_next12 Unexecuted instantiation: gdevabuf.c:sample_store_next12 Unexecuted instantiation: gdevdbit.c:sample_store_next12 Unexecuted instantiation: gdevdgbr.c:sample_store_next12 Unexecuted instantiation: gdevmem.c:sample_store_next12 Unexecuted instantiation: gdevplnx.c:sample_store_next12 Unexecuted instantiation: gdevm1.c:sample_store_next12 Unexecuted instantiation: gdevm2.c:sample_store_next12 Unexecuted instantiation: gdevm4.c:sample_store_next12 Unexecuted instantiation: gdevm8.c:sample_store_next12 Unexecuted instantiation: gdevm16.c:sample_store_next12 Unexecuted instantiation: gdevm24.c:sample_store_next12 Unexecuted instantiation: gdevm32.c:sample_store_next12 Unexecuted instantiation: gdevm40.c:sample_store_next12 Unexecuted instantiation: gdevm48.c:sample_store_next12 Unexecuted instantiation: gdevm56.c:sample_store_next12 Unexecuted instantiation: gdevm64.c:sample_store_next12 Unexecuted instantiation: gdevmx.c:sample_store_next12 Unexecuted instantiation: gdevdrop.c:sample_store_next12 Unexecuted instantiation: gdevmr1.c:sample_store_next12 Unexecuted instantiation: gdevmr2n.c:sample_store_next12 Unexecuted instantiation: gdevmr8n.c:sample_store_next12 Unexecuted instantiation: gxclbits.c:sample_store_next12 Unexecuted instantiation: gxclrast.c:sample_store_next12 Unexecuted instantiation: gsbitcom.c:sample_store_next12 |
307 | | |
308 | | static int inline sample_store_next16(uint value, byte **dptr, int *dbit, int dbpv, byte *dbbyte) |
309 | 16.4M | { |
310 | 16.4M | switch (dbpv >> 2 ) { |
311 | 16.4M | case 0: |
312 | 16.4M | if ( (*dbit += dbpv) == 8 ) |
313 | 1.71M | *(*dptr)++ = *dbbyte | (byte)value, *dbbyte = 0, *dbit = 0; |
314 | 14.7M | else |
315 | 14.7M | *dbbyte |= (byte)(value << (8 - *dbit)); |
316 | 16.4M | break; |
317 | 0 | case 1: |
318 | 0 | if ( *dbit ^= 4 ) |
319 | 0 | *dbbyte = (byte)(value << 4); |
320 | 0 | else |
321 | 0 | *(*dptr)++ = *dbbyte | ((byte)value); |
322 | 0 | break; |
323 | 0 | case 3: |
324 | 0 | if ( *dbit ^= 4 ) |
325 | 0 | *(*dptr)++ = (byte)(value >> 4), *dbbyte = (byte)(value << 4); |
326 | 0 | else |
327 | 0 | *(*dptr) = *dbbyte | (byte)(value >> 8), (*dptr)[1] = (byte)value, *dptr += 2; |
328 | 0 | break; |
329 | 0 | case 4: |
330 | 0 | *(*dptr)++ = (byte)(value >> 8); |
331 | | /* fall through */ |
332 | 0 | case 2: |
333 | 0 | *(*dptr)++ = (byte)value; |
334 | 0 | break; |
335 | 0 | default: |
336 | 0 | return -1; |
337 | 16.4M | } |
338 | 16.4M | return 0; |
339 | 16.4M | } Unexecuted instantiation: gximage3.c:sample_store_next16 Unexecuted instantiation: gximag3x.c:sample_store_next16 Unexecuted instantiation: gdevp14.c:sample_store_next16 Unexecuted instantiation: gdevprn.c:sample_store_next16 Unexecuted instantiation: gsflip.c:sample_store_next16 gdevmpla.c:sample_store_next16 Line | Count | Source | 309 | 16.4M | { | 310 | 16.4M | switch (dbpv >> 2 ) { | 311 | 16.4M | case 0: | 312 | 16.4M | if ( (*dbit += dbpv) == 8 ) | 313 | 1.71M | *(*dptr)++ = *dbbyte | (byte)value, *dbbyte = 0, *dbit = 0; | 314 | 14.7M | else | 315 | 14.7M | *dbbyte |= (byte)(value << (8 - *dbit)); | 316 | 16.4M | break; | 317 | 0 | case 1: | 318 | 0 | if ( *dbit ^= 4 ) | 319 | 0 | *dbbyte = (byte)(value << 4); | 320 | 0 | else | 321 | 0 | *(*dptr)++ = *dbbyte | ((byte)value); | 322 | 0 | break; | 323 | 0 | case 3: | 324 | 0 | if ( *dbit ^= 4 ) | 325 | 0 | *(*dptr)++ = (byte)(value >> 4), *dbbyte = (byte)(value << 4); | 326 | 0 | else | 327 | 0 | *(*dptr) = *dbbyte | (byte)(value >> 8), (*dptr)[1] = (byte)value, *dptr += 2; | 328 | 0 | break; | 329 | 0 | case 4: | 330 | 0 | *(*dptr)++ = (byte)(value >> 8); | 331 | | /* fall through */ | 332 | 0 | case 2: | 333 | 0 | *(*dptr)++ = (byte)value; | 334 | 0 | break; | 335 | 0 | default: | 336 | 0 | return -1; | 337 | 16.4M | } | 338 | 16.4M | return 0; | 339 | 16.4M | } |
Unexecuted instantiation: gdevpng.c:sample_store_next16 Unexecuted instantiation: gsbitops.c:sample_store_next16 Unexecuted instantiation: gsovrc.c:sample_store_next16 Unexecuted instantiation: gxoprect.c:sample_store_next16 Unexecuted instantiation: gxccman.c:sample_store_next16 Unexecuted instantiation: gxht.c:sample_store_next16 Unexecuted instantiation: gxhtbit.c:sample_store_next16 Unexecuted instantiation: gxifast.c:sample_store_next16 Unexecuted instantiation: gximono.c:sample_store_next16 Unexecuted instantiation: gxiscale.c:sample_store_next16 Unexecuted instantiation: gdevabuf.c:sample_store_next16 Unexecuted instantiation: gdevdbit.c:sample_store_next16 Unexecuted instantiation: gdevdgbr.c:sample_store_next16 Unexecuted instantiation: gdevmem.c:sample_store_next16 Unexecuted instantiation: gdevplnx.c:sample_store_next16 Unexecuted instantiation: gdevm1.c:sample_store_next16 Unexecuted instantiation: gdevm2.c:sample_store_next16 Unexecuted instantiation: gdevm4.c:sample_store_next16 Unexecuted instantiation: gdevm8.c:sample_store_next16 Unexecuted instantiation: gdevm16.c:sample_store_next16 Unexecuted instantiation: gdevm24.c:sample_store_next16 Unexecuted instantiation: gdevm32.c:sample_store_next16 Unexecuted instantiation: gdevm40.c:sample_store_next16 Unexecuted instantiation: gdevm48.c:sample_store_next16 Unexecuted instantiation: gdevm56.c:sample_store_next16 Unexecuted instantiation: gdevm64.c:sample_store_next16 Unexecuted instantiation: gdevmx.c:sample_store_next16 Unexecuted instantiation: gdevdrop.c:sample_store_next16 Unexecuted instantiation: gdevmr1.c:sample_store_next16 Unexecuted instantiation: gdevmr2n.c:sample_store_next16 Unexecuted instantiation: gdevmr8n.c:sample_store_next16 Unexecuted instantiation: gxclbits.c:sample_store_next16 Unexecuted instantiation: gxclrast.c:sample_store_next16 Unexecuted instantiation: gsbitcom.c:sample_store_next16 |
340 | | |
341 | | static int inline sample_store_next32(uint32_t value, byte **dptr, int *dbit, int dbpv, byte *dbbyte) |
342 | 0 | { |
343 | 0 | switch (dbpv >> 2 ) { |
344 | 0 | case 0:\ |
345 | 0 | if ( (*dbit += dbpv) == 8 ) |
346 | 0 | *(*dptr)++ = *dbbyte | (byte)value, *dbbyte = 0, *dbit = 0;\ |
347 | 0 | else |
348 | 0 | *dbbyte |= (byte)(value << (8 - *dbit)); |
349 | 0 | break; |
350 | 0 | case 1: |
351 | 0 | if ( *dbit ^= 4 ) |
352 | 0 | *dbbyte = (byte)(value << 4); |
353 | 0 | else |
354 | 0 | *(*dptr)++ = *dbbyte | ((byte)value); |
355 | 0 | break; |
356 | 0 | case 3: |
357 | 0 | if ( *dbit ^= 4 ) |
358 | 0 | *(*dptr)++ = (byte)(value >> 4), *dbbyte = (byte)(value << 4); |
359 | 0 | else |
360 | 0 | *(*dptr) = *dbbyte | (byte)(value >> 8), (*dptr)[1] = (byte)value, *dptr += 2; |
361 | 0 | break; |
362 | 0 | case 8: *(*dptr)++ = (byte)(value >> 24); |
363 | 0 | /* fall through */ |
364 | 0 | case 6: *(*dptr)++ = (byte)(value >> 16); |
365 | 0 | /* fall through */ |
366 | 0 | case 4: *(*dptr)++ = (byte)(value >> 8); |
367 | 0 | /* fall through */ |
368 | 0 | case 2: *(*dptr)++ = (byte)(value); |
369 | 0 | break; |
370 | 0 | default: |
371 | 0 | return -1; |
372 | 0 | } |
373 | 0 | return 0; |
374 | 0 | } Unexecuted instantiation: gximage3.c:sample_store_next32 Unexecuted instantiation: gximag3x.c:sample_store_next32 Unexecuted instantiation: gdevp14.c:sample_store_next32 Unexecuted instantiation: gdevprn.c:sample_store_next32 Unexecuted instantiation: gsflip.c:sample_store_next32 Unexecuted instantiation: gdevmpla.c:sample_store_next32 Unexecuted instantiation: gdevpng.c:sample_store_next32 Unexecuted instantiation: gsbitops.c:sample_store_next32 Unexecuted instantiation: gsovrc.c:sample_store_next32 Unexecuted instantiation: gxoprect.c:sample_store_next32 Unexecuted instantiation: gxccman.c:sample_store_next32 Unexecuted instantiation: gxht.c:sample_store_next32 Unexecuted instantiation: gxhtbit.c:sample_store_next32 Unexecuted instantiation: gxifast.c:sample_store_next32 Unexecuted instantiation: gximono.c:sample_store_next32 Unexecuted instantiation: gxiscale.c:sample_store_next32 Unexecuted instantiation: gdevabuf.c:sample_store_next32 Unexecuted instantiation: gdevdbit.c:sample_store_next32 Unexecuted instantiation: gdevdgbr.c:sample_store_next32 Unexecuted instantiation: gdevmem.c:sample_store_next32 Unexecuted instantiation: gdevplnx.c:sample_store_next32 Unexecuted instantiation: gdevm1.c:sample_store_next32 Unexecuted instantiation: gdevm2.c:sample_store_next32 Unexecuted instantiation: gdevm4.c:sample_store_next32 Unexecuted instantiation: gdevm8.c:sample_store_next32 Unexecuted instantiation: gdevm16.c:sample_store_next32 Unexecuted instantiation: gdevm24.c:sample_store_next32 Unexecuted instantiation: gdevm32.c:sample_store_next32 Unexecuted instantiation: gdevm40.c:sample_store_next32 Unexecuted instantiation: gdevm48.c:sample_store_next32 Unexecuted instantiation: gdevm56.c:sample_store_next32 Unexecuted instantiation: gdevm64.c:sample_store_next32 Unexecuted instantiation: gdevmx.c:sample_store_next32 Unexecuted instantiation: gdevdrop.c:sample_store_next32 Unexecuted instantiation: gdevmr1.c:sample_store_next32 Unexecuted instantiation: gdevmr2n.c:sample_store_next32 Unexecuted instantiation: gdevmr8n.c:sample_store_next32 Unexecuted instantiation: gxclbits.c:sample_store_next32 Unexecuted instantiation: gxclrast.c:sample_store_next32 Unexecuted instantiation: gsbitcom.c:sample_store_next32 |
375 | | |
376 | | static int inline sample_store_next64(uint64_t value, byte **dptr, int *dbit, int dbpv, byte *dbbyte) |
377 | 21.1M | { |
378 | 21.1M | switch (dbpv >> 2 ) { |
379 | 0 | case 0: |
380 | 0 | if ( (*dbit += dbpv) == 8 ) |
381 | 0 | *(*dptr)++ = *dbbyte | (byte)value, *dbbyte = 0, *dbit = 0; |
382 | 0 | else *dbbyte |= (byte)(value << (8 - *dbit)); |
383 | 0 | break; |
384 | 21.1M | case 1: |
385 | 21.1M | if ( *dbit ^= 4 ) *dbbyte = (byte)(value << 4); |
386 | 10.3M | else *(*dptr)++ = *dbbyte | ((byte)value); |
387 | 21.1M | break; |
388 | 0 | case 3: |
389 | 0 | if ( *dbit ^= 4 ) *(*dptr)++ = (byte)(value >> 4), *dbbyte = (byte)(value << 4); |
390 | 0 | else |
391 | 0 | *(*dptr) = *dbbyte | (byte)(value >> 8), (*dptr)[1] = (byte)value, *dptr += 2; |
392 | 0 | break; |
393 | 0 | case 16: *(*dptr)++ = (byte)(value >> SAMPLE_BOUND_SHIFT(value, 56)); |
394 | 0 | case 14: *(*dptr)++ = (byte)(value >> SAMPLE_BOUND_SHIFT(value, 48)); |
395 | 0 | case 12: *(*dptr)++ = (byte)(value >> SAMPLE_BOUND_SHIFT(value, 40)); |
396 | 0 | case 10: *(*dptr)++ = (byte)(value >> SAMPLE_BOUND_SHIFT(value, 32)); |
397 | 0 | case 8: *(*dptr)++ = (byte)(value >> 24); |
398 | 0 | case 6: *(*dptr)++ = (byte)(value >> 16); |
399 | 0 | case 4: *(*dptr)++ = (byte)(value >> 8); |
400 | 0 | case 2: *(*dptr)++ = (byte)(value); |
401 | 0 | break; |
402 | 0 | default: |
403 | 0 | return -1; |
404 | 21.1M | } |
405 | 21.1M | return 0; |
406 | 21.1M | } Unexecuted instantiation: gximage3.c:sample_store_next64 Unexecuted instantiation: gximag3x.c:sample_store_next64 Unexecuted instantiation: gdevp14.c:sample_store_next64 Unexecuted instantiation: gdevprn.c:sample_store_next64 Unexecuted instantiation: gsflip.c:sample_store_next64 gdevmpla.c:sample_store_next64 Line | Count | Source | 377 | 21.1M | { | 378 | 21.1M | switch (dbpv >> 2 ) { | 379 | 0 | case 0: | 380 | 0 | if ( (*dbit += dbpv) == 8 ) | 381 | 0 | *(*dptr)++ = *dbbyte | (byte)value, *dbbyte = 0, *dbit = 0; | 382 | 0 | else *dbbyte |= (byte)(value << (8 - *dbit)); | 383 | 0 | break; | 384 | 21.1M | case 1: | 385 | 21.1M | if ( *dbit ^= 4 ) *dbbyte = (byte)(value << 4); | 386 | 10.3M | else *(*dptr)++ = *dbbyte | ((byte)value); | 387 | 21.1M | break; | 388 | 0 | case 3: | 389 | 0 | if ( *dbit ^= 4 ) *(*dptr)++ = (byte)(value >> 4), *dbbyte = (byte)(value << 4); | 390 | 0 | else | 391 | 0 | *(*dptr) = *dbbyte | (byte)(value >> 8), (*dptr)[1] = (byte)value, *dptr += 2; | 392 | 0 | break; | 393 | 0 | case 16: *(*dptr)++ = (byte)(value >> SAMPLE_BOUND_SHIFT(value, 56)); | 394 | 0 | case 14: *(*dptr)++ = (byte)(value >> SAMPLE_BOUND_SHIFT(value, 48)); | 395 | 0 | case 12: *(*dptr)++ = (byte)(value >> SAMPLE_BOUND_SHIFT(value, 40)); | 396 | 0 | case 10: *(*dptr)++ = (byte)(value >> SAMPLE_BOUND_SHIFT(value, 32)); | 397 | 0 | case 8: *(*dptr)++ = (byte)(value >> 24); | 398 | 0 | case 6: *(*dptr)++ = (byte)(value >> 16); | 399 | 0 | case 4: *(*dptr)++ = (byte)(value >> 8); | 400 | 0 | case 2: *(*dptr)++ = (byte)(value); | 401 | 0 | break; | 402 | 0 | default: | 403 | 0 | return -1; | 404 | 21.1M | } | 405 | 21.1M | return 0; | 406 | 21.1M | } |
Unexecuted instantiation: gdevpng.c:sample_store_next64 Unexecuted instantiation: gsbitops.c:sample_store_next64 Unexecuted instantiation: gsovrc.c:sample_store_next64 Unexecuted instantiation: gxoprect.c:sample_store_next64 Unexecuted instantiation: gxccman.c:sample_store_next64 Unexecuted instantiation: gxht.c:sample_store_next64 Unexecuted instantiation: gxhtbit.c:sample_store_next64 Unexecuted instantiation: gxifast.c:sample_store_next64 Unexecuted instantiation: gximono.c:sample_store_next64 Unexecuted instantiation: gxiscale.c:sample_store_next64 Unexecuted instantiation: gdevabuf.c:sample_store_next64 Unexecuted instantiation: gdevdbit.c:sample_store_next64 Unexecuted instantiation: gdevdgbr.c:sample_store_next64 Unexecuted instantiation: gdevmem.c:sample_store_next64 Unexecuted instantiation: gdevplnx.c:sample_store_next64 Unexecuted instantiation: gdevm1.c:sample_store_next64 Unexecuted instantiation: gdevm2.c:sample_store_next64 Unexecuted instantiation: gdevm4.c:sample_store_next64 Unexecuted instantiation: gdevm8.c:sample_store_next64 Unexecuted instantiation: gdevm16.c:sample_store_next64 Unexecuted instantiation: gdevm24.c:sample_store_next64 Unexecuted instantiation: gdevm32.c:sample_store_next64 Unexecuted instantiation: gdevm40.c:sample_store_next64 Unexecuted instantiation: gdevm48.c:sample_store_next64 Unexecuted instantiation: gdevm56.c:sample_store_next64 Unexecuted instantiation: gdevm64.c:sample_store_next64 Unexecuted instantiation: gdevmx.c:sample_store_next64 Unexecuted instantiation: gdevdrop.c:sample_store_next64 Unexecuted instantiation: gdevmr1.c:sample_store_next64 Unexecuted instantiation: gdevmr2n.c:sample_store_next64 Unexecuted instantiation: gdevmr8n.c:sample_store_next64 Unexecuted instantiation: gxclbits.c:sample_store_next64 Unexecuted instantiation: gxclrast.c:sample_store_next64 Unexecuted instantiation: gsbitcom.c:sample_store_next64 |
407 | | |
408 | | static void inline sample_store_flush(byte *dptr, int dbit, byte dbbyte) |
409 | 1.30M | { |
410 | 1.30M | if (dbit != 0 )\ |
411 | 1.13M | *dptr = dbbyte | (*dptr & (0xff >> dbit)); |
412 | 1.30M | } Unexecuted instantiation: gximage3.c:sample_store_flush Unexecuted instantiation: gximag3x.c:sample_store_flush Unexecuted instantiation: gdevp14.c:sample_store_flush Unexecuted instantiation: gdevprn.c:sample_store_flush Unexecuted instantiation: gsflip.c:sample_store_flush gdevmpla.c:sample_store_flush Line | Count | Source | 409 | 1.30M | { | 410 | 1.30M | if (dbit != 0 )\ | 411 | 1.13M | *dptr = dbbyte | (*dptr & (0xff >> dbit)); | 412 | 1.30M | } |
Unexecuted instantiation: gdevpng.c:sample_store_flush Unexecuted instantiation: gsbitops.c:sample_store_flush Unexecuted instantiation: gsovrc.c:sample_store_flush Unexecuted instantiation: gxoprect.c:sample_store_flush Unexecuted instantiation: gxccman.c:sample_store_flush Unexecuted instantiation: gxht.c:sample_store_flush Unexecuted instantiation: gxhtbit.c:sample_store_flush Unexecuted instantiation: gxifast.c:sample_store_flush Unexecuted instantiation: gximono.c:sample_store_flush Unexecuted instantiation: gxiscale.c:sample_store_flush Unexecuted instantiation: gdevabuf.c:sample_store_flush Unexecuted instantiation: gdevdbit.c:sample_store_flush Unexecuted instantiation: gdevdgbr.c:sample_store_flush Unexecuted instantiation: gdevmem.c:sample_store_flush Unexecuted instantiation: gdevplnx.c:sample_store_flush Unexecuted instantiation: gdevm1.c:sample_store_flush Unexecuted instantiation: gdevm2.c:sample_store_flush Unexecuted instantiation: gdevm4.c:sample_store_flush Unexecuted instantiation: gdevm8.c:sample_store_flush Unexecuted instantiation: gdevm16.c:sample_store_flush Unexecuted instantiation: gdevm24.c:sample_store_flush Unexecuted instantiation: gdevm32.c:sample_store_flush Unexecuted instantiation: gdevm40.c:sample_store_flush Unexecuted instantiation: gdevm48.c:sample_store_flush Unexecuted instantiation: gdevm56.c:sample_store_flush Unexecuted instantiation: gdevm64.c:sample_store_flush Unexecuted instantiation: gdevmx.c:sample_store_flush Unexecuted instantiation: gdevdrop.c:sample_store_flush Unexecuted instantiation: gdevmr1.c:sample_store_flush Unexecuted instantiation: gdevmr2n.c:sample_store_flush Unexecuted instantiation: gdevmr8n.c:sample_store_flush Unexecuted instantiation: gxclbits.c:sample_store_flush Unexecuted instantiation: gxclrast.c:sample_store_flush Unexecuted instantiation: gsbitcom.c:sample_store_flush |
413 | | |
414 | | static void inline sample_store_skip_next(byte **dptr, int *dbit, int dbpv, byte *dbbyte) |
415 | 0 | { |
416 | 0 | if ( dbpv < 8 ) { |
417 | 0 | sample_store_flush(*dptr, *dbit, *dbbyte); |
418 | 0 | *dbit += dbpv; |
419 | 0 | *dptr += (*dbit) >> 3; |
420 | 0 | *dbit &= 7; |
421 | 0 | *dbbyte &= ~(0xff << (*dbit)); |
422 | 0 | } else |
423 | 0 | *dptr += (dbpv >> 3); |
424 | 0 | } Unexecuted instantiation: gximage3.c:sample_store_skip_next Unexecuted instantiation: gximag3x.c:sample_store_skip_next Unexecuted instantiation: gdevp14.c:sample_store_skip_next Unexecuted instantiation: gdevprn.c:sample_store_skip_next Unexecuted instantiation: gsflip.c:sample_store_skip_next Unexecuted instantiation: gdevmpla.c:sample_store_skip_next Unexecuted instantiation: gdevpng.c:sample_store_skip_next Unexecuted instantiation: gsbitops.c:sample_store_skip_next Unexecuted instantiation: gsovrc.c:sample_store_skip_next Unexecuted instantiation: gxoprect.c:sample_store_skip_next Unexecuted instantiation: gxccman.c:sample_store_skip_next Unexecuted instantiation: gxht.c:sample_store_skip_next Unexecuted instantiation: gxhtbit.c:sample_store_skip_next Unexecuted instantiation: gxifast.c:sample_store_skip_next Unexecuted instantiation: gximono.c:sample_store_skip_next Unexecuted instantiation: gxiscale.c:sample_store_skip_next Unexecuted instantiation: gdevabuf.c:sample_store_skip_next Unexecuted instantiation: gdevdbit.c:sample_store_skip_next Unexecuted instantiation: gdevdgbr.c:sample_store_skip_next Unexecuted instantiation: gdevmem.c:sample_store_skip_next Unexecuted instantiation: gdevplnx.c:sample_store_skip_next Unexecuted instantiation: gdevm1.c:sample_store_skip_next Unexecuted instantiation: gdevm2.c:sample_store_skip_next Unexecuted instantiation: gdevm4.c:sample_store_skip_next Unexecuted instantiation: gdevm8.c:sample_store_skip_next Unexecuted instantiation: gdevm16.c:sample_store_skip_next Unexecuted instantiation: gdevm24.c:sample_store_skip_next Unexecuted instantiation: gdevm32.c:sample_store_skip_next Unexecuted instantiation: gdevm40.c:sample_store_skip_next Unexecuted instantiation: gdevm48.c:sample_store_skip_next Unexecuted instantiation: gdevm56.c:sample_store_skip_next Unexecuted instantiation: gdevm64.c:sample_store_skip_next Unexecuted instantiation: gdevmx.c:sample_store_skip_next Unexecuted instantiation: gdevdrop.c:sample_store_skip_next Unexecuted instantiation: gdevmr1.c:sample_store_skip_next Unexecuted instantiation: gdevmr2n.c:sample_store_skip_next Unexecuted instantiation: gdevmr8n.c:sample_store_skip_next Unexecuted instantiation: gxclbits.c:sample_store_skip_next Unexecuted instantiation: gxclrast.c:sample_store_skip_next Unexecuted instantiation: gsbitcom.c:sample_store_skip_next |
425 | | |
426 | | /* ---------------- Definitions ---------------- */ |
427 | | |
428 | | /* |
429 | | * Define the chunk size for monobit filling operations. |
430 | | * This is always uint, regardless of byte order. |
431 | | */ |
432 | 644M | #define mono_fill_chunk uint |
433 | | #define mono_fill_chunk_bytes ARCH_SIZEOF_INT |
434 | | |
435 | | /* ---------------- Procedures ---------------- */ |
436 | | |
437 | | /* Fill a rectangle of bits with an 8x1 pattern. */ |
438 | | /* The pattern argument must consist of the pattern in every byte, */ |
439 | | /* e.g., if the desired pattern is 0xaa, the pattern argument must */ |
440 | | /* have the value 0xaaaa (if ints are short) or 0xaaaaaaaa. */ |
441 | | #if mono_fill_chunk_bytes == 2 |
442 | | # define mono_fill_make_pattern(byt) (uint)((uint)(byt) * 0x0101) |
443 | | #else |
444 | 0 | # define mono_fill_make_pattern(byt) (uint)((uint)(byt) * 0x01010101) |
445 | | #endif |
446 | | void bits_fill_rectangle(byte * dest, int dest_bit, uint raster, |
447 | | mono_fill_chunk pattern, int width_bits, int height); |
448 | | void bits_fill_rectangle_masked(byte * dest, int dest_bit, uint raster, |
449 | | mono_fill_chunk pattern, mono_fill_chunk src_mask, |
450 | | int width_bits, int height); |
451 | | |
452 | | /* Replicate a bitmap horizontally in place. */ |
453 | | void bits_replicate_horizontally(byte * data, uint width, uint height, |
454 | | uint raster, uint replicated_width, uint replicated_raster); |
455 | | |
456 | | /* Replicate a bitmap vertically in place. */ |
457 | | void bits_replicate_vertically(byte * data, uint height, uint raster, |
458 | | uint replicated_height); |
459 | | |
460 | | /* Find the bounding box of a bitmap. */ |
461 | | void bits_bounding_box(const byte * data, uint height, uint raster, |
462 | | gs_int_rect * pbox); |
463 | | |
464 | | /* Compress an oversampled image, possibly in place. */ |
465 | | /* The width and height must be multiples of the respective scale factors. */ |
466 | | /* The source must be an aligned bitmap, as usual. */ |
467 | | void bits_compress_scaled(const byte * src, int srcx, uint width, |
468 | | uint height, uint sraster, byte * dest, uint draster, |
469 | | const gs_log2_scale_point * plog2_scale, int log2_out_bits); |
470 | | |
471 | | /* Extract a plane from a pixmap. */ |
472 | | typedef struct bits_plane_s { |
473 | | union bpd_ { /* Bit planes must be aligned. */ |
474 | | byte *write; |
475 | | const byte *read; |
476 | | } data; |
477 | | int raster; |
478 | | int depth; |
479 | | int x; /* starting x */ |
480 | | } bits_plane_t; |
481 | | int bits_extract_plane(const bits_plane_t *dest /*write*/, |
482 | | const bits_plane_t *source /*read*/, int shift, int width, int height); |
483 | | |
484 | | /* Expand a plane into a pixmap. */ |
485 | | int bits_expand_plane(const bits_plane_t *dest /*write*/, |
486 | | const bits_plane_t *source /*read*/, int shift, int width, int height); |
487 | | |
488 | | /* Fill a rectangle of bytes. */ |
489 | | void bytes_fill_rectangle(byte * dest, uint raster, |
490 | | byte value, int width_bytes, int height); |
491 | | |
492 | | /* Copy a rectangle of bytes. */ |
493 | | void bytes_copy_rectangle(byte * dest, uint dest_raster, |
494 | | const byte * src, uint src_raster, int width_bytes, int height); |
495 | | |
496 | | /* Check if a rectangle of bytes are a constant value. Returns 0..255 (the |
497 | | constant value) if it is constant, or -1 otherwise. */ |
498 | | int bytes_rectangle_is_const(const byte * src, uint src_raster, int width_bytes, int height); |
499 | | |
500 | | /* Copy a rectangle of bytes, ensuring that any padding bits at the end |
501 | | * of each dest_raster line are zeroed. */ |
502 | | void bytes_copy_rectangle_zero_padding(byte * dest, uint dest_raster, |
503 | | const byte * src, uint src_raster, int width_bytes, int height); |
504 | | |
505 | | /* Copy a rectangle of bytes, ensuring that any padding bits at the end |
506 | | * of each dest_raster line are zeroed. The last row is copied without |
507 | | * any padding. */ |
508 | | void bytes_copy_rectangle_zero_padding_last_short(byte * dest, uint dest_raster, |
509 | | const byte * src, uint src_raster, int width_bytes, int height); |
510 | | |
511 | | #endif /* gsbitops_INCLUDED */ |