Changeset 16139 for trunk/Ohana/src/libfits/matrix/F_write_M.c
- Timestamp:
- Jan 18, 2008, 2:52:14 PM (19 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/libfits/matrix/F_write_M.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/libfits/matrix/F_write_M.c
r7054 r16139 21 21 int gfits_fwrite_matrix (FILE *f, Matrix *matrix) { 22 22 23 int i, status, nbytes, Nbytes; 24 unsigned char *byte0, *byte1, *byte2, *byte3, *byte4, *byte5, *byte6, *byte7, tmp; 25 int perpix; 23 int status, nbytes, Nbytes; 26 24 27 25 status = TRUE; … … 30 28 if the size is wrong, it probably should simply pad the fwrite statement. 31 29 better policy should be defined (ie, matrix.size always correct blocking?) 32 */30 */ 33 31 34 32 if (matrix[0].size % FT_RECORD_SIZE) … … 39 37 /* this is a bit cumbersome: swap all words, write out file, then swap back... */ 40 38 # ifdef BYTE_SWAP 41 perpix = abs(matrix[0].bitpix) / 8; 42 if (perpix > 1) { 43 byte0 = (unsigned char *) matrix[0].buffer; 44 byte1 = (unsigned char *) matrix[0].buffer + 1; 45 byte2 = (unsigned char *) matrix[0].buffer + 2; 46 byte3 = (unsigned char *) matrix[0].buffer + 3; 47 byte4 = (unsigned char *) matrix[0].buffer + 4; 48 byte5 = (unsigned char *) matrix[0].buffer + 5; 49 byte6 = (unsigned char *) matrix[0].buffer + 6; 50 byte7 = (unsigned char *) matrix[0].buffer + 7; 51 if (perpix == 2) { 52 for (i = 0; i < nbytes; i+=2, byte0 += 2, byte1 += 2) { 53 tmp = *byte0; 54 *byte0 = *byte1; 55 *byte1 = tmp; 39 { 40 int i; 41 unsigned char *byte0, *byte1, *byte2, *byte3, *byte4, *byte5, *byte6, *byte7, tmp; 42 int perpix; 43 44 perpix = abs(matrix[0].bitpix) / 8; 45 if (perpix > 1) { 46 byte0 = (unsigned char *) matrix[0].buffer; 47 byte1 = (unsigned char *) matrix[0].buffer + 1; 48 byte2 = (unsigned char *) matrix[0].buffer + 2; 49 byte3 = (unsigned char *) matrix[0].buffer + 3; 50 byte4 = (unsigned char *) matrix[0].buffer + 4; 51 byte5 = (unsigned char *) matrix[0].buffer + 5; 52 byte6 = (unsigned char *) matrix[0].buffer + 6; 53 byte7 = (unsigned char *) matrix[0].buffer + 7; 54 if (perpix == 2) { 55 for (i = 0; i < nbytes; i+=2, byte0 += 2, byte1 += 2) { 56 tmp = *byte0; 57 *byte0 = *byte1; 58 *byte1 = tmp; 59 } 56 60 } 57 }58 if (perpix == 4) {59 for (i = 0; i < nbytes; i+=4, byte0 += 4, byte1 += 4, byte2 += 4, byte3 += 4) { 60 tmp = *byte0;61 *byte0 = *byte3;62 *byte3 = tmp;63 tmp = *byte1;64 *byte1 = *byte2;65 *byte2 = tmp;61 if (perpix == 4) { 62 for (i = 0; i < nbytes; i+=4, byte0 += 4, byte1 += 4, byte2 += 4, byte3 += 4) { 63 tmp = *byte0; 64 *byte0 = *byte3; 65 *byte3 = tmp; 66 tmp = *byte1; 67 *byte1 = *byte2; 68 *byte2 = tmp; 69 } 66 70 } 67 }68 if (perpix == 8) {69 for (i = 0; i < nbytes; i+=8, byte0 += 8, byte1 += 8, byte2 += 8, byte3 += 8, byte4 += 8, byte5 += 8, byte6 += 8, byte7 += 8) { 70 tmp = *byte0;71 *byte0 = *byte7;72 *byte7 = tmp;73 tmp = *byte1;74 *byte1 = *byte6;75 *byte6 = tmp;76 tmp = *byte1;77 *byte2 = *byte5;78 *byte5 = tmp;79 tmp = *byte1;80 *byte3 = *byte4;81 *byte4 = tmp;71 if (perpix == 8) { 72 for (i = 0; i < nbytes; i+=8, byte0 += 8, byte1 += 8, byte2 += 8, byte3 += 8, byte4 += 8, byte5 += 8, byte6 += 8, byte7 += 8) { 73 tmp = *byte0; 74 *byte0 = *byte7; 75 *byte7 = tmp; 76 tmp = *byte1; 77 *byte1 = *byte6; 78 *byte6 = tmp; 79 tmp = *byte1; 80 *byte2 = *byte5; 81 *byte5 = tmp; 82 tmp = *byte1; 83 *byte3 = *byte4; 84 *byte4 = tmp; 85 } 82 86 } 83 87 } … … 90 94 } 91 95 92 # ifdef BYTE_SWAP 93 perpix = abs(matrix[0].bitpix) / 8; 94 if (perpix > 1) { 95 byte0 = (unsigned char *) matrix[0].buffer; 96 byte1 = (unsigned char *) matrix[0].buffer + 1; 97 byte2 = (unsigned char *) matrix[0].buffer + 2; 98 byte3 = (unsigned char *) matrix[0].buffer + 3; 99 byte4 = (unsigned char *) matrix[0].buffer + 4; 100 byte5 = (unsigned char *) matrix[0].buffer + 5; 101 byte6 = (unsigned char *) matrix[0].buffer + 6; 102 byte7 = (unsigned char *) matrix[0].buffer + 7; 103 if (perpix == 2) { 104 for (i = 0; i < nbytes; i+=2, byte0 += 2, byte1 += 2) { 105 tmp = *byte0; 106 *byte0 = *byte1; 107 *byte1 = tmp; 96 # ifdef BYTE_SWAP 97 { 98 int i; 99 unsigned char *byte0, *byte1, *byte2, *byte3, *byte4, *byte5, *byte6, *byte7, tmp; 100 int perpix; 101 102 perpix = abs(matrix[0].bitpix) / 8; 103 if (perpix > 1) { 104 byte0 = (unsigned char *) matrix[0].buffer; 105 byte1 = (unsigned char *) matrix[0].buffer + 1; 106 byte2 = (unsigned char *) matrix[0].buffer + 2; 107 byte3 = (unsigned char *) matrix[0].buffer + 3; 108 byte4 = (unsigned char *) matrix[0].buffer + 4; 109 byte5 = (unsigned char *) matrix[0].buffer + 5; 110 byte6 = (unsigned char *) matrix[0].buffer + 6; 111 byte7 = (unsigned char *) matrix[0].buffer + 7; 112 if (perpix == 2) { 113 for (i = 0; i < nbytes; i+=2, byte0 += 2, byte1 += 2) { 114 tmp = *byte0; 115 *byte0 = *byte1; 116 *byte1 = tmp; 117 } 108 118 } 109 }110 if (perpix == 4) {111 for (i = 0; i < nbytes; i+=4, byte0 += 4, byte1 += 4, byte2 += 4, byte3 += 4) { 112 tmp = *byte0;113 *byte0 = *byte3;114 *byte3 = tmp;115 tmp = *byte1;116 *byte1 = *byte2;117 *byte2 = tmp;119 if (perpix == 4) { 120 for (i = 0; i < nbytes; i+=4, byte0 += 4, byte1 += 4, byte2 += 4, byte3 += 4) { 121 tmp = *byte0; 122 *byte0 = *byte3; 123 *byte3 = tmp; 124 tmp = *byte1; 125 *byte1 = *byte2; 126 *byte2 = tmp; 127 } 118 128 } 119 }120 if (perpix == 8) {121 for (i = 0; i < nbytes; i+=8, byte0 += 8, byte1 += 8, byte2 += 8, byte3 += 8, byte4 += 8, byte5 += 8, byte6 += 8, byte7 += 8) { 122 tmp = *byte0;123 *byte0 = *byte7;124 *byte7 = tmp;125 tmp = *byte1;126 *byte1 = *byte6;127 *byte6 = tmp;128 tmp = *byte1;129 *byte2 = *byte5;130 *byte5 = tmp;131 tmp = *byte1;132 *byte3 = *byte4;133 *byte4 = tmp;129 if (perpix == 8) { 130 for (i = 0; i < nbytes; i+=8, byte0 += 8, byte1 += 8, byte2 += 8, byte3 += 8, byte4 += 8, byte5 += 8, byte6 += 8, byte7 += 8) { 131 tmp = *byte0; 132 *byte0 = *byte7; 133 *byte7 = tmp; 134 tmp = *byte1; 135 *byte1 = *byte6; 136 *byte6 = tmp; 137 tmp = *byte1; 138 *byte2 = *byte5; 139 *byte5 = tmp; 140 tmp = *byte1; 141 *byte3 = *byte4; 142 *byte4 = tmp; 143 } 134 144 } 135 145 }
Note:
See TracChangeset
for help on using the changeset viewer.
