Allow image loading directly to FB.

* Allows bigger images to be loaded to FB.
This commit is contained in:
iabdalkader 2016-12-14 18:44:23 +02:00
parent cafddfed17
commit 1645ab94b2

View File

@ -225,6 +225,7 @@ static mp_obj_t py_image_save(uint n_args, const mp_obj_t *args, mp_map_t *kw_ar
return mp_const_none; return mp_const_none;
} }
// TODO fix FB_JPEG_OFFS_SIZE
static mp_obj_t py_image_compress(uint n_args, const mp_obj_t *args, mp_map_t *kw_args) static mp_obj_t py_image_compress(uint n_args, const mp_obj_t *args, mp_map_t *kw_args)
{ {
image_t *arg_img = py_image_cobj(args[0]); image_t *arg_img = py_image_cobj(args[0]);
@ -1681,11 +1682,24 @@ mp_obj_t py_image_grayscale_to_rgb(mp_obj_t not_tuple)
mp_obj_new_int(rgb_color.blue)}); mp_obj_new_int(rgb_color.blue)});
} }
mp_obj_t py_image_load_image(mp_obj_t path_obj) mp_obj_t py_image_load_image(uint n_args, const mp_obj_t *args, mp_map_t *kw_args)
{ {
mp_obj_t image_obj = py_image(0, 0, 0, 0); image_t image = {0};
imlib_load_image(py_image_cobj(image_obj), mp_obj_str_get_str(path_obj)); const char *path = mp_obj_str_get_str(args[0]);
return image_obj; int copy_to_fb = py_helper_lookup_int(kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_copy_to_fb), false);
if (copy_to_fb) {
image.pixels = MAIN_FB()->pixels;
}
imlib_load_image(&image, path);
if (copy_to_fb) {
fb->w = image.w;
fb->h = image.h;
fb->bpp = image.bpp;
}
return py_image_from_struct(&image);
} }
mp_obj_t py_image_load_cascade(uint n_args, const mp_obj_t *args, mp_map_t *kw_args) mp_obj_t py_image_load_cascade(uint n_args, const mp_obj_t *args, mp_map_t *kw_args)
@ -1875,7 +1889,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_image_lab_to_rgb_obj, py_image_lab_to_rgb);
STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_image_rgb_to_grayscale_obj, py_image_rgb_to_grayscale); STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_image_rgb_to_grayscale_obj, py_image_rgb_to_grayscale);
STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_image_grayscale_to_rgb_obj, py_image_grayscale_to_rgb); STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_image_grayscale_to_rgb_obj, py_image_grayscale_to_rgb);
/* Image Module Functions */ /* Image Module Functions */
STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_image_load_image_obj, py_image_load_image); STATIC MP_DEFINE_CONST_FUN_OBJ_KW(py_image_load_image_obj, 1, py_image_load_image);
STATIC MP_DEFINE_CONST_FUN_OBJ_KW(py_image_load_cascade_obj, 1, py_image_load_cascade); STATIC MP_DEFINE_CONST_FUN_OBJ_KW(py_image_load_cascade_obj, 1, py_image_load_cascade);
STATIC MP_DEFINE_CONST_FUN_OBJ_KW(py_image_load_descriptor_obj, 2, py_image_load_descriptor); STATIC MP_DEFINE_CONST_FUN_OBJ_KW(py_image_load_descriptor_obj, 2, py_image_load_descriptor);
STATIC MP_DEFINE_CONST_FUN_OBJ_KW(py_image_save_descriptor_obj, 3, py_image_save_descriptor); STATIC MP_DEFINE_CONST_FUN_OBJ_KW(py_image_save_descriptor_obj, 3, py_image_save_descriptor);