infinityledclock/vscode/LEDClock/src/clockelements.cpp

48 lines
1.7 KiB
C++

#include "clockelements.hpp"
void elements::init(Adafruit_NeoPixel *pixels, unsigned int first_led, unsigned int number_leds, bool outside2inside)
{
element_pixels = pixels;
element_first_pixel = first_led;
element_number_pixels = number_leds;
element_last_pixel = first_led + number_leds;
element_outside2inside = outside2inside;
}
void elements::clean(void)
{
fill(0, 0, 0);
}
void elements::fill(uint16_t huecolor, uint8_t saturation, uint8_t brightness)
{
for(unsigned int nrpixel = element_first_pixel; nrpixel < element_last_pixel; nrpixel++)
{
element_pixels->setPixelColor(nrpixel, element_pixels->ColorHSV(huecolor,saturation, brightness));
}
}
void elements::ffill(uint16_t huecolor, unsigned int fraction, uint8_t saturation, uint8_t brightness)
{
unsigned int fullpixels = element_number_pixels / fraction;
unsigned int partpixels = element_number_pixels % fraction;
elements_fraction = brightness / (60/element_number_pixels);
unsigned int part_brightness = elements_fraction * partpixels;
unsigned int current_pixel = 0;
for(unsigned int num = 0; num < fullpixels; num++)
{
current_pixel = element_outside2inside==true? element_last_pixel - num : element_first_pixel + num;
element_pixels->setPixelColor(current_pixel,element_pixels->ColorHSV(huecolor,saturation, brightness));
}
if(partpixels > 0)
{
current_pixel = element_outside2inside==true? element_last_pixel - fullpixels : element_first_pixel + fullpixels;
element_pixels->setPixelColor(current_pixel,element_pixels->ColorHSV(huecolor,saturation, part_brightness));
}
}