blur.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include "../tp2.h"
  5. void blur_asm (unsigned char *src, unsigned char *dst, int cols, int filas,
  6. float sigma, int radius);
  7. void blur_c (unsigned char *src, unsigned char *dst, int cols, int filas,
  8. float sigma, int radius);
  9. typedef void (blur_fn_t) (unsigned char*, unsigned char*, int, int, float, int);
  10. typedef struct blur_params_t {
  11. float sigma;
  12. int radius;
  13. } blur_params_t;
  14. blur_params_t extra;
  15. void leer_params_blur(configuracion_t *config, int argc, char *argv[]) {
  16. config->extra_config = &extra;
  17. extra.sigma = atof(argv[argc - 2]);
  18. extra.radius = atoi(argv[argc - 1]);
  19. }
  20. void aplicar_blur(configuracion_t *config)
  21. {
  22. blur_fn_t *blur = SWITCH_C_ASM ( config, blur_c, blur_asm ) ;
  23. buffer_info_t info = config->src;
  24. blur_params_t * extra_params = (blur_params_t *) config->extra_config;
  25. blur(info.bytes, config->dst.bytes, info.width, info.height,
  26. extra_params->sigma, extra_params->radius);
  27. }
  28. void ayuda_blur()
  29. {
  30. printf ( " * blur\n" );
  31. printf ( " Parámetros : \n"
  32. " sigma\n"
  33. " radio\n");
  34. printf ( " Ejemplo de uso : \n"
  35. " blur -i c facil.bmp 0.7 1\n");
  36. }