// CMYK = Cyan, Magenta, Yellow, Key(black)
// RGB = Red, Green, Blue
#include <stdio.h>
#include <math.h>
struct CMYK {
float C;
float M;
float Y;
float K;
};
struct CMYK RGBtoCMYK(float R, float G, float B) {
struct CMYK cmyk;
if (R == 0 && G == 0 && B == 0) {
cmyk.C = 0;
cmyk.M = 0;
cmyk.Y = 0;
cmyk.K = 1;
return cmyk;
}
R = R / 255;
G = G / 255;
B = B / 255;
float max = R;
if (max < G)
max = G;
if (max < B)
max = B;
float white = max;
cmyk.C = ((white - R) / white) * 100;
cmyk.M = ((white - G) / white) * 100;
cmyk.Y = ((white - B) / white) * 100;
cmyk.K = (1.0f - white) * 100;
return cmyk;
}
int main() {
struct CMYK cmyk = RGBtoCMYK(245.0f, 213.0f, 0.0f);
printf("Cyan: %.0f\n", cmyk.C);
printf("Magenta: %.0f\n", cmyk.M);
printf("Yellow: %.0f\n", cmyk.Y);
printf("Black: %.0f\n", cmyk.K);
}
/*
run:
Cyan: 0
Magenta: 13
Yellow: 100
Black: 4
*/