Coverage Report

Created: 2025-06-24 07:01

/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 */