Coverage Report

Created: 2023-06-07 06:03

/src/libjpeg-turbo.2.0.x/cmyk.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * cmyk.h
3
 *
4
 * Copyright (C) 2017-2018, D. R. Commander.
5
 * For conditions of distribution and use, see the accompanying README.ijg
6
 * file.
7
 *
8
 * This file contains convenience functions for performing quick & dirty
9
 * CMYK<->RGB conversion.  This algorithm is suitable for testing purposes
10
 * only.  Properly converting between CMYK and RGB requires a color management
11
 * system.
12
 */
13
14
#ifndef CMYK_H
15
#define CMYK_H
16
17
#include <jinclude.h>
18
#define JPEG_INTERNALS
19
#include <jpeglib.h>
20
#include "jconfigint.h"
21
22
23
/* Fully reversible */
24
25
INLINE
26
LOCAL(void)
27
rgb_to_cmyk(JSAMPLE r, JSAMPLE g, JSAMPLE b, JSAMPLE *c, JSAMPLE *m,
28
            JSAMPLE *y, JSAMPLE *k)
29
13.6M
{
30
13.6M
  double ctmp = 1.0 - ((double)r / 255.0);
31
13.6M
  double mtmp = 1.0 - ((double)g / 255.0);
32
13.6M
  double ytmp = 1.0 - ((double)b / 255.0);
33
13.6M
  double ktmp = MIN(MIN(ctmp, mtmp), ytmp);
34
35
13.6M
  if (ktmp == 1.0) ctmp = mtmp = ytmp = 0.0;
36
8.63M
  else {
37
8.63M
    ctmp = (ctmp - ktmp) / (1.0 - ktmp);
38
8.63M
    mtmp = (mtmp - ktmp) / (1.0 - ktmp);
39
8.63M
    ytmp = (ytmp - ktmp) / (1.0 - ktmp);
40
8.63M
  }
41
13.6M
  *c = (JSAMPLE)(255.0 - ctmp * 255.0 + 0.5);
42
13.6M
  *m = (JSAMPLE)(255.0 - mtmp * 255.0 + 0.5);
43
13.6M
  *y = (JSAMPLE)(255.0 - ytmp * 255.0 + 0.5);
44
13.6M
  *k = (JSAMPLE)(255.0 - ktmp * 255.0 + 0.5);
45
13.6M
}
rdbmp.c:rgb_to_cmyk
Line
Count
Source
29
7.54M
{
30
7.54M
  double ctmp = 1.0 - ((double)r / 255.0);
31
7.54M
  double mtmp = 1.0 - ((double)g / 255.0);
32
7.54M
  double ytmp = 1.0 - ((double)b / 255.0);
33
7.54M
  double ktmp = MIN(MIN(ctmp, mtmp), ytmp);
34
35
7.54M
  if (ktmp == 1.0) ctmp = mtmp = ytmp = 0.0;
36
7.02M
  else {
37
7.02M
    ctmp = (ctmp - ktmp) / (1.0 - ktmp);
38
7.02M
    mtmp = (mtmp - ktmp) / (1.0 - ktmp);
39
7.02M
    ytmp = (ytmp - ktmp) / (1.0 - ktmp);
40
7.02M
  }
41
7.54M
  *c = (JSAMPLE)(255.0 - ctmp * 255.0 + 0.5);
42
7.54M
  *m = (JSAMPLE)(255.0 - mtmp * 255.0 + 0.5);
43
7.54M
  *y = (JSAMPLE)(255.0 - ytmp * 255.0 + 0.5);
44
7.54M
  *k = (JSAMPLE)(255.0 - ktmp * 255.0 + 0.5);
45
7.54M
}
rdppm.c:rgb_to_cmyk
Line
Count
Source
29
6.06M
{
30
6.06M
  double ctmp = 1.0 - ((double)r / 255.0);
31
6.06M
  double mtmp = 1.0 - ((double)g / 255.0);
32
6.06M
  double ytmp = 1.0 - ((double)b / 255.0);
33
6.06M
  double ktmp = MIN(MIN(ctmp, mtmp), ytmp);
34
35
6.06M
  if (ktmp == 1.0) ctmp = mtmp = ytmp = 0.0;
36
1.61M
  else {
37
1.61M
    ctmp = (ctmp - ktmp) / (1.0 - ktmp);
38
1.61M
    mtmp = (mtmp - ktmp) / (1.0 - ktmp);
39
1.61M
    ytmp = (ytmp - ktmp) / (1.0 - ktmp);
40
1.61M
  }
41
6.06M
  *c = (JSAMPLE)(255.0 - ctmp * 255.0 + 0.5);
42
6.06M
  *m = (JSAMPLE)(255.0 - mtmp * 255.0 + 0.5);
43
6.06M
  *y = (JSAMPLE)(255.0 - ytmp * 255.0 + 0.5);
44
6.06M
  *k = (JSAMPLE)(255.0 - ktmp * 255.0 + 0.5);
45
6.06M
}
Unexecuted instantiation: wrbmp.c:rgb_to_cmyk
Unexecuted instantiation: wrppm.c:rgb_to_cmyk
46
47
48
/* Fully reversible only for C/M/Y/K values generated with rgb_to_cmyk() */
49
50
INLINE
51
LOCAL(void)
52
cmyk_to_rgb(JSAMPLE c, JSAMPLE m, JSAMPLE y, JSAMPLE k, JSAMPLE *r, JSAMPLE *g,
53
            JSAMPLE *b)
54
0
{
55
0
  *r = (JSAMPLE)((double)c * (double)k / 255.0 + 0.5);
56
0
  *g = (JSAMPLE)((double)m * (double)k / 255.0 + 0.5);
57
0
  *b = (JSAMPLE)((double)y * (double)k / 255.0 + 0.5);
58
0
}
Unexecuted instantiation: rdbmp.c:cmyk_to_rgb
Unexecuted instantiation: rdppm.c:cmyk_to_rgb
Unexecuted instantiation: wrbmp.c:cmyk_to_rgb
Unexecuted instantiation: wrppm.c:cmyk_to_rgb
59
60
61
#endif /* CMYK_H */