/* Convert an FT_STRING using a callback function */ static gboolean string_walk(GList* arg1list, GList **retval, gchar(*conv_func)(gchar)) { GList *arg1; fvalue_t *arg_fvalue; fvalue_t *new_ft_string; char *s, *c; arg1 = arg1list; while (arg1) { arg_fvalue = (fvalue_t *)arg1->data; /* XXX - it would be nice to handle FT_TVBUFF, too */ if (IS_FT_STRING(fvalue_type_ftenum(arg_fvalue))) { s = (char *)ep_strdup((gchar *)fvalue_get(arg_fvalue)); for (c = s; *c; c++) { /**c = string_ascii_to_lower(*c);*/ *c = conv_func(*c); } new_ft_string = fvalue_new(FT_STRING); fvalue_set_string(new_ft_string, s); *retval = g_list_append(*retval, new_ft_string); } arg1 = arg1->next; } return TRUE; }
/* API: Aligned complex-complex */ int convolve_complex(float *x, int x_len, float *h, int h_len, float *y, int y_len, int start, int len, int step, int offset) { void (*conv_func)(float *, float *, float *, int, int) = NULL; if (bounds_check(x_len, h_len, y_len, start, len, step) < 0) return -1; memset(y, 0, len * 2 * sizeof(float)); #ifdef HAVE_NEON if (step <= 4 && !(h_len % 4)) conv_func = neon_conv_cmplx_4n; #endif if (conv_func) { conv_func(&x[2 * (-(h_len - 1) + start)], h, y, h_len, len); } else { _base_convolve_complex(x, x_len, h, h_len, y, y_len, start, len, step, offset); } return len; }
/* Convert an FT_STRING using a callback function */ static gboolean string_walk(GList* arg1list, GList **retval, gchar(*conv_func)(gchar)) { GList *arg1; fvalue_t *arg_fvalue; fvalue_t *new_ft_string; char *s, *c; arg1 = arg1list; while (arg1) { arg_fvalue = arg1->data; switch (fvalue_ftype(arg_fvalue)->ftype) { case FT_STRING: s = ep_strdup(fvalue_get(arg1->data)); for (c = s; *c; c++) { /**c = string_ascii_to_lower(*c);*/ *c = conv_func(*c); } new_ft_string = fvalue_new(FT_STRING); fvalue_set(new_ft_string, s, FALSE); *retval = g_list_append(*retval, new_ft_string); break; /* XXX - it would be nice to handle FT_TVBUFF, too */ default: break; } arg1 = arg1->next; } return TRUE; }
PyObject *PyList_fromList(LIST *list, void *convertor) { PyObject *pylist = PyList_New(0); PyObject *(*conv_func)(void *) = convertor; LIST_ITERATOR *list_i = newListIterator(list); void *elem = NULL; ITERATE_LIST(elem, list_i) { PyObject *pyelem = conv_func(elem); PyList_Append(pylist, pyelem); Py_DECREF(pyelem); } deleteListIterator(list_i);
void convert_all(void (*conv_func)(void)) { gint CurrentPage, i; if (!OpenedFilesCnt) return; CurrentPage = gtk_notebook_get_current_page (GTK_NOTEBOOK(MainNotebook)); for (i = 0; i < OpenedFilesCnt; i++) if (!FPROPS(CurrentPage, ReadOnly)) { gtk_notebook_set_page (GTK_NOTEBOOK(MainNotebook), i); conv_func (); } gtk_notebook_set_page (GTK_NOTEBOOK(MainNotebook), CurrentPage); }
/* API: Aligned complex-real */ int convolve_real(float *x, int x_len, float *h, int h_len, float *y, int y_len, int start, int len, int step, int offset) { void (*conv_func)(float *, float *, float *, int) = NULL; if (bounds_check(x_len, h_len, y_len, start, len, step) < 0) return -1; memset(y, 0, len * 2 * sizeof(float)); #ifdef HAVE_NEON if (step <= 4) { switch (h_len) { case 4: conv_func = neon_conv_real4; break; case 8: conv_func = neon_conv_real8; break; case 12: conv_func = neon_conv_real12; break; case 16: conv_func = neon_conv_real16; break; case 20: conv_func = neon_conv_real20; break; } } #endif if (conv_func) { conv_func(&x[2 * (-(h_len - 1) + start)], h, y, len); } else { _base_convolve_real(x, x_len, h, h_len, y, y_len, start, len, step, offset); } return len; }
void evas_fb_outbuf_fb_push_updated_region(Outbuf *buf, RGBA_Image *update, int x, int y, int w, int h) { if (!buf->priv.fb.fb) return; if (buf->priv.back_buf) { if (update != buf->priv.back_buf) evas_common_blit_rectangle(update, buf->priv.back_buf, 0, 0, w, h, x, y); evas_fb_outbuf_fb_update(buf, x, y, w, h); } else { Gfx_Func_Convert conv_func; DATA8 *data; data = NULL; conv_func = NULL; if (buf->rot == 0) { data = (DATA8 *)buf->priv.fb.fb->mem + buf->priv.fb.fb->mem_offset + buf->priv.fb.fb->bpp * (x + (y * buf->priv.fb.fb->width)); conv_func = evas_common_convert_func_get(data, w, h, buf->priv.fb.fb->fb_var.bits_per_pixel, buf->priv.mask.r, buf->priv.mask.g, buf->priv.mask.b, PAL_MODE_NONE, buf->rot); } else if (buf->rot == 180) { data = (DATA8 *)buf->priv.fb.fb->mem + buf->priv.fb.fb->mem_offset + buf->priv.fb.fb->bpp * (buf->w - x - w + ((buf->h - y - h) * buf->priv.fb.fb->width)); conv_func = evas_common_convert_func_get(data, w, h, buf->priv.fb.fb->fb_var.bits_per_pixel, buf->priv.mask.r, buf->priv.mask.g, buf->priv.mask.b, PAL_MODE_NONE, buf->rot); } else if (buf->rot == 270) { data = (DATA8 *)buf->priv.fb.fb->mem + buf->priv.fb.fb->mem_offset + buf->priv.fb.fb->bpp * (buf->h - y - h + (x * buf->priv.fb.fb->width)); conv_func = evas_common_convert_func_get(data, h, w, buf->priv.fb.fb->fb_var.bits_per_pixel, buf->priv.mask.r, buf->priv.mask.g, buf->priv.mask.b, PAL_MODE_NONE, buf->rot); } else if (buf->rot == 90) { data = (DATA8 *)buf->priv.fb.fb->mem + buf->priv.fb.fb->mem_offset + buf->priv.fb.fb->bpp * (y + ((buf->w - x - w) * buf->priv.fb.fb->width)); conv_func = evas_common_convert_func_get(data, h, w, buf->priv.fb.fb->fb_var.bits_per_pixel, buf->priv.mask.r, buf->priv.mask.g, buf->priv.mask.b, PAL_MODE_NONE, buf->rot); } if (conv_func) { DATA32 *src_data; src_data = update->image.data; if (buf->rot == 0 || buf->rot == 180) { conv_func(src_data, data, 0, buf->priv.fb.fb->width - w, w, h, x, y, NULL); } else if (buf->rot == 90 || buf->rot == 270) { conv_func(src_data, data, 0, buf->priv.fb.fb->width - h, h, w, x, y, NULL); } } } }
void evas_fb_outbuf_fb_update(Outbuf *buf, int x, int y, int w, int h) { if (!(buf->priv.back_buf)) return; if (buf->priv.fb.fb) { Gfx_Func_Convert conv_func; DATA8 *data; data = NULL; conv_func = NULL; if (buf->rot == 0) { data = (DATA8 *)buf->priv.fb.fb->mem + buf->priv.fb.fb->mem_offset + buf->priv.fb.fb->bpp * (x + (y * buf->priv.fb.fb->width)); conv_func = evas_common_convert_func_get(data, w, h, buf->priv.fb.fb->fb_var.bits_per_pixel, buf->priv.mask.r, buf->priv.mask.g, buf->priv.mask.b, PAL_MODE_NONE, buf->rot); } else if (buf->rot == 180) { data = (DATA8 *)buf->priv.fb.fb->mem + buf->priv.fb.fb->mem_offset + buf->priv.fb.fb->bpp * (buf->w - x - w + ((buf->h - y - h) * buf->priv.fb.fb->width)); conv_func = evas_common_convert_func_get(data, w, h, buf->priv.fb.fb->fb_var.bits_per_pixel, buf->priv.mask.r, buf->priv.mask.g, buf->priv.mask.b, PAL_MODE_NONE, buf->rot); } else if (buf->rot == 270) { data = (DATA8 *)buf->priv.fb.fb->mem + buf->priv.fb.fb->mem_offset + buf->priv.fb.fb->bpp * (buf->h - y - h + (x * buf->priv.fb.fb->width)); conv_func = evas_common_convert_func_get(data, h, w, buf->priv.fb.fb->fb_var.bits_per_pixel, buf->priv.mask.r, buf->priv.mask.g, buf->priv.mask.b, PAL_MODE_NONE, buf->rot); } else if (buf->rot == 90) { data = (DATA8 *)buf->priv.fb.fb->mem + buf->priv.fb.fb->mem_offset + buf->priv.fb.fb->bpp * (y + ((buf->w - x - w) * buf->priv.fb.fb->width)); conv_func = evas_common_convert_func_get(data, h, w, buf->priv.fb.fb->fb_var.bits_per_pixel, buf->priv.mask.r, buf->priv.mask.g, buf->priv.mask.b, PAL_MODE_NONE, buf->rot); } if (conv_func) { DATA32 *src_data; src_data = buf->priv.back_buf->image.data + (y * buf->w) + x; if (buf->rot == 0 || buf->rot == 180) { conv_func(src_data, data, buf->w - w, buf->priv.fb.fb->width - w, w, h, x, y, NULL); } else if (buf->rot == 90 || buf->rot == 270) { conv_func(src_data, data, buf->w - w, buf->priv.fb.fb->width - h, h, w, x, y, NULL); } } } }