/** * @file lv_color.c * */ /********************* * INCLUDES *********************/ #include "lv_color_op_private.h" #include "lv_log.h" /********************* * DEFINES *********************/ /********************** * TYPEDEFS **********************/ /********************** * STATIC PROTOTYPES **********************/ /********************** * STATIC VARIABLES **********************/ /********************** * MACROS **********************/ /********************** * GLOBAL FUNCTIONS **********************/ lv_color_t LV_ATTRIBUTE_FAST_MEM lv_color_mix(lv_color_t c1, lv_color_t c2, uint8_t mix) { lv_color_t ret; ret.red = LV_UDIV255((uint16_t)c1.red * mix + c2.red * (255 - mix) + LV_COLOR_MIX_ROUND_OFS); ret.green = LV_UDIV255((uint16_t)c1.green * mix + c2.green * (255 - mix) + LV_COLOR_MIX_ROUND_OFS); ret.blue = LV_UDIV255((uint16_t)c1.blue * mix + c2.blue * (255 - mix) + LV_COLOR_MIX_ROUND_OFS); return ret; } lv_color32_t lv_color_mix32(lv_color32_t fg, lv_color32_t bg) { if(fg.alpha >= LV_OPA_MAX) { fg.alpha = bg.alpha; return fg; } if(fg.alpha <= LV_OPA_MIN) { return bg; } bg.red = (uint32_t)((uint32_t)fg.red * fg.alpha + (uint32_t)bg.red * (255 - fg.alpha)) >> 8; bg.green = (uint32_t)((uint32_t)fg.green * fg.alpha + (uint32_t)bg.green * (255 - fg.alpha)) >> 8; bg.blue = (uint32_t)((uint32_t)fg.blue * fg.alpha + (uint32_t)bg.blue * (255 - fg.alpha)) >> 8; return bg; } uint8_t lv_color_brightness(lv_color_t c) { uint16_t bright = (uint16_t)(3u * c.red + c.green + 4u * c.blue); return (uint8_t)(bright >> 3); } void lv_color_filter_dsc_init(lv_color_filter_dsc_t * dsc, lv_color_filter_cb_t cb) { dsc->filter_cb = cb; } /********************** * STATIC FUNCTIONS **********************/