Changeset 7120 for trunk/psLib/src/imageops/psImagePixelExtract.c
- Timestamp:
- May 15, 2006, 3:20:09 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/imageops/psImagePixelExtract.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/imageops/psImagePixelExtract.c
r7055 r7120 8 8 * @author Robert DeSonia, MHPCC 9 9 * 10 * @version $Revision: 1. 19$ $Name: not supported by cvs2svn $11 * @date $Date: 2006-05- 03 23:16:16$10 * @version $Revision: 1.20 $ $Name: not supported by cvs2svn $ 11 * @date $Date: 2006-05-16 01:20:09 $ 12 12 * 13 13 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 23 23 #include "psErrorText.h" 24 24 25 #define FUNC_MACRO_VECTOR_STORE_ROW(TYPE) \ 26 static psVector *vectorStoreRow##TYPE(psVector *vec, const psImage *in, int row) \ 27 { \ 28 \ 29 for (int i = 0; i < in->numCols; i++) \ 30 { \ 31 vec->data.TYPE[i] = in->data.TYPE[i][row]; \ 32 } \ 33 return vec; \ 34 } \ 35 36 FUNC_MACRO_VECTOR_STORE_ROW(S8) 37 FUNC_MACRO_VECTOR_STORE_ROW(S16) 38 FUNC_MACRO_VECTOR_STORE_ROW(S32) 39 FUNC_MACRO_VECTOR_STORE_ROW(S64) 40 FUNC_MACRO_VECTOR_STORE_ROW(U8) 41 FUNC_MACRO_VECTOR_STORE_ROW(U16) 42 FUNC_MACRO_VECTOR_STORE_ROW(U32) 43 FUNC_MACRO_VECTOR_STORE_ROW(U64) 44 FUNC_MACRO_VECTOR_STORE_ROW(F32) 45 FUNC_MACRO_VECTOR_STORE_ROW(F64) 46 FUNC_MACRO_VECTOR_STORE_ROW(C32) 47 FUNC_MACRO_VECTOR_STORE_ROW(C64) 25 #define VECTOR_STORE_ROW_CASE(TYPE) \ 26 case PS_TYPE_##TYPE: \ 27 memcpy(out->data.TYPE, input->data.TYPE[row], input->numCols*sizeof(ps##TYPE)); \ 28 break; 48 29 49 30 psVector *psImageRow(psVector *out, … … 106 87 107 88 switch (input->type.type) { 108 case PS_TYPE_S8: 109 out = vectorStoreRowS8(out, input, row); 110 break; 111 case PS_TYPE_S16: 112 out = vectorStoreRowS16(out, input, row); 113 break; 114 case PS_TYPE_S32: 115 out = vectorStoreRowS32(out, input, row); 116 break; 117 case PS_TYPE_S64: 118 out = vectorStoreRowS64(out, input, row); 119 break; 120 case PS_TYPE_U8: 121 out = vectorStoreRowU8(out, input, row); 122 break; 123 case PS_TYPE_U16: 124 out = vectorStoreRowU16(out, input, row); 125 break; 126 case PS_TYPE_U32: 127 out = vectorStoreRowU32(out, input, row); 128 break; 129 case PS_TYPE_U64: 130 out = vectorStoreRowU64(out, input, row); 131 break; 132 case PS_TYPE_F32: 133 out = vectorStoreRowF32(out, input, row); 134 break; 135 case PS_TYPE_F64: 136 out = vectorStoreRowF64(out, input, row); 137 break; 138 case PS_TYPE_C32: 139 out = vectorStoreRowC32(out, input, row); 140 break; 141 case PS_TYPE_C64: 142 out = vectorStoreRowC64(out, input, row); 143 break; 89 VECTOR_STORE_ROW_CASE(S8); 90 VECTOR_STORE_ROW_CASE(S16); 91 VECTOR_STORE_ROW_CASE(S32); 92 VECTOR_STORE_ROW_CASE(S64); 93 VECTOR_STORE_ROW_CASE(U8); 94 VECTOR_STORE_ROW_CASE(U16); 95 VECTOR_STORE_ROW_CASE(U32); 96 VECTOR_STORE_ROW_CASE(U64); 97 VECTOR_STORE_ROW_CASE(F32); 98 VECTOR_STORE_ROW_CASE(F64); 99 VECTOR_STORE_ROW_CASE(C32); 100 VECTOR_STORE_ROW_CASE(C64); 144 101 default: 145 102 psError(PS_ERR_BAD_PARAMETER_TYPE, true, … … 152 109 153 110 154 #define FUNC_MACRO_VECTOR_STORE_COL(TYPE) \ 155 static psVector *vectorStoreCol##TYPE(psVector *vec, const psImage *in, int col) \ 156 { \ 157 \ 158 for (int i = 0; i < in->numRows; i++) \ 159 { \ 160 vec->data.TYPE[i] = in->data.TYPE[col][i]; \ 161 } \ 162 return vec; \ 111 #define VECTOR_STORE_COL_CASE(TYPE) \ 112 case PS_TYPE_##TYPE: \ 113 for (int i = 0; i < in->numRows; i++) { \ 114 out->data.TYPE[i] = input->data.TYPE[i][col]; \ 163 115 } \ 164 165 FUNC_MACRO_VECTOR_STORE_COL(S8) 166 FUNC_MACRO_VECTOR_STORE_COL(S16) 167 FUNC_MACRO_VECTOR_STORE_COL(S32) 168 FUNC_MACRO_VECTOR_STORE_COL(S64) 169 FUNC_MACRO_VECTOR_STORE_COL(U8) 170 FUNC_MACRO_VECTOR_STORE_COL(U16) 171 FUNC_MACRO_VECTOR_STORE_COL(U32) 172 FUNC_MACRO_VECTOR_STORE_COL(U64) 173 FUNC_MACRO_VECTOR_STORE_COL(F32) 174 FUNC_MACRO_VECTOR_STORE_COL(F64) 175 FUNC_MACRO_VECTOR_STORE_COL(C32) 176 FUNC_MACRO_VECTOR_STORE_COL(C64) 177 116 break; 178 117 179 118 psVector *psImageCol(psVector *out, … … 236 175 237 176 switch (input->type.type) { 238 case PS_TYPE_S8: 239 out = vectorStoreColS8(out, input, column); 240 break; 241 case PS_TYPE_S16: 242 out = vectorStoreColS16(out, input, column); 243 break; 244 case PS_TYPE_S32: 245 out = vectorStoreColS32(out, input, column); 246 break; 247 case PS_TYPE_S64: 248 out = vectorStoreColS64(out, input, column); 249 break; 250 case PS_TYPE_U8: 251 out = vectorStoreColU8(out, input, column); 252 break; 253 case PS_TYPE_U16: 254 out = vectorStoreColU16(out, input, column); 255 break; 256 case PS_TYPE_U32: 257 out = vectorStoreColU32(out, input, column); 258 break; 259 case PS_TYPE_U64: 260 out = vectorStoreColU64(out, input, column); 261 break; 262 case PS_TYPE_F32: 263 out = vectorStoreColF32(out, input, column); 264 break; 265 case PS_TYPE_F64: 266 out = vectorStoreColF64(out, input, column); 267 break; 268 case PS_TYPE_C32: 269 out = vectorStoreColC32(out, input, column); 270 break; 271 case PS_TYPE_C64: 272 out = vectorStoreColC64(out, input, column); 273 break; 177 VECTOR_STORE_COL_CASE(S8); 178 VECTOR_STORE_COL_CASE(S16); 179 VECTOR_STORE_COL_CASE(S32); 180 VECTOR_STORE_COL_CASE(S64); 181 VECTOR_STORE_COL_CASE(U8); 182 VECTOR_STORE_COL_CASE(U16); 183 VECTOR_STORE_COL_CASE(U32); 184 VECTOR_STORE_COL_CASE(U64); 185 VECTOR_STORE_COL_CASE(F32); 186 VECTOR_STORE_COL_CASE(F64); 187 VECTOR_STORE_COL_CASE(C32); 188 VECTOR_STORE_COL_CASE(C64); 274 189 default: 275 190 psError(PS_ERR_BAD_PARAMETER_TYPE, true,
Note:
See TracChangeset
for help on using the changeset viewer.
