graphics.c 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. #ifdef __cplusplus
  2. extern "C" {
  3. #endif
  4. //===============================================================================================================================================================================================================200
  5. // INCLUDE/DEFINE
  6. //===============================================================================================================================================================================================================200
  7. //======================================================================================================================================================150
  8. // Libraries
  9. //======================================================================================================================================================150
  10. // #include <stdlib.h>
  11. // #include <string.h>
  12. #include <stdio.h>
  13. // #include <math.h>
  14. // #include <time.h>
  15. // #include <sys/types.h>
  16. // #include <dirent.h>
  17. // #include <errno.h>
  18. //======================================================================================================================================================150
  19. // Define
  20. //======================================================================================================================================================150
  21. #define fp float
  22. //======================================================================================================================================================150
  23. // Header File
  24. //======================================================================================================================================================150
  25. #include "./graphics.h"
  26. //======================================================================================================================================================150
  27. // End
  28. //======================================================================================================================================================150
  29. //===============================================================================================================================================================================================================200
  30. // WRITE FUNCTION
  31. //===============================================================================================================================================================================================================200
  32. void
  33. write_graphics( char* filename,
  34. fp* input,
  35. int data_rows,
  36. int data_cols,
  37. int major,
  38. int data_range){
  39. //================================================================================80
  40. // VARIABLES
  41. //================================================================================80
  42. FILE* fid;
  43. int i, j;
  44. //================================================================================80
  45. // CREATE/OPEN FILE FOR WRITING
  46. //================================================================================80
  47. fid = fopen(filename, "w");
  48. if( fid == NULL ){
  49. printf( "The file was not created/opened for writing\n" );
  50. return;
  51. }
  52. //================================================================================80
  53. // WRITE PGM FILE HEADER
  54. //================================================================================80
  55. fprintf(fid, "P2\n");
  56. fprintf(fid, "%d %d\n", data_cols, data_rows);
  57. fprintf(fid, "%d\n", data_range);
  58. //================================================================================80
  59. // WRITE VALUES TO THE FILE
  60. //================================================================================80
  61. // if matrix is saved row major in memory (C)
  62. if(major==0){
  63. for(i=0; i<data_rows; i++){
  64. for(j=0; j<data_cols; j++){
  65. fprintf(fid, "%d ", (int)input[i*data_cols+j]);
  66. }
  67. fprintf(fid, "\n");
  68. }
  69. }
  70. // if matrix is saved column major in memory (MATLAB)
  71. else{
  72. for(i=0; i<data_rows; i++){
  73. for(j=0; j<data_cols; j++){
  74. fprintf(fid, "%d ", (int)input[j*data_rows+i]);
  75. }
  76. fprintf(fid, "\n");
  77. }
  78. }
  79. //================================================================================80
  80. // CLOSE FILE
  81. //================================================================================80
  82. fclose(fid);
  83. }
  84. //===============================================================================================================================================================================================================200
  85. // READ FUNCTION
  86. //===============================================================================================================================================================================================================200
  87. void
  88. read_graphics( char* filename,
  89. fp* input,
  90. int data_rows,
  91. int data_cols,
  92. int major){
  93. //================================================================================80
  94. // VARIABLES
  95. //================================================================================80
  96. FILE* fid;
  97. int i, j;
  98. char c;
  99. int temp;
  100. //================================================================================80
  101. // OPEN FILE FOR READING
  102. //================================================================================80
  103. fid = fopen(filename, "r");
  104. if( fid == NULL ){
  105. printf( "The file was not opened for reading\n" );
  106. return;
  107. }
  108. //================================================================================80
  109. // SKIP PGM FILE HEADER
  110. //================================================================================80
  111. i = 0;
  112. while(i<3){
  113. c = fgetc(fid);
  114. if(c == '\n'){
  115. i = i+1;
  116. }
  117. };
  118. //================================================================================80
  119. // READ VALUES FROM THE FILE
  120. //================================================================================80
  121. if(major==0){ // if matrix is saved row major in memory (C)
  122. for(i=0; i<data_rows; i++){
  123. for(j=0; j<data_cols; j++){
  124. fscanf(fid, "%d", &temp);
  125. input[i*data_cols+j] = (fp)temp;
  126. }
  127. }
  128. }
  129. else{ // if matrix is saved column major in memory (MATLAB)
  130. for(i=0; i<data_rows; i++){
  131. for(j=0; j<data_cols; j++){
  132. fscanf(fid, "%d", &temp);
  133. input[j*data_rows+i] = (fp)temp;
  134. }
  135. }
  136. }
  137. //================================================================================80
  138. // CLOSE FILE
  139. //================================================================================80
  140. fclose(fid);
  141. }
  142. //===============================================================================================================================================================================================================200
  143. // End
  144. //===============================================================================================================================================================================================================200
  145. #ifdef __cplusplus
  146. }
  147. #endif
  148. //===============================================================================================================================================================================================================200
  149. // End
  150. //===============================================================================================================================================================================================================200