Changeset 2067
- Timestamp:
- Oct 12, 2004, 2:10:50 PM (22 years ago)
- Location:
- trunk/psLib
- Files:
-
- 10 edited
-
src/astronomy/psAstrometry.c (modified) (7 diffs)
-
src/image/psImage.c (modified) (2 diffs)
-
src/image/psImage.h (modified) (2 diffs)
-
src/image/psImageExtraction.c (modified) (3 diffs)
-
src/image/psImageExtraction.h (modified) (2 diffs)
-
src/mathtypes/psImage.c (modified) (2 diffs)
-
src/mathtypes/psImage.h (modified) (2 diffs)
-
test/astronomy/tst_psAstrometry.c (modified) (6 diffs)
-
test/astronomy/tst_psAstrometry03.c (modified) (1 diff)
-
test/image/tst_psImageExtraction.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/astronomy/psAstrometry.c
r2061 r2067 8 8 * @author George Gusciora, MHPCC 9 9 * 10 * @version $Revision: 1.3 6$ $Name: not supported by cvs2svn $11 * @date $Date: 2004-10-1 2 21:10:41$10 * @version $Revision: 1.37 $ $Name: not supported by cvs2svn $ 11 * @date $Date: 2004-10-13 00:10:50 $ 12 12 * 13 13 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 151 151 if (chip != NULL) { 152 152 psFree(chip->cells); 153 psFree(chip->parent);154 153 psFree(chip->metadata); 155 154 psFree(chip->toFPA); … … 167 166 psFree(cell->toFPA); 168 167 psFree(cell->toTP); 169 psFree(cell->parent);170 168 } 171 169 } … … 174 172 { 175 173 if (readout != NULL) { 176 psFree(readout->image);177 174 psFree(readout->mask); 178 175 psFree(readout->objects); … … 407 404 chip->fromFPA = NULL; 408 405 409 chip->parent = p sMemIncrRefCounter(parentFPA);406 chip->parent = parentFPA; 410 407 411 408 p_psMemSetDeallocator(chip,(psFreeFcn)chipFree); … … 437 434 cell->toTP = NULL; 438 435 439 cell->parent = p sMemIncrRefCounter(parentChip);436 cell->parent = parentChip; 440 437 441 438 p_psMemSetDeallocator(cell,(psFreeFcn)cellFree); … … 457 454 *(int*)&readout->row0 = row0; 458 455 459 readout->image = psMemIncrRefCounter((psImage*)image);456 readout->image = (psImage*)image; 460 457 readout->mask = NULL; 461 458 readout->objects = NULL; -
trunk/psLib/src/image/psImage.c
r1933 r2067 10 10 * @author Ross Harman, MHPCC 11 11 * 12 * @version $Revision: 1.4 8$ $Name: not supported by cvs2svn $13 * @date $Date: 2004- 09-30 18:54:42$12 * @version $Revision: 1.49 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2004-10-13 00:10:50 $ 14 14 * 15 15 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 162 162 163 163 return old; 164 } 165 166 psImage* psImageCopy(psImage* restrict output, 167 const psImage* input, 168 psElemType type) 169 { 170 psElemType inDatatype; 171 int elementSize; 172 int elements; 173 int numRows; 174 int numCols; 175 176 if (input == NULL || input->data.V == NULL) { 177 psErrorMsg(PS_ERRORNAME_DOMAIN "psImageCopy", 178 PS_ERR_BAD_PARAMETER_NULL, true, 179 PS_ERRORTEXT_psImage_IMAGE_NULL); 180 psFree(output); 181 return NULL; 182 } 183 184 if (input == output) { 185 psErrorMsg(PS_ERRORNAME_DOMAIN "psImageCopy", 186 PS_ERR_BAD_PARAMETER_NULL, true, 187 PS_ERRORTEXT_psImage_INPLACE_NOTSUPPORTED); 188 psFree(output); 189 return NULL; 190 } 191 192 if (input->type.dimen != PS_DIMEN_IMAGE) { 193 psErrorMsg(PS_ERRORNAME_DOMAIN "psImageCopy", 194 PS_ERR_BAD_PARAMETER_TYPE, true, 195 PS_ERRORTEXT_psImage_NOT_AN_IMAGE); 196 psFree(output); 197 return NULL; 198 } 199 200 inDatatype = input->type.type; 201 numRows = input->numRows; 202 numCols = input->numCols; 203 elements = numRows * numCols; 204 elementSize = PSELEMTYPE_SIZEOF(inDatatype); 205 206 if (inDatatype == PS_TYPE_PTR || type == PS_TYPE_PTR) { 207 psErrorMsg(PS_ERRORNAME_DOMAIN "psImageCopy", 208 PS_ERR_BAD_PARAMETER_TYPE, true, 209 PS_ERRORTEXT_psImage_IMAGE_TYPE_UNSUPPORTED, 210 PS_TYPE_PTR_NAME); 211 psFree(output); 212 return NULL; 213 } 214 215 output = psImageRecycle(output, numCols, numRows, type); 216 217 // cover the trival case of copy of the same 218 // datatype. 219 if (type == inDatatype) { 220 for (int row=0;row<numRows;row++) { 221 memcpy(output->data.V[row], input->data.V[row], elementSize * numCols); 222 } 223 return output; 224 } 225 226 #define PSIMAGE_ELEMENT_COPY(IN,INTYPE,OUT,OUTTYPE,ELEMENTS) { \ 227 ps##INTYPE *in; \ 228 ps##OUTTYPE *out; \ 229 for(int row=0;row<numRows;row++) { \ 230 in = IN->data.INTYPE[row]; \ 231 out = OUT->data.OUTTYPE[row]; \ 232 for (int col=0;col<numCols;col++) { \ 233 *(out++) = *(in++); \ 234 } \ 235 } \ 236 } 237 238 #define PSIMAGE_COPY_CASE(OUT,OUTTYPE) { \ 239 switch (inDatatype) { \ 240 case PS_TYPE_S8: \ 241 PSIMAGE_ELEMENT_COPY(input,S8,OUT,OUTTYPE,elements); \ 242 break; \ 243 case PS_TYPE_S16: \ 244 PSIMAGE_ELEMENT_COPY(input,S16,OUT,OUTTYPE,elements); \ 245 break; \ 246 case PS_TYPE_S32: \ 247 PSIMAGE_ELEMENT_COPY(input,S32,OUT,OUTTYPE,elements); \ 248 break; \ 249 case PS_TYPE_S64: \ 250 PSIMAGE_ELEMENT_COPY(input,S64,OUT,OUTTYPE,elements); \ 251 break; \ 252 case PS_TYPE_U8: \ 253 PSIMAGE_ELEMENT_COPY(input,U8,OUT,OUTTYPE,elements); \ 254 break; \ 255 case PS_TYPE_U16: \ 256 PSIMAGE_ELEMENT_COPY(input,U16,OUT,OUTTYPE,elements); \ 257 break; \ 258 case PS_TYPE_U32: \ 259 PSIMAGE_ELEMENT_COPY(input,U32,OUT,OUTTYPE,elements); \ 260 break; \ 261 case PS_TYPE_U64: \ 262 PSIMAGE_ELEMENT_COPY(input,U64,OUT,OUTTYPE,elements); \ 263 break; \ 264 case PS_TYPE_F32: \ 265 PSIMAGE_ELEMENT_COPY(input,F32,OUT,OUTTYPE,elements); \ 266 break; \ 267 case PS_TYPE_F64: \ 268 PSIMAGE_ELEMENT_COPY(input,F64,OUT,OUTTYPE,elements); \ 269 break; \ 270 case PS_TYPE_C32: \ 271 PSIMAGE_ELEMENT_COPY(input,C32,OUT,OUTTYPE,elements); \ 272 break; \ 273 case PS_TYPE_C64: \ 274 PSIMAGE_ELEMENT_COPY(input,C64,OUT,OUTTYPE,elements); \ 275 break; \ 276 default: \ 277 break; \ 278 } \ 279 } 280 281 switch (type) { 282 case PS_TYPE_S8: 283 PSIMAGE_COPY_CASE(output, S8); 284 break; 285 case PS_TYPE_S16: 286 PSIMAGE_COPY_CASE(output, S16); 287 break; 288 case PS_TYPE_S32: 289 PSIMAGE_COPY_CASE(output, S32); 290 break; 291 case PS_TYPE_S64: 292 PSIMAGE_COPY_CASE(output, S64); 293 break; 294 case PS_TYPE_U8: 295 PSIMAGE_COPY_CASE(output, U8); 296 break; 297 case PS_TYPE_U16: 298 PSIMAGE_COPY_CASE(output, U16); 299 break; 300 case PS_TYPE_U32: 301 PSIMAGE_COPY_CASE(output, U32); 302 break; 303 case PS_TYPE_U64: 304 PSIMAGE_COPY_CASE(output, U64); 305 break; 306 case PS_TYPE_F32: 307 PSIMAGE_COPY_CASE(output, F32); 308 break; 309 case PS_TYPE_F64: 310 PSIMAGE_COPY_CASE(output, F64); 311 break; 312 case PS_TYPE_C32: 313 PSIMAGE_COPY_CASE(output, C32); 314 break; 315 case PS_TYPE_C64: 316 PSIMAGE_COPY_CASE(output, C64); 317 break; 318 default: { 319 char* typeStr; 320 PS_TYPE_NAME(typeStr,type); 321 psErrorMsg(PS_ERRORNAME_DOMAIN "psImageCopy", 322 PS_ERR_BAD_PARAMETER_TYPE, true, 323 PS_ERRORTEXT_psImage_IMAGE_TYPE_UNSUPPORTED, 324 typeStr); 325 psFree(output); 326 327 break; 328 } 329 } 330 return output; 164 331 } 165 332 -
trunk/psLib/src/image/psImage.h
r1936 r2067 11 11 * @author Ross Harman, MHPCC 12 12 * 13 * @version $Revision: 1. 39$ $Name: not supported by cvs2svn $14 * @date $Date: 2004- 09-30 21:01:09$13 * @version $Revision: 1.40 $ $Name: not supported by cvs2svn $ 14 * @date $Date: 2004-10-13 00:10:50 $ 15 15 * 16 16 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 100 100 ); 101 101 102 /** Makes a copy of a psImage 103 * 104 * @return psImage* Copy of the input psImage. This may not be equal to the 105 * output parameter 106 * 107 */ 108 psImage* psImageCopy( 109 psImage* restrict output, ///< if not NULL, a psImage that could be recycled. 110 const psImage* input, ///< the psImage to copy 111 psElemType type ///< the desired datatype of the returned copy 112 ); 113 102 114 /** Frees all children of a psImage. 103 115 * -
trunk/psLib/src/image/psImageExtraction.c
r1962 r2067 9 9 * @author Robert DeSonia, MHPCC 10 10 * 11 * @version $Revision: 1.2 1$ $Name: not supported by cvs2svn $12 * @date $Date: 2004-10- 05 22:23:04$11 * @version $Revision: 1.22 $ $Name: not supported by cvs2svn $ 12 * @date $Date: 2004-10-13 00:10:50 $ 13 13 * 14 14 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 23 23 24 24 #include "psImageErrors.h" 25 26 25 27 26 psImage* imageSubset(psImage* out, … … 236 235 237 236 return (image); 238 }239 240 psImage* psImageCopy(psImage* restrict output,241 const psImage* input,242 psElemType type)243 {244 psElemType inDatatype;245 int elementSize;246 int elements;247 int numRows;248 int numCols;249 250 if (input == NULL || input->data.V == NULL) {251 psErrorMsg(PS_ERRORNAME_DOMAIN "psImageCopy",252 PS_ERR_BAD_PARAMETER_NULL, true,253 PS_ERRORTEXT_psImage_IMAGE_NULL);254 psFree(output);255 return NULL;256 }257 258 if (input == output) {259 psErrorMsg(PS_ERRORNAME_DOMAIN "psImageCopy",260 PS_ERR_BAD_PARAMETER_NULL, true,261 PS_ERRORTEXT_psImage_INPLACE_NOTSUPPORTED);262 psFree(output);263 return NULL;264 }265 266 if (input->type.dimen != PS_DIMEN_IMAGE) {267 psErrorMsg(PS_ERRORNAME_DOMAIN "psImageCopy",268 PS_ERR_BAD_PARAMETER_TYPE, true,269 PS_ERRORTEXT_psImage_NOT_AN_IMAGE);270 psFree(output);271 return NULL;272 }273 274 inDatatype = input->type.type;275 numRows = input->numRows;276 numCols = input->numCols;277 elements = numRows * numCols;278 elementSize = PSELEMTYPE_SIZEOF(inDatatype);279 280 if (inDatatype == PS_TYPE_PTR || type == PS_TYPE_PTR) {281 psErrorMsg(PS_ERRORNAME_DOMAIN "psImageCopy",282 PS_ERR_BAD_PARAMETER_TYPE, true,283 PS_ERRORTEXT_psImage_IMAGE_TYPE_UNSUPPORTED,284 PS_TYPE_PTR_NAME);285 psFree(output);286 return NULL;287 }288 289 output = psImageRecycle(output, numCols, numRows, type);290 291 // cover the trival case of copy of the same292 // datatype.293 if (type == inDatatype) {294 for (int row=0;row<numRows;row++) {295 memcpy(output->data.V[row], input->data.V[row], elementSize * numCols);296 }297 return output;298 }299 300 #define PSIMAGE_ELEMENT_COPY(IN,INTYPE,OUT,OUTTYPE,ELEMENTS) { \301 ps##INTYPE *in; \302 ps##OUTTYPE *out; \303 for(int row=0;row<numRows;row++) { \304 in = IN->data.INTYPE[row]; \305 out = OUT->data.OUTTYPE[row]; \306 for (int col=0;col<numCols;col++) { \307 *(out++) = *(in++); \308 } \309 } \310 }311 312 #define PSIMAGE_COPY_CASE(OUT,OUTTYPE) { \313 switch (inDatatype) { \314 case PS_TYPE_S8: \315 PSIMAGE_ELEMENT_COPY(input,S8,OUT,OUTTYPE,elements); \316 break; \317 case PS_TYPE_S16: \318 PSIMAGE_ELEMENT_COPY(input,S16,OUT,OUTTYPE,elements); \319 break; \320 case PS_TYPE_S32: \321 PSIMAGE_ELEMENT_COPY(input,S32,OUT,OUTTYPE,elements); \322 break; \323 case PS_TYPE_S64: \324 PSIMAGE_ELEMENT_COPY(input,S64,OUT,OUTTYPE,elements); \325 break; \326 case PS_TYPE_U8: \327 PSIMAGE_ELEMENT_COPY(input,U8,OUT,OUTTYPE,elements); \328 break; \329 case PS_TYPE_U16: \330 PSIMAGE_ELEMENT_COPY(input,U16,OUT,OUTTYPE,elements); \331 break; \332 case PS_TYPE_U32: \333 PSIMAGE_ELEMENT_COPY(input,U32,OUT,OUTTYPE,elements); \334 break; \335 case PS_TYPE_U64: \336 PSIMAGE_ELEMENT_COPY(input,U64,OUT,OUTTYPE,elements); \337 break; \338 case PS_TYPE_F32: \339 PSIMAGE_ELEMENT_COPY(input,F32,OUT,OUTTYPE,elements); \340 break; \341 case PS_TYPE_F64: \342 PSIMAGE_ELEMENT_COPY(input,F64,OUT,OUTTYPE,elements); \343 break; \344 case PS_TYPE_C32: \345 PSIMAGE_ELEMENT_COPY(input,C32,OUT,OUTTYPE,elements); \346 break; \347 case PS_TYPE_C64: \348 PSIMAGE_ELEMENT_COPY(input,C64,OUT,OUTTYPE,elements); \349 break; \350 default: \351 break; \352 } \353 }354 355 switch (type) {356 case PS_TYPE_S8:357 PSIMAGE_COPY_CASE(output, S8);358 break;359 case PS_TYPE_S16:360 PSIMAGE_COPY_CASE(output, S16);361 break;362 case PS_TYPE_S32:363 PSIMAGE_COPY_CASE(output, S32);364 break;365 case PS_TYPE_S64:366 PSIMAGE_COPY_CASE(output, S64);367 break;368 case PS_TYPE_U8:369 PSIMAGE_COPY_CASE(output, U8);370 break;371 case PS_TYPE_U16:372 PSIMAGE_COPY_CASE(output, U16);373 break;374 case PS_TYPE_U32:375 PSIMAGE_COPY_CASE(output, U32);376 break;377 case PS_TYPE_U64:378 PSIMAGE_COPY_CASE(output, U64);379 break;380 case PS_TYPE_F32:381 PSIMAGE_COPY_CASE(output, F32);382 break;383 case PS_TYPE_F64:384 PSIMAGE_COPY_CASE(output, F64);385 break;386 case PS_TYPE_C32:387 PSIMAGE_COPY_CASE(output, C32);388 break;389 case PS_TYPE_C64:390 PSIMAGE_COPY_CASE(output, C64);391 break;392 default: {393 char* typeStr;394 PS_TYPE_NAME(typeStr,type);395 psErrorMsg(PS_ERRORNAME_DOMAIN "psImageCopy",396 PS_ERR_BAD_PARAMETER_TYPE, true,397 PS_ERRORTEXT_psImage_IMAGE_TYPE_UNSUPPORTED,398 typeStr);399 psFree(output);400 401 break;402 }403 }404 return output;405 237 } 406 238 -
trunk/psLib/src/image/psImageExtraction.h
r1924 r2067 10 10 * @author Robert DeSonia, MHPCC 11 11 * 12 * @version $Revision: 1.1 6$ $Name: not supported by cvs2svn $13 * @date $Date: 2004- 09-29 01:10:27$12 * @version $Revision: 1.17 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2004-10-13 00:10:50 $ 14 14 * 15 15 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 98 98 int row1 ///< row of trim region's upper boundary 99 99 ); 100 101 /** Makes a copy of a psImage102 *103 * @return psImage* Copy of the input psImage. This may not be equal to the104 * output parameter105 *106 */107 psImage* psImageCopy(108 psImage* restrict output, ///< if not NULL, a psImage that could be recycled.109 const psImage* input, ///< the psImage to copy110 psElemType type ///< the desired datatype of the returned copy111 );112 113 100 114 101 /** Extract pixels from rectlinear region to a vector (array of floats). -
trunk/psLib/src/mathtypes/psImage.c
r1933 r2067 10 10 * @author Ross Harman, MHPCC 11 11 * 12 * @version $Revision: 1.4 8$ $Name: not supported by cvs2svn $13 * @date $Date: 2004- 09-30 18:54:42$12 * @version $Revision: 1.49 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2004-10-13 00:10:50 $ 14 14 * 15 15 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 162 162 163 163 return old; 164 } 165 166 psImage* psImageCopy(psImage* restrict output, 167 const psImage* input, 168 psElemType type) 169 { 170 psElemType inDatatype; 171 int elementSize; 172 int elements; 173 int numRows; 174 int numCols; 175 176 if (input == NULL || input->data.V == NULL) { 177 psErrorMsg(PS_ERRORNAME_DOMAIN "psImageCopy", 178 PS_ERR_BAD_PARAMETER_NULL, true, 179 PS_ERRORTEXT_psImage_IMAGE_NULL); 180 psFree(output); 181 return NULL; 182 } 183 184 if (input == output) { 185 psErrorMsg(PS_ERRORNAME_DOMAIN "psImageCopy", 186 PS_ERR_BAD_PARAMETER_NULL, true, 187 PS_ERRORTEXT_psImage_INPLACE_NOTSUPPORTED); 188 psFree(output); 189 return NULL; 190 } 191 192 if (input->type.dimen != PS_DIMEN_IMAGE) { 193 psErrorMsg(PS_ERRORNAME_DOMAIN "psImageCopy", 194 PS_ERR_BAD_PARAMETER_TYPE, true, 195 PS_ERRORTEXT_psImage_NOT_AN_IMAGE); 196 psFree(output); 197 return NULL; 198 } 199 200 inDatatype = input->type.type; 201 numRows = input->numRows; 202 numCols = input->numCols; 203 elements = numRows * numCols; 204 elementSize = PSELEMTYPE_SIZEOF(inDatatype); 205 206 if (inDatatype == PS_TYPE_PTR || type == PS_TYPE_PTR) { 207 psErrorMsg(PS_ERRORNAME_DOMAIN "psImageCopy", 208 PS_ERR_BAD_PARAMETER_TYPE, true, 209 PS_ERRORTEXT_psImage_IMAGE_TYPE_UNSUPPORTED, 210 PS_TYPE_PTR_NAME); 211 psFree(output); 212 return NULL; 213 } 214 215 output = psImageRecycle(output, numCols, numRows, type); 216 217 // cover the trival case of copy of the same 218 // datatype. 219 if (type == inDatatype) { 220 for (int row=0;row<numRows;row++) { 221 memcpy(output->data.V[row], input->data.V[row], elementSize * numCols); 222 } 223 return output; 224 } 225 226 #define PSIMAGE_ELEMENT_COPY(IN,INTYPE,OUT,OUTTYPE,ELEMENTS) { \ 227 ps##INTYPE *in; \ 228 ps##OUTTYPE *out; \ 229 for(int row=0;row<numRows;row++) { \ 230 in = IN->data.INTYPE[row]; \ 231 out = OUT->data.OUTTYPE[row]; \ 232 for (int col=0;col<numCols;col++) { \ 233 *(out++) = *(in++); \ 234 } \ 235 } \ 236 } 237 238 #define PSIMAGE_COPY_CASE(OUT,OUTTYPE) { \ 239 switch (inDatatype) { \ 240 case PS_TYPE_S8: \ 241 PSIMAGE_ELEMENT_COPY(input,S8,OUT,OUTTYPE,elements); \ 242 break; \ 243 case PS_TYPE_S16: \ 244 PSIMAGE_ELEMENT_COPY(input,S16,OUT,OUTTYPE,elements); \ 245 break; \ 246 case PS_TYPE_S32: \ 247 PSIMAGE_ELEMENT_COPY(input,S32,OUT,OUTTYPE,elements); \ 248 break; \ 249 case PS_TYPE_S64: \ 250 PSIMAGE_ELEMENT_COPY(input,S64,OUT,OUTTYPE,elements); \ 251 break; \ 252 case PS_TYPE_U8: \ 253 PSIMAGE_ELEMENT_COPY(input,U8,OUT,OUTTYPE,elements); \ 254 break; \ 255 case PS_TYPE_U16: \ 256 PSIMAGE_ELEMENT_COPY(input,U16,OUT,OUTTYPE,elements); \ 257 break; \ 258 case PS_TYPE_U32: \ 259 PSIMAGE_ELEMENT_COPY(input,U32,OUT,OUTTYPE,elements); \ 260 break; \ 261 case PS_TYPE_U64: \ 262 PSIMAGE_ELEMENT_COPY(input,U64,OUT,OUTTYPE,elements); \ 263 break; \ 264 case PS_TYPE_F32: \ 265 PSIMAGE_ELEMENT_COPY(input,F32,OUT,OUTTYPE,elements); \ 266 break; \ 267 case PS_TYPE_F64: \ 268 PSIMAGE_ELEMENT_COPY(input,F64,OUT,OUTTYPE,elements); \ 269 break; \ 270 case PS_TYPE_C32: \ 271 PSIMAGE_ELEMENT_COPY(input,C32,OUT,OUTTYPE,elements); \ 272 break; \ 273 case PS_TYPE_C64: \ 274 PSIMAGE_ELEMENT_COPY(input,C64,OUT,OUTTYPE,elements); \ 275 break; \ 276 default: \ 277 break; \ 278 } \ 279 } 280 281 switch (type) { 282 case PS_TYPE_S8: 283 PSIMAGE_COPY_CASE(output, S8); 284 break; 285 case PS_TYPE_S16: 286 PSIMAGE_COPY_CASE(output, S16); 287 break; 288 case PS_TYPE_S32: 289 PSIMAGE_COPY_CASE(output, S32); 290 break; 291 case PS_TYPE_S64: 292 PSIMAGE_COPY_CASE(output, S64); 293 break; 294 case PS_TYPE_U8: 295 PSIMAGE_COPY_CASE(output, U8); 296 break; 297 case PS_TYPE_U16: 298 PSIMAGE_COPY_CASE(output, U16); 299 break; 300 case PS_TYPE_U32: 301 PSIMAGE_COPY_CASE(output, U32); 302 break; 303 case PS_TYPE_U64: 304 PSIMAGE_COPY_CASE(output, U64); 305 break; 306 case PS_TYPE_F32: 307 PSIMAGE_COPY_CASE(output, F32); 308 break; 309 case PS_TYPE_F64: 310 PSIMAGE_COPY_CASE(output, F64); 311 break; 312 case PS_TYPE_C32: 313 PSIMAGE_COPY_CASE(output, C32); 314 break; 315 case PS_TYPE_C64: 316 PSIMAGE_COPY_CASE(output, C64); 317 break; 318 default: { 319 char* typeStr; 320 PS_TYPE_NAME(typeStr,type); 321 psErrorMsg(PS_ERRORNAME_DOMAIN "psImageCopy", 322 PS_ERR_BAD_PARAMETER_TYPE, true, 323 PS_ERRORTEXT_psImage_IMAGE_TYPE_UNSUPPORTED, 324 typeStr); 325 psFree(output); 326 327 break; 328 } 329 } 330 return output; 164 331 } 165 332 -
trunk/psLib/src/mathtypes/psImage.h
r1936 r2067 11 11 * @author Ross Harman, MHPCC 12 12 * 13 * @version $Revision: 1. 39$ $Name: not supported by cvs2svn $14 * @date $Date: 2004- 09-30 21:01:09$13 * @version $Revision: 1.40 $ $Name: not supported by cvs2svn $ 14 * @date $Date: 2004-10-13 00:10:50 $ 15 15 * 16 16 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 100 100 ); 101 101 102 /** Makes a copy of a psImage 103 * 104 * @return psImage* Copy of the input psImage. This may not be equal to the 105 * output parameter 106 * 107 */ 108 psImage* psImageCopy( 109 psImage* restrict output, ///< if not NULL, a psImage that could be recycled. 110 const psImage* input, ///< the psImage to copy 111 psElemType type ///< the desired datatype of the returned copy 112 ); 113 102 114 /** Frees all children of a psImage. 103 115 * -
trunk/psLib/test/astronomy/tst_psAstrometry.c
r2056 r2067 5 5 * @author Robert DeSonia, MHPCC 6 6 * 7 * @version $Revision: 1. 6$ $Name: not supported by cvs2svn $8 * @date $Date: 2004-10-1 2 19:51:53$7 * @version $Revision: 1.7 $ $Name: not supported by cvs2svn $ 8 * @date $Date: 2004-10-13 00:10:50 $ 9 9 * 10 10 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 387 387 } 388 388 389 if (psMemGetRefCounter(fpa) != 2) {390 psLogMsg(__func__,PS_LOG_ERROR, 391 "psChipAlloc did not incrementreference counter for parent FPA.");389 if (psMemGetRefCounter(fpa) != 1) { 390 psLogMsg(__func__,PS_LOG_ERROR, 391 "psChipAlloc incremented reference counter for parent FPA."); 392 392 return 5; 393 393 } … … 439 439 } 440 440 441 if (psMemGetRefCounter(fpa) != 3) {442 psLogMsg(__func__,PS_LOG_ERROR, 443 "psChipAlloc did not incrementreference counter for parent FPA.");441 if (psMemGetRefCounter(fpa) != 1) { 442 psLogMsg(__func__,PS_LOG_ERROR, 443 "psChipAlloc incremented reference counter for parent FPA."); 444 444 return 15; 445 445 } … … 537 537 } 538 538 539 if (psMemGetRefCounter(chip) != 2) {540 psLogMsg(__func__,PS_LOG_ERROR, 541 "psCellAlloc did not incrementreference counter for parent.");539 if (psMemGetRefCounter(chip) != 1) { 540 psLogMsg(__func__,PS_LOG_ERROR, 541 "psCellAlloc incremented reference counter for parent."); 542 542 return 5; 543 543 } … … 603 603 } 604 604 605 if (psMemGetRefCounter(chip) != 3) {606 psLogMsg(__func__,PS_LOG_ERROR, 607 "psCellAlloc did not incrementreference counter for parent FPA.");605 if (psMemGetRefCounter(chip) != 1) { 606 psLogMsg(__func__,PS_LOG_ERROR, 607 "psCellAlloc incremented reference counter for parent FPA."); 608 608 return 15; 609 609 } … … 677 677 } 678 678 679 if (psMemGetRefCounter(image) != 2) {680 psLogMsg(__func__,PS_LOG_ERROR, 681 "psReadoutAlloc did not incrementreference counter for image.");679 if (psMemGetRefCounter(image) != 1) { 680 psLogMsg(__func__,PS_LOG_ERROR, 681 "psReadoutAlloc incremented reference counter for image."); 682 682 return 5; 683 683 } -
trunk/psLib/test/astronomy/tst_psAstrometry03.c
r2066 r2067 22 22 } 23 23 24 for (i=0;i<NUM_CHIPS;i++) {25 psArrayElementFree(chips[i]->cells);26 }27 psArrayElementFree(myFPA->chips);28 24 psFree(myFPA); 29 25 -
trunk/psLib/test/image/tst_psImageExtraction.c
r2022 r2067 6 6 * @author Robert DeSonia, MHPCC 7 7 * 8 * @version $Revision: 1.1 1$ $Name: not supported by cvs2svn $9 * @date $Date: 2004-10- 08 19:44:32$8 * @version $Revision: 1.12 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2004-10-13 00:10:50 $ 10 10 * 11 11 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 21 21 static int testImageSubset(void); 22 22 static int testImageSubsection(void); 23 static int testImageTrim(void); 24 23 25 24 26 testDescription tests[] = { … … 27 29 {testImageSubsection,730,"psImageSubsection",0,false}, 28 30 {testImageSlice, 552, "psImageSlice", 0, false}, 31 {testImageTrim, 744, "psImageTrim", 0, false}, 29 32 {NULL} 30 33 }; … … 743 746 return 0; 744 747 } 748 749 static int testImageTrim(void) 750 { 751 int r = 200; 752 int c = 300; 753 int quarterR = r/4; 754 int quarterC = c/4; 755 int halfR = r/2; 756 psImage* image = psImageAlloc(c,r,PS_TYPE_F32); 757 for (int row = 0; row < image->numRows; row++) { 758 for (int col = 0; col < image->numCols; col++) { 759 image->data.F32[row][col] = ((psF32)row+1.0f)/((psF32)col+1.0f); 760 } 761 } 762 763 psImage* image1 = psImageCopy(NULL,image,PS_TYPE_F32); 764 psImage* image2 = psImageTrim(image1,c/4,r/4,c*3/4,r*3/4); 765 766 767 768 return 0; 769 }
Note:
See TracChangeset
for help on using the changeset viewer.
