mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
Move color palette code to helper methods
This commit is contained in:
parent
8ccc9f1011
commit
43aef07ae6
@ -599,48 +599,8 @@ mp_obj_t py_fir_draw_ir(uint n_args, const mp_obj_t *args, mp_map_t *kw_args)
|
||||
nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "0 <= alpha <= 256!"));
|
||||
}
|
||||
|
||||
const uint16_t *color_palette = rainbow_table;
|
||||
int palette;
|
||||
uint arg_index = offset + 5;
|
||||
mp_map_elem_t *kw_arg = mp_map_lookup(kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_color_palette), MP_MAP_LOOKUP);
|
||||
|
||||
if (kw_arg && MP_OBJ_IS_TYPE(kw_arg->value, mp_const_none)) {
|
||||
color_palette = NULL;
|
||||
} else if ((n_args > arg_index) && MP_OBJ_IS_TYPE(args[arg_index], mp_const_none)) {
|
||||
color_palette = NULL;
|
||||
} else if (py_helper_keyword_int_maybe(n_args, args, arg_index, kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_color_palette), &palette)) {
|
||||
if (palette == COLOR_PALETTE_RAINBOW) {
|
||||
color_palette = rainbow_table;
|
||||
} else if (palette == COLOR_PALETTE_IRONBOW) {
|
||||
color_palette = ironbow_table;
|
||||
} else {
|
||||
nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Invalid pre-defined color palette!"));
|
||||
}
|
||||
} else {
|
||||
image_t *arg_color_palette = py_helper_keyword_to_image_mutable_color_palette(n_args, args, arg_index, kw_args);
|
||||
if (arg_color_palette) {
|
||||
if (arg_color_palette->bpp != IMAGE_BPP_RGB565) {
|
||||
nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Color palette must be RGB565!"));
|
||||
}
|
||||
if ((arg_color_palette->w * arg_color_palette->h) != 256) {
|
||||
nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Color palette must be 256 pixels!"));
|
||||
}
|
||||
color_palette = (uint16_t *) arg_color_palette->data;
|
||||
}
|
||||
}
|
||||
|
||||
const uint8_t *alpha_palette = NULL;
|
||||
image_t *arg_alpha_palette = py_helper_keyword_to_image_mutable_alpha_palette(n_args, args, offset + 6, kw_args);
|
||||
|
||||
if (arg_alpha_palette) {
|
||||
if (arg_alpha_palette->bpp != IMAGE_BPP_GRAYSCALE) {
|
||||
nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Alpha palette must be GRAYSCALE!"));
|
||||
}
|
||||
if ((arg_alpha_palette->w * arg_alpha_palette->h) != 256) {
|
||||
nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Alpha palette must be 256 pixels!"));
|
||||
}
|
||||
alpha_palette = (uint8_t *) arg_alpha_palette->data;
|
||||
}
|
||||
const uint16_t *color_palette = py_helper_keyword_color_palette(n_args, args, offset + 5, kw_args, rainbow_table);
|
||||
const uint8_t *alpha_palette = py_helper_keyword_alpha_palette(n_args, args, offset + 6, kw_args, NULL);
|
||||
|
||||
image_hint_t hint = py_helper_keyword_int(n_args, args, offset + 7, kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_hint), 0);
|
||||
|
||||
@ -740,49 +700,8 @@ mp_obj_t py_fir_snapshot(uint n_args, const mp_obj_t *args, mp_map_t *kw_args)
|
||||
nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "0 <= alpha <= 256!"));
|
||||
}
|
||||
|
||||
const uint16_t *color_palette = rainbow_table;
|
||||
int palette;
|
||||
|
||||
uint arg_index = 8;
|
||||
mp_map_elem_t *kw_arg = mp_map_lookup(kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_color_palette), MP_MAP_LOOKUP);
|
||||
|
||||
if (kw_arg && MP_OBJ_IS_TYPE(kw_arg->value, mp_const_none)) {
|
||||
color_palette = NULL;
|
||||
} else if ((n_args > arg_index) && MP_OBJ_IS_TYPE(args[arg_index], mp_const_none)) {
|
||||
color_palette = NULL;
|
||||
} else if (py_helper_keyword_int_maybe(n_args, args, arg_index, kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_color_palette), &palette)) {
|
||||
if (palette == COLOR_PALETTE_RAINBOW) {
|
||||
color_palette = rainbow_table;
|
||||
} else if (palette == COLOR_PALETTE_IRONBOW) {
|
||||
color_palette = ironbow_table;
|
||||
} else {
|
||||
nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Invalid pre-defined color palette!"));
|
||||
}
|
||||
} else {
|
||||
image_t *arg_color_palette = py_helper_keyword_to_image_mutable_color_palette(n_args, args, arg_index, kw_args);
|
||||
if (arg_color_palette) {
|
||||
if (arg_color_palette->bpp != IMAGE_BPP_RGB565) {
|
||||
nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Color palette must be RGB565!"));
|
||||
}
|
||||
if ((arg_color_palette->w * arg_color_palette->h) != 256) {
|
||||
nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Color palette must be 256 pixels!"));
|
||||
}
|
||||
color_palette = (uint16_t *) arg_color_palette->data;
|
||||
}
|
||||
}
|
||||
|
||||
const uint8_t *alpha_palette = NULL;
|
||||
image_t *arg_alpha_palette = py_helper_keyword_to_image_mutable_alpha_palette(n_args, args, 9, kw_args);
|
||||
|
||||
if (arg_alpha_palette) {
|
||||
if (arg_alpha_palette->bpp != IMAGE_BPP_GRAYSCALE) {
|
||||
nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Alpha palette must be GRAYSCALE!"));
|
||||
}
|
||||
if ((arg_alpha_palette->w * arg_alpha_palette->h) != 256) {
|
||||
nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Alpha palette must be 256 pixels!"));
|
||||
}
|
||||
alpha_palette = (uint8_t *) arg_alpha_palette->data;
|
||||
}
|
||||
const uint16_t *color_palette = py_helper_keyword_color_palette(n_args, args, 8, kw_args, rainbow_table);
|
||||
const uint8_t *alpha_palette = py_helper_keyword_alpha_palette(n_args, args, 9, kw_args, NULL);
|
||||
|
||||
image_hint_t hint = py_helper_keyword_int(n_args, args, 10, kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_hint), 0);
|
||||
|
||||
|
||||
@ -407,6 +407,73 @@ mp_obj_t py_helper_keyword_object(uint n_args, const mp_obj_t *args,
|
||||
}
|
||||
}
|
||||
|
||||
const uint16_t *py_helper_keyword_color_palette(uint n_args, const mp_obj_t *args,
|
||||
uint arg_index, mp_map_t *kw_args, const uint16_t *default_color_palette)
|
||||
{
|
||||
int palette;
|
||||
|
||||
mp_map_elem_t *kw_arg =
|
||||
mp_map_lookup(kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_color_palette), MP_MAP_LOOKUP);
|
||||
|
||||
if (kw_arg && MP_OBJ_IS_TYPE(kw_arg->value, mp_const_none)) {
|
||||
default_color_palette = NULL;
|
||||
} else if ((n_args > arg_index) && MP_OBJ_IS_TYPE(args[arg_index], mp_const_none)) {
|
||||
default_color_palette = NULL;
|
||||
} else if (py_helper_keyword_int_maybe(n_args, args, arg_index, kw_args,
|
||||
MP_OBJ_NEW_QSTR(MP_QSTR_color_palette), &palette)) {
|
||||
if (palette == COLOR_PALETTE_RAINBOW) {
|
||||
default_color_palette = rainbow_table;
|
||||
} else if (palette == COLOR_PALETTE_IRONBOW) {
|
||||
default_color_palette = ironbow_table;
|
||||
} else {
|
||||
nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError,
|
||||
"Invalid pre-defined color palette!"));
|
||||
}
|
||||
} else {
|
||||
image_t *arg_color_palette =
|
||||
py_helper_keyword_to_image_mutable_color_palette(n_args, args, arg_index, kw_args);
|
||||
|
||||
if (arg_color_palette) {
|
||||
if (arg_color_palette->bpp != IMAGE_BPP_RGB565) {
|
||||
nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError,
|
||||
"Color palette must be RGB565!"));
|
||||
}
|
||||
|
||||
if ((arg_color_palette->w * arg_color_palette->h) != 256) {
|
||||
nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError,
|
||||
"Color palette must be 256 pixels!"));
|
||||
}
|
||||
|
||||
default_color_palette = (uint16_t *) arg_color_palette->data;
|
||||
}
|
||||
}
|
||||
|
||||
return default_color_palette;
|
||||
}
|
||||
|
||||
const uint8_t *py_helper_keyword_alpha_palette(uint n_args, const mp_obj_t *args,
|
||||
uint arg_index, mp_map_t *kw_args, const uint8_t *default_alpha_palette)
|
||||
{
|
||||
image_t *arg_alpha_palette =
|
||||
py_helper_keyword_to_image_mutable_alpha_palette(n_args, args, 9, kw_args);
|
||||
|
||||
if (arg_alpha_palette) {
|
||||
if (arg_alpha_palette->bpp != IMAGE_BPP_GRAYSCALE) {
|
||||
nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError,
|
||||
"Alpha palette must be GRAYSCALE!"));
|
||||
}
|
||||
|
||||
if ((arg_alpha_palette->w * arg_alpha_palette->h) != 256) {
|
||||
nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError,
|
||||
"Alpha palette must be 256 pixels!"));
|
||||
}
|
||||
|
||||
default_alpha_palette = (uint8_t *) arg_alpha_palette->data;
|
||||
}
|
||||
|
||||
return default_alpha_palette;
|
||||
}
|
||||
|
||||
bool py_helper_is_equal_to_framebuffer(image_t *img)
|
||||
{
|
||||
return framebuffer_get_buffer() == img->data;
|
||||
|
||||
@ -11,7 +11,6 @@
|
||||
#ifndef __PY_HELPER_H__
|
||||
#define __PY_HELPER_H__
|
||||
#include "imlib.h"
|
||||
|
||||
extern const mp_obj_fun_builtin_var_t py_func_unavailable_obj;
|
||||
image_t *py_helper_arg_to_image_mutable(const mp_obj_t arg);
|
||||
image_t *py_helper_arg_to_image_mutable_bayer(const mp_obj_t arg);
|
||||
@ -55,6 +54,10 @@ int py_helper_arg_to_ksize(const mp_obj_t arg);
|
||||
int py_helper_ksize_to_n(int ksize);
|
||||
mp_obj_t py_helper_keyword_object(uint n_args, const mp_obj_t *args,
|
||||
uint arg_index, mp_map_t *kw_args, mp_obj_t kw, mp_obj_t default_val);
|
||||
const uint16_t *py_helper_keyword_color_palette(uint n_args, const mp_obj_t *args,
|
||||
uint arg_index, mp_map_t *kw_args, const uint16_t *default_color_palette);
|
||||
const uint8_t *py_helper_keyword_alpha_palette(uint n_args, const mp_obj_t *args,
|
||||
uint arg_index, mp_map_t *kw_args, const uint8_t *default_alpha_palette);
|
||||
bool py_helper_is_equal_to_framebuffer(image_t *img);
|
||||
void py_helper_update_framebuffer(image_t *img);
|
||||
void py_helper_set_to_framebuffer(image_t *img);
|
||||
|
||||
@ -1890,35 +1890,8 @@ STATIC mp_obj_t py_image_draw_image(uint n_args, const mp_obj_t *args, mp_map_t
|
||||
int arg_alpha = py_helper_keyword_int(n_args, args, offset + 4, kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_alpha), 256);
|
||||
if ((arg_alpha < 0) || (256 < arg_alpha)) nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "0 <= alpha <= 256!"));
|
||||
|
||||
const uint16_t *color_palette = NULL;
|
||||
{
|
||||
int palette;
|
||||
|
||||
if (py_helper_keyword_int_maybe(n_args, args, offset + 5, kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_color_palette), &palette)) {
|
||||
if (palette == COLOR_PALETTE_RAINBOW) color_palette = rainbow_table;
|
||||
else if (palette == COLOR_PALETTE_IRONBOW) color_palette = ironbow_table;
|
||||
else nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Invalid pre-defined color palette!"));
|
||||
} else {
|
||||
image_t *arg_color_palette = py_helper_keyword_to_image_mutable_color_palette(n_args, args, offset + 5, kw_args);
|
||||
|
||||
if (arg_color_palette) {
|
||||
if (arg_color_palette->bpp != IMAGE_BPP_RGB565) nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Color palette must be RGB565!"));
|
||||
if ((arg_color_palette->w * arg_color_palette->h) != 256) nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Color palette must be 256 pixels!"));
|
||||
color_palette = (uint16_t *) arg_color_palette->data;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const uint8_t *alpha_palette = NULL;
|
||||
{
|
||||
image_t *arg_alpha_palette = py_helper_keyword_to_image_mutable_alpha_palette(n_args, args, offset + 6, kw_args);
|
||||
|
||||
if (arg_alpha_palette) {
|
||||
if (arg_alpha_palette->bpp != IMAGE_BPP_GRAYSCALE) nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Alpha palette must be GRAYSCALE!"));
|
||||
if ((arg_alpha_palette->w * arg_alpha_palette->h) != 256) nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Alpha palette must be 256 pixels!"));
|
||||
alpha_palette = (uint8_t *) arg_alpha_palette->data;
|
||||
}
|
||||
}
|
||||
const uint16_t *color_palette = py_helper_keyword_color_palette(n_args, args, offset + 5, kw_args, NULL);
|
||||
const uint8_t *alpha_palette = py_helper_keyword_alpha_palette(n_args, args, offset + 6, kw_args, NULL);
|
||||
|
||||
image_hint_t hint = py_helper_keyword_int(n_args, args, offset + 7, kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_hint), 0);
|
||||
|
||||
|
||||
@ -1587,35 +1587,8 @@ STATIC mp_obj_t py_lcd_display(uint n_args, const mp_obj_t *args, mp_map_t *kw_a
|
||||
int arg_alpha = py_helper_keyword_int(n_args, args, offset + 4, kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_alpha), 256);
|
||||
if ((arg_alpha < 0) || (256 < arg_alpha)) nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "0 <= alpha <= 256!"));
|
||||
|
||||
const uint16_t *color_palette = NULL;
|
||||
{
|
||||
int palette;
|
||||
|
||||
if (py_helper_keyword_int_maybe(n_args, args, offset + 5, kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_color_palette), &palette)) {
|
||||
if (palette == COLOR_PALETTE_RAINBOW) color_palette = rainbow_table;
|
||||
else if (palette == COLOR_PALETTE_IRONBOW) color_palette = ironbow_table;
|
||||
else nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Invalid pre-defined color palette!"));
|
||||
} else {
|
||||
image_t *arg_color_palette = py_helper_keyword_to_image_mutable_color_palette(n_args, args, offset + 5, kw_args);
|
||||
|
||||
if (arg_color_palette) {
|
||||
if (arg_color_palette->bpp != IMAGE_BPP_RGB565) nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Color palette must be RGB565!"));
|
||||
if ((arg_color_palette->w * arg_color_palette->h) != 256) nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Color palette must be 256 pixels!"));
|
||||
color_palette = (uint16_t *) arg_color_palette->data;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const uint8_t *alpha_palette = NULL;
|
||||
{
|
||||
image_t *arg_alpha_palette = py_helper_keyword_to_image_mutable_alpha_palette(n_args, args, offset + 6, kw_args);
|
||||
|
||||
if (arg_alpha_palette) {
|
||||
if (arg_alpha_palette->bpp != IMAGE_BPP_GRAYSCALE) nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Alpha palette must be GRAYSCALE!"));
|
||||
if ((arg_alpha_palette->w * arg_alpha_palette->h) != 256) nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Alpha palette must be 256 pixels!"));
|
||||
alpha_palette = (uint8_t *) arg_alpha_palette->data;
|
||||
}
|
||||
}
|
||||
const uint16_t *color_palette = py_helper_keyword_color_palette(n_args, args, offset + 5, kw_args, NULL);
|
||||
const uint8_t *alpha_palette = py_helper_keyword_alpha_palette(n_args, args, offset + 6, kw_args, NULL);
|
||||
|
||||
image_hint_t hint = py_helper_keyword_int(n_args, args, offset + 7, kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_hint), 0);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user