resize.c 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #ifdef __cplusplus
  2. extern "C" {
  3. #endif
  4. //===============================================================================================================================================================================================================200
  5. // INCLUDE/DEFINE
  6. //===============================================================================================================================================================================================================200
  7. //======================================================================================================================================================150
  8. // Define
  9. //======================================================================================================================================================150
  10. #define fp float
  11. //======================================================================================================================================================150
  12. // Header File
  13. //======================================================================================================================================================150
  14. #include "./resize.h"
  15. //======================================================================================================================================================150
  16. // End
  17. //======================================================================================================================================================150
  18. //===============================================================================================================================================================================================================200
  19. // RESIZE FUNCTION
  20. //===============================================================================================================================================================================================================200
  21. void
  22. resize( fp* input,
  23. int input_rows,
  24. int input_cols,
  25. fp* output,
  26. int output_rows,
  27. int output_cols,
  28. int major){
  29. //================================================================================80
  30. // VARIABLES
  31. //================================================================================80
  32. int i, j;
  33. int i2, j2;
  34. //================================================================================80
  35. // COMPUTATION
  36. //================================================================================80
  37. //============================================================60
  38. // ROW MAJOR
  39. //============================================================60
  40. if(major == 0){ // do if data is saved row major
  41. for(i=0, i2=0; i<output_rows; i++, i2++){
  42. if(i2>=input_rows){
  43. i2 = i2 - input_rows;
  44. }
  45. for(j=0, j2=0; j<output_cols; j++, j2++){
  46. if(j2>=input_cols){
  47. j2 = j2 - input_cols;
  48. }
  49. output[i*output_cols+j] = input[i2*input_cols+j2];
  50. }
  51. }
  52. }
  53. //============================================================60
  54. // COLUMN MAJOR
  55. //============================================================60
  56. else{ // do if data is saved column major
  57. for(j=0, j2=0; j<output_cols; j++, j2++){
  58. if(j2>=input_cols){
  59. j2 = j2 - input_cols;
  60. }
  61. for(i=0, i2=0; i<output_rows; i++, i2++){
  62. if(i2>=input_rows){
  63. i2 = i2 - input_rows;
  64. }
  65. output[j*output_rows+i] = input[j2*input_rows+i2];
  66. }
  67. }
  68. }
  69. }
  70. //===============================================================================================================================================================================================================200
  71. // END
  72. //===============================================================================================================================================================================================================200
  73. #ifdef __cplusplus
  74. }
  75. #endif