Move helper functions to new files.

This commit is contained in:
iabdalkader 2016-02-22 18:41:50 +02:00
parent 0f48c12a89
commit 5860695f5d
5 changed files with 82 additions and 65 deletions

View File

@ -152,6 +152,7 @@ OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/img/,\
) )
OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/py/, \ OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/py/, \
py_helper.o \
py_sensor.o \ py_sensor.o \
py_image.o \ py_image.o \
py_time.o \ py_time.o \

View File

@ -55,6 +55,7 @@ SRCS += $(addprefix img/, \
) )
SRCS += $(addprefix py/, \ SRCS += $(addprefix py/, \
py_helper.c \
py_sensor.c \ py_sensor.c \
py_image.c \ py_image.c \
py_time.c \ py_time.c \

62
src/omv/py/py_helper.c Normal file
View File

@ -0,0 +1,62 @@
#include "mp.h"
#include "imlib.h"
#include "py_helper.h"
int get_int_kw(mp_map_t *kw_args, mp_obj_t kw, int default_val)
{
mp_map_elem_t *kw_arg = mp_map_lookup(kw_args, kw, MP_MAP_LOOKUP);
if (kw_arg != NULL) {
default_val = mp_obj_get_int(kw_arg->value);
}
return default_val;
}
float get_float_kw(mp_map_t *kw_args, mp_obj_t kw, float default_val)
{
mp_map_elem_t *kw_arg = mp_map_lookup(kw_args, kw, MP_MAP_LOOKUP);
if (kw_arg != NULL) {
default_val = mp_obj_get_float(kw_arg->value);
}
return default_val;
}
int get_color_kw(mp_map_t *kw_args, int default_color)
{
mp_map_elem_t *kw_color = mp_map_lookup(kw_args,
MP_OBJ_NEW_QSTR(MP_QSTR_color), MP_MAP_LOOKUP);
if (kw_color != NULL) {
if (mp_obj_is_integer(kw_color->value)) {
default_color = mp_obj_get_int(kw_color->value);
} else {
mp_obj_t *arg_color;
mp_obj_get_array_fixed_n(kw_color->value, 3, &arg_color);
default_color = IM_RGB565(IM_R825(mp_obj_get_int(arg_color[0])),
IM_G826(mp_obj_get_int(arg_color[1])),
IM_B825(mp_obj_get_int(arg_color[2])));
}
}
return default_color;
}
void get_rectangle_kw(mp_map_t *kw_args, image_t *img, rectangle_t *r)
{
mp_map_elem_t *kw_rectangle = mp_map_lookup(kw_args,
MP_OBJ_NEW_QSTR(MP_QSTR_roi), MP_MAP_LOOKUP);
if (kw_rectangle == NULL) {
r->x = 0;
r->y = 0;
r->w = img->w;
r->h = img->h;
} else {
mp_obj_t *arg_rectangle;
mp_obj_get_array_fixed_n(kw_rectangle->value, 4, &arg_rectangle);
r->x = mp_obj_get_int(arg_rectangle[0]);
r->y = mp_obj_get_int(arg_rectangle[1]);
r->w = mp_obj_get_int(arg_rectangle[2]);
r->h = mp_obj_get_int(arg_rectangle[3]);
}
}

15
src/omv/py/py_helper.h Normal file
View File

@ -0,0 +1,15 @@
/*
* This file is part of the OpenMV project.
* Copyright (c) 2013/2014 Ibrahim Abdelkader <i.abdalkader@gmail.com>
* This work is licensed under the MIT license, see the file LICENSE for details.
*
* MicroPython helper functions.
*
*/
#ifndef __PY_HELPER_H__
#define __PY_HELPER_H__
int get_int_kw(mp_map_t *kw_args, mp_obj_t kw, int default_val);
float get_float_kw(mp_map_t *kw_args, mp_obj_t kw, float default_val);
int get_color_kw(mp_map_t *kw_args, int default_color);
void get_rectangle_kw(mp_map_t *kw_args, image_t *img, rectangle_t *r);
#endif // __PY_HELPER__

View File

@ -12,9 +12,10 @@
#include "sensor.h" #include "sensor.h"
#include "ff.h" #include "ff.h"
#include "xalloc.h" #include "xalloc.h"
#include "py_assert.h"
#include "py_image.h"
#include "arm_math.h" #include "arm_math.h"
#include "py_assert.h"
#include "py_helper.h"
#include "py_image.h"
#include "omv_boardconfig.h" #include "omv_boardconfig.h"
#define JPEG_INIT_BUF (5*1024) #define JPEG_INIT_BUF (5*1024)
@ -156,69 +157,6 @@ static mp_obj_t py_image_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t va
} }
} }
// Start Helper Functions /////////////////////////////////////////////////////
static int get_int_kw(mp_map_t *kw_args, mp_obj_t kw, int default_val)
{
mp_map_elem_t *kw_arg = mp_map_lookup(kw_args, kw, MP_MAP_LOOKUP);
if (kw_arg != NULL) {
default_val = mp_obj_get_int(kw_arg->value);
}
return default_val;
}
static float get_float_kw(mp_map_t *kw_args, mp_obj_t kw, float default_val)
{
mp_map_elem_t *kw_arg = mp_map_lookup(kw_args, kw, MP_MAP_LOOKUP);
if (kw_arg != NULL) {
default_val = mp_obj_get_float(kw_arg->value);
}
return default_val;
}
static int get_color_kw(mp_map_t *kw_args, int default_color)
{
mp_map_elem_t *kw_color = mp_map_lookup(kw_args,
MP_OBJ_NEW_QSTR(MP_QSTR_color), MP_MAP_LOOKUP);
if (kw_color != NULL) {
if (mp_obj_is_integer(kw_color->value)) {
default_color = mp_obj_get_int(kw_color->value);
} else {
mp_obj_t *arg_color;
mp_obj_get_array_fixed_n(kw_color->value, 3, &arg_color);
default_color = IM_RGB565(IM_R825(mp_obj_get_int(arg_color[0])),
IM_G826(mp_obj_get_int(arg_color[1])),
IM_B825(mp_obj_get_int(arg_color[2])));
}
}
return default_color;
}
static void get_rectangle_kw(mp_map_t *kw_args, image_t *img, rectangle_t *r)
{
mp_map_elem_t *kw_rectangle = mp_map_lookup(kw_args,
MP_OBJ_NEW_QSTR(MP_QSTR_roi), MP_MAP_LOOKUP);
if (kw_rectangle == NULL) {
r->x = 0;
r->y = 0;
r->w = img->w;
r->h = img->h;
} else {
mp_obj_t *arg_rectangle;
mp_obj_get_array_fixed_n(kw_rectangle->value, 4, &arg_rectangle);
r->x = mp_obj_get_int(arg_rectangle[0]);
r->y = mp_obj_get_int(arg_rectangle[1]);
r->w = mp_obj_get_int(arg_rectangle[2]);
r->h = mp_obj_get_int(arg_rectangle[3]);
}
}
// End Helper Functions ///////////////////////////////////////////////////////
static mp_obj_t py_image_width(mp_obj_t img_obj) static mp_obj_t py_image_width(mp_obj_t img_obj)
{ {
image_t *arg_img = py_image_cobj(img_obj); image_t *arg_img = py_image_cobj(img_obj);