/src/libjpeg-turbo.2.1.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 | | |
21 | | |
22 | | /* Fully reversible */ |
23 | | |
24 | | INLINE |
25 | | LOCAL(void) |
26 | | rgb_to_cmyk(JSAMPLE r, JSAMPLE g, JSAMPLE b, JSAMPLE *c, JSAMPLE *m, |
27 | | JSAMPLE *y, JSAMPLE *k) |
28 | 7.62M | { |
29 | 7.62M | double ctmp = 1.0 - ((double)r / 255.0); |
30 | 7.62M | double mtmp = 1.0 - ((double)g / 255.0); |
31 | 7.62M | double ytmp = 1.0 - ((double)b / 255.0); |
32 | 7.62M | double ktmp = MIN(MIN(ctmp, mtmp), ytmp); |
33 | | |
34 | 7.62M | if (ktmp == 1.0) ctmp = mtmp = ytmp = 0.0; |
35 | 2.51M | else { |
36 | 2.51M | ctmp = (ctmp - ktmp) / (1.0 - ktmp); |
37 | 2.51M | mtmp = (mtmp - ktmp) / (1.0 - ktmp); |
38 | 2.51M | ytmp = (ytmp - ktmp) / (1.0 - ktmp); |
39 | 2.51M | } |
40 | 7.62M | *c = (JSAMPLE)(255.0 - ctmp * 255.0 + 0.5); |
41 | 7.62M | *m = (JSAMPLE)(255.0 - mtmp * 255.0 + 0.5); |
42 | 7.62M | *y = (JSAMPLE)(255.0 - ytmp * 255.0 + 0.5); |
43 | 7.62M | *k = (JSAMPLE)(255.0 - ktmp * 255.0 + 0.5); |
44 | 7.62M | } Line | Count | Source | 28 | 904k | { | 29 | 904k | double ctmp = 1.0 - ((double)r / 255.0); | 30 | 904k | double mtmp = 1.0 - ((double)g / 255.0); | 31 | 904k | double ytmp = 1.0 - ((double)b / 255.0); | 32 | 904k | double ktmp = MIN(MIN(ctmp, mtmp), ytmp); | 33 | | | 34 | 904k | if (ktmp == 1.0) ctmp = mtmp = ytmp = 0.0; | 35 | 695k | else { | 36 | 695k | ctmp = (ctmp - ktmp) / (1.0 - ktmp); | 37 | 695k | mtmp = (mtmp - ktmp) / (1.0 - ktmp); | 38 | 695k | ytmp = (ytmp - ktmp) / (1.0 - ktmp); | 39 | 695k | } | 40 | 904k | *c = (JSAMPLE)(255.0 - ctmp * 255.0 + 0.5); | 41 | 904k | *m = (JSAMPLE)(255.0 - mtmp * 255.0 + 0.5); | 42 | 904k | *y = (JSAMPLE)(255.0 - ytmp * 255.0 + 0.5); | 43 | 904k | *k = (JSAMPLE)(255.0 - ktmp * 255.0 + 0.5); | 44 | 904k | } |
Line | Count | Source | 28 | 6.71M | { | 29 | 6.71M | double ctmp = 1.0 - ((double)r / 255.0); | 30 | 6.71M | double mtmp = 1.0 - ((double)g / 255.0); | 31 | 6.71M | double ytmp = 1.0 - ((double)b / 255.0); | 32 | 6.71M | double ktmp = MIN(MIN(ctmp, mtmp), ytmp); | 33 | | | 34 | 6.71M | if (ktmp == 1.0) ctmp = mtmp = ytmp = 0.0; | 35 | 1.81M | else { | 36 | 1.81M | ctmp = (ctmp - ktmp) / (1.0 - ktmp); | 37 | 1.81M | mtmp = (mtmp - ktmp) / (1.0 - ktmp); | 38 | 1.81M | ytmp = (ytmp - ktmp) / (1.0 - ktmp); | 39 | 1.81M | } | 40 | 6.71M | *c = (JSAMPLE)(255.0 - ctmp * 255.0 + 0.5); | 41 | 6.71M | *m = (JSAMPLE)(255.0 - mtmp * 255.0 + 0.5); | 42 | 6.71M | *y = (JSAMPLE)(255.0 - ytmp * 255.0 + 0.5); | 43 | 6.71M | *k = (JSAMPLE)(255.0 - ktmp * 255.0 + 0.5); | 44 | 6.71M | } |
Unexecuted instantiation: wrbmp.c:rgb_to_cmyk Unexecuted instantiation: wrppm.c:rgb_to_cmyk |
45 | | |
46 | | |
47 | | /* Fully reversible only for C/M/Y/K values generated with rgb_to_cmyk() */ |
48 | | |
49 | | INLINE |
50 | | LOCAL(void) |
51 | | cmyk_to_rgb(JSAMPLE c, JSAMPLE m, JSAMPLE y, JSAMPLE k, JSAMPLE *r, JSAMPLE *g, |
52 | | JSAMPLE *b) |
53 | 0 | { |
54 | 0 | *r = (JSAMPLE)((double)c * (double)k / 255.0 + 0.5); |
55 | 0 | *g = (JSAMPLE)((double)m * (double)k / 255.0 + 0.5); |
56 | 0 | *b = (JSAMPLE)((double)y * (double)k / 255.0 + 0.5); |
57 | 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 |
58 | | |
59 | | |
60 | | #endif /* CMYK_H */ |