static int file_to_fb(const char * srcpath) { int ret = -1; BMP_READ * bmp = NULL; struct FB * fb = NULL; int sw, sh; int srcbpp, dstbpp; void * pdata = NULL, * bmpdata = NULL; RGB_CONVERT_FUN convert_func = NULL; do { bmp = bmp_open(srcpath); if (!bmp) { break; } fb = fb_create(0); if (!fb) { break; } sw = bmp_width(bmp); sh = bmp_height(bmp); bmpdata = bmp_data(bmp); srcbpp = bmp_bpp(bmp); dstbpp = fb_bpp(fb); convert_func = get_convert_func(srcbpp, dstbpp); if (convert_func) { pdata = convert_func(bmpdata, sw, sh); bmpdata = pdata; } if (!bmp_forward(bmp)) { line_reversal(bmpdata, sw, sh, dstbpp); } rgb_copy(bmpdata, fb_bits(fb), sw, sh, fb_width(fb), fb_height(fb), dstbpp); ret = 0; } while (0); fb_destory(fb); bmp_close(bmp); if (pdata) { free(pdata); } return ret; }
struct razer_parameter *daemon_copy_parameter(struct razer_parameter *parameter) { struct razer_parameter *copy = daemon_create_parameter(); copy->id = parameter->id; copy->key = str_Copy(parameter->key); copy->description = str_Copy(parameter->description); copy->type = parameter->type; switch(parameter->type) { case RAZER_PARAMETER_TYPE_STRING: daemon_set_parameter_string(copy,str_Copy(daemon_get_parameter_string(parameter))); break; case RAZER_PARAMETER_TYPE_INT: daemon_set_parameter_int(copy,daemon_get_parameter_int(parameter)); break; case RAZER_PARAMETER_TYPE_FLOAT: daemon_set_parameter_float(copy,daemon_get_parameter_float(parameter)); break; case RAZER_PARAMETER_TYPE_RGB: { struct razer_rgb *color = rgb_copy(daemon_get_parameter_rgb(parameter)); daemon_set_parameter_rgb(copy,color); } break; case RAZER_PARAMETER_TYPE_POS: { struct razer_pos *pos = razer_pos_copy(daemon_get_parameter_pos(parameter)); daemon_set_parameter_pos(copy,pos); } break; case RAZER_PARAMETER_TYPE_RENDER_NODE: daemon_set_parameter_render_node(copy,daemon_get_parameter_render_node(parameter)); break; case RAZER_PARAMETER_TYPE_FLOAT_RANGE: { struct razer_float_range *range = razer_float_range_copy(daemon_get_parameter_float_range(parameter)); daemon_set_parameter_float_range(copy,range); } break; case RAZER_PARAMETER_TYPE_INT_RANGE: { struct razer_int_range *range = razer_int_range_copy(daemon_get_parameter_int_range(parameter)); daemon_set_parameter_int_range(copy,range); } break; case RAZER_PARAMETER_TYPE_UINT_RANGE: { struct razer_uint_range *range = razer_uint_range_copy(daemon_get_parameter_uint_range(parameter)); daemon_set_parameter_uint_range(copy,range); } break; case RAZER_PARAMETER_TYPE_RGB_RANGE: { struct razer_rgb_range *range = razer_rgb_range_copy(daemon_get_parameter_rgb_range(parameter)); daemon_set_parameter_rgb_range(copy,range); } break; case RAZER_PARAMETER_TYPE_POS_RANGE: { struct razer_pos_range *range = razer_pos_range_copy(daemon_get_parameter_pos_range(parameter)); daemon_set_parameter_pos_range(copy,range); } break; case RAZER_PARAMETER_TYPE_FLOAT_ARRAY: { struct razer_float_array *array = razer_float_array_copy(daemon_get_parameter_float_array(parameter)); daemon_set_parameter_float_array(copy,array); } break; case RAZER_PARAMETER_TYPE_INT_ARRAY: { struct razer_int_array *array = razer_int_array_copy(daemon_get_parameter_int_array(parameter)); daemon_set_parameter_int_array(copy,array); } break; case RAZER_PARAMETER_TYPE_UINT_ARRAY: { struct razer_uint_array *array = razer_uint_array_copy(daemon_get_parameter_uint_array(parameter)); daemon_set_parameter_uint_array(copy,array); } break; case RAZER_PARAMETER_TYPE_RGB_ARRAY: { struct razer_rgb_array *array = razer_rgb_array_copy(daemon_get_parameter_rgb_array(parameter)); daemon_set_parameter_rgb_array(copy,array); } break; case RAZER_PARAMETER_TYPE_POS_ARRAY: { struct razer_pos_array *array = razer_pos_array_copy(daemon_get_parameter_pos_array(parameter)); daemon_set_parameter_pos_array(copy,array); } break; } return(copy); }