forked from mirrors/qmk_userspace
		
	Add support for hsv->rgb conversion without using CIE curve. (#9856)
* Add support for hsv->rgb conversion without using CIE curve. * Modify anavi/macropad8 to disable unicode (was unused), otherwise firmware size is too large.
This commit is contained in:
		
					parent
					
						
							
								200444f8d2
							
						
					
				
			
			
				commit
				
					
						c990dc1e6c
					
				
			
		
					 3 changed files with 24 additions and 4 deletions
				
			
		| 
						 | 
					@ -23,7 +23,6 @@ NKRO_ENABLE = yes           # Nkey Rollover - if this doesn't work, see here: ht
 | 
				
			||||||
BACKLIGHT_ENABLE = yes       # Enable keyboard backlight functionality
 | 
					BACKLIGHT_ENABLE = yes       # Enable keyboard backlight functionality
 | 
				
			||||||
MIDI_ENABLE = no            # MIDI controls
 | 
					MIDI_ENABLE = no            # MIDI controls
 | 
				
			||||||
AUDIO_ENABLE = no           # Audio output on port C6
 | 
					AUDIO_ENABLE = no           # Audio output on port C6
 | 
				
			||||||
UNICODE_ENABLE = yes        # Unicode
 | 
					 | 
				
			||||||
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
 | 
					BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
 | 
				
			||||||
RGBLIGHT_ENABLE = yes       # Enable WS2812 RGB underlight.
 | 
					RGBLIGHT_ENABLE = yes       # Enable WS2812 RGB underlight.
 | 
				
			||||||
OLED_DRIVER_ENABLE = yes     # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C
 | 
					OLED_DRIVER_ENABLE = yes     # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,14 +18,20 @@
 | 
				
			||||||
#include "led_tables.h"
 | 
					#include "led_tables.h"
 | 
				
			||||||
#include "progmem.h"
 | 
					#include "progmem.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RGB hsv_to_rgb(HSV hsv) {
 | 
					RGB hsv_to_rgb_impl(HSV hsv, bool use_cie) {
 | 
				
			||||||
    RGB      rgb;
 | 
					    RGB      rgb;
 | 
				
			||||||
    uint8_t  region, remainder, p, q, t;
 | 
					    uint8_t  region, remainder, p, q, t;
 | 
				
			||||||
    uint16_t h, s, v;
 | 
					    uint16_t h, s, v;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (hsv.s == 0) {
 | 
					    if (hsv.s == 0) {
 | 
				
			||||||
#ifdef USE_CIE1931_CURVE
 | 
					#ifdef USE_CIE1931_CURVE
 | 
				
			||||||
        rgb.r = rgb.g = rgb.b = pgm_read_byte(&CIE1931_CURVE[hsv.v]);
 | 
					        if (use_cie) {
 | 
				
			||||||
 | 
					            rgb.r = rgb.g = rgb.b = pgm_read_byte(&CIE1931_CURVE[hsv.v]);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            rgb.r = hsv.v;
 | 
				
			||||||
 | 
					            rgb.g = hsv.v;
 | 
				
			||||||
 | 
					            rgb.b = hsv.v;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
        rgb.r = hsv.v;
 | 
					        rgb.r = hsv.v;
 | 
				
			||||||
        rgb.g = hsv.v;
 | 
					        rgb.g = hsv.v;
 | 
				
			||||||
| 
						 | 
					@ -37,7 +43,11 @@ RGB hsv_to_rgb(HSV hsv) {
 | 
				
			||||||
    h = hsv.h;
 | 
					    h = hsv.h;
 | 
				
			||||||
    s = hsv.s;
 | 
					    s = hsv.s;
 | 
				
			||||||
#ifdef USE_CIE1931_CURVE
 | 
					#ifdef USE_CIE1931_CURVE
 | 
				
			||||||
    v = pgm_read_byte(&CIE1931_CURVE[hsv.v]);
 | 
					    if (use_cie) {
 | 
				
			||||||
 | 
					        v = pgm_read_byte(&CIE1931_CURVE[hsv.v]);
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        v = hsv.v;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
    v = hsv.v;
 | 
					    v = hsv.v;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -86,6 +96,16 @@ RGB hsv_to_rgb(HSV hsv) {
 | 
				
			||||||
    return rgb;
 | 
					    return rgb;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RGB hsv_to_rgb(HSV hsv) {
 | 
				
			||||||
 | 
					#ifdef USE_CIE1931_CURVE
 | 
				
			||||||
 | 
					    return hsv_to_rgb_impl(hsv, true);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					    return hsv_to_rgb_impl(hsv, false);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RGB hsv_to_rgb_nocie(HSV hsv) { return hsv_to_rgb_impl(hsv, false); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef RGBW
 | 
					#ifdef RGBW
 | 
				
			||||||
#    ifndef MIN
 | 
					#    ifndef MIN
 | 
				
			||||||
#        define MIN(a, b) ((a) < (b) ? (a) : (b))
 | 
					#        define MIN(a, b) ((a) < (b) ? (a) : (b))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -64,6 +64,7 @@ typedef struct PACKED {
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RGB hsv_to_rgb(HSV hsv);
 | 
					RGB hsv_to_rgb(HSV hsv);
 | 
				
			||||||
 | 
					RGB hsv_to_rgb_nocie(HSV hsv);
 | 
				
			||||||
#ifdef RGBW
 | 
					#ifdef RGBW
 | 
				
			||||||
void convert_rgb_to_rgbw(LED_TYPE *led);
 | 
					void convert_rgb_to_rgbw(LED_TYPE *led);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue