Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unsigned int value_to_hue_inverted(double v, double maxv) {
- if (v < 0) return 0xff000000;
- double f = v * 5.0 / maxv;
- int x = (int)f;
- if (x > 4) { x = 4; f = 1.0; } else f = f - x;
- switch (x) {
- case 0:
- return 0xff0000ff + ((int)(255*f)<<8);
- case 1:
- return 0xff00ff00 + 255*(1-f);
- case 2:
- return 0xff00ff00 + ((int)(255*f)<<16);
- case 3:
- return 0xffff0000 + ((int)(255*(1-f))<<8);
- case 4:
- return 0xffff0000 + 255*f;
- }
- return 0xffff0000;
- }
- unsigned int value_to_hue(double v, double maxv) {
- if (v < 0) return 0xff000000;
- double f = v * 5.0 / maxv;
- int x = (int)f;
- if (x > 4) { x = 4; f = 1.0; } else f = f - x;
- switch (x) {
- case 0:
- return 0xffff0000 + 255*(1-f);
- case 1:
- return 0xffff0000 + ((int)(255*f)<<8);
- case 2:
- return 0xff00ff00 + ((int)(255*(1-f))<<16);
- case 3:
- return 0xff00ff00 + 255*f;
- case 4:
- return 0xff0000ff + ((int)(255*(1-f))<<8);
- }
- return 0xffff0000;
- }
- unsigned int value_to_bryw(double v, double maxv) {
- if (v < 0) return 0xff000000;
- double f = v*v * 4.0 / (maxv*maxv);
- int x = (int)f;
- if (x > 3) { x = 3; f = 1.0; } else f = f - x;
- switch (x) {
- case 0:
- return 0xff000000 + 255*f;
- case 1:
- return 0xff000000 + ((int)(255*f)<<16) + 255*(1-f);
- case 2:
- return 0xffff0000 + ((int)(255*f)<<8);
- case 3:
- return 0xffffff00 + 255*f;
- }
- return 0xffff0000;
- }
- unsigned int value_to_bryw2(double v, double maxv) {
- if (v < 0) return 0xff000000;
- double f = v * 4.0 / maxv;
- int x = (int)f;
- if (x > 3) { x = 3; f = 1.0; } else f = f - x;
- switch (x) {
- case 0:
- return 0xff000000 + 255*f;
- case 1:
- return 0xff000000 + ((int)(255*f)<<16) + 255*(1-f);
- case 2:
- return 0xffff0000 + ((int)(255*f)<<8);
- case 3:
- return 0xffffff00 + 255*f;
- }
- return 0xffff0000;
- }
- unsigned int value_to_bcy(double v, double maxv) {
- if (v < 0) return 0xff000000;
- double f = v * 3.0 / maxv;
- int x = (int)f;
- if (x > 2) { x = 2; f = 1.0; } else f = f - x;
- switch (x) {
- case 0:
- return 0xff000000 + 255*f;
- case 1:
- return 0xff0000ff + ((int)(255*f)<<8);
- case 2:
- return 0xff00ffff + ((int)(255*f)<<16);
- }
- return 0xffff0000;
- }
- unsigned int value_to_orange_range(double v, double maxv) {
- if (v < 0) return 0xff000000;
- double f = v * 3.0 / maxv;
- int x = (int)f;
- if (x > 2) { x = 2; f = 1.0; } else f = f - x;
- switch (x) {
- case 0:
- return 0xff000000 + ((int)(255*f)<<16) + ((int)(51*f)<<8);
- case 1:
- return 0xffff0000 + ((int)(51+204*f)<<8);
- case 2:
- return 0xffffff00 + 255*f;
- }
- return 0xffff0000;
- }
- unsigned int value_to_green_range(double v, double maxv) {
- if (v < 0) return 0xff000000;
- double f = v * 2.0 / maxv;
- int x = (int)f;
- if (x > 1) { x = 1; f = 1.0; } else f = f - x;
- switch (x) {
- case 0:
- return 0xff000000 + ((int)(162*f)<<8) + 89*f;
- case 1:
- return 0xff000000 + ((int)(255*f)<<16) + ((int)(162+93*f)<<8) + (89+166*f);
- }
- return 0xffff0000;
- }
- unsigned int value_to_purple_range(double v, double maxv) {
- if (v < 0) return 0xff000000;
- double f = v * 2.0 / maxv;
- int x = (int)f;
- if (x > 1) { x = 1; f = 1.0; } else f = f - x;
- switch (x) {
- case 0:
- return 0xff000000 + ((int)(230*f)<<16) + 172*f;
- case 1:
- return 0xff000000 + ((int)(230+25*f)<<16) + ((int)(255*f)<<8) + (172+83*f);
- }
- return 0xffff0000;
- }
- unsigned int value_to_ideal_blue_range(double v, double maxv) {
- if (v < 0) return 0xff000000;
- double f = v * 2.0 / maxv;
- int x = (int)f;
- if (x > 1) { x = 1; f = 1.0; } else f = f - x;
- switch (x) {
- case 0:
- return 0xff000000 + ((int)(144*f)<<8) + 255*f;
- case 1:
- return 0xff0000ff + ((int)(255*f)<<16) + ((int)(144+111*f)<<8);
- }
- return 0xffff0000;
- }
- unsigned int (*COLOR_FUNCTIONS[])(double, double) = {
- value_to_hue_inverted,
- value_to_hue,
- value_to_bryw,
- value_to_bryw2,
- value_to_bcy,
- value_to_green_range,
- value_to_purple_range,
- value_to_orange_range,
- value_to_ideal_blue_range,
- };
- const int COLOR_FUNCTIONS_COUNT = 9;
- int CURRENT_CF = 8; // value_to_ideal_blue_range
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement