filters.c 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /*
  2. * r.in.lidar filtering functions
  3. *
  4. * Copyright 2011-2015 by Markus Metz, and The GRASS Development Team
  5. * Authors:
  6. * Markus Metz (r.in.lidar)
  7. * Vaclav Petras (move code to a separate files)
  8. *
  9. * This program is free software licensed under the GPL (>=v2).
  10. * Read the COPYING file that comes with GRASS for details.
  11. *
  12. */
  13. #include "local_proto.h"
  14. #include "filters.h"
  15. #include <stdlib.h>
  16. #include <grass/gis.h>
  17. int return_filter_is_out(struct ReturnFilter *return_filter, int return_n,
  18. int n_returns)
  19. {
  20. if (return_filter->filter == LAS_ALL)
  21. return FALSE;
  22. int skipme = 1;
  23. switch (return_filter->filter) {
  24. case LAS_FIRST:
  25. if (return_n == 1)
  26. skipme = 0;
  27. break;
  28. case LAS_MID:
  29. if (return_n > 1 && return_n < n_returns)
  30. skipme = 0;
  31. break;
  32. case LAS_LAST:
  33. if (n_returns > 1 && return_n == n_returns)
  34. skipme = 0;
  35. break;
  36. }
  37. if (skipme)
  38. return TRUE;
  39. return FALSE;
  40. }
  41. void class_filter_create_from_strings(struct ClassFilter *class_filter,
  42. char **classes)
  43. {
  44. class_filter->str_classes = classes;
  45. }
  46. int class_filter_is_out(struct ClassFilter *class_filter, int class_n)
  47. {
  48. if (!class_filter->str_classes)
  49. return FALSE;
  50. int i = 0;
  51. int skipme = TRUE;
  52. while (class_filter->str_classes[i]) {
  53. if (class_n == atoi(class_filter->str_classes[i])) {
  54. skipme = FALSE;
  55. break;
  56. }
  57. i++;
  58. }
  59. if (skipme)
  60. return TRUE;
  61. return FALSE;
  62. }