Changeset 3702 for trunk/psLib/src/image/psImage.c
- Timestamp:
- Apr 14, 2005, 2:12:09 PM (21 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/image/psImage.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/image/psImage.c
r3682 r3702 9 9 * @author Ross Harman, MHPCC 10 10 * 11 * @version $Revision: 1.6 3$ $Name: not supported by cvs2svn $12 * @date $Date: 2005-04- 07 20:27:41$11 * @version $Revision: 1.64 $ $Name: not supported by cvs2svn $ 12 * @date $Date: 2005-04-15 00:12:08 $ 13 13 * 14 14 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 197 197 } 198 198 199 psImage* psImageCopy(psImage* restrictoutput,199 psImage* psImageCopy(psImage* output, 200 200 const psImage* input, 201 201 psElemType type) … … 350 350 return output; 351 351 } 352 353 bool p_psImageCopyToRawBuffer(void* buffer, 354 const psImage* input, 355 psElemType type) 356 { 357 psElemType inDatatype; 358 psS32 numRows; 359 psS32 numCols; 360 361 if (input == NULL || input->data.V == NULL) { 362 psError(PS_ERR_BAD_PARAMETER_NULL, true, 363 PS_ERRORTEXT_psImage_IMAGE_NULL); 364 return false; 365 } 366 367 if (input->type.dimen != PS_DIMEN_IMAGE) { 368 psError(PS_ERR_BAD_PARAMETER_TYPE, true, 369 PS_ERRORTEXT_psImage_NOT_AN_IMAGE); 370 return false; 371 } 372 373 inDatatype = input->type.type; 374 numRows = input->numRows; 375 numCols = input->numCols; 376 377 // cover the trival case of copy of the same 378 // datatype. 379 if (type == inDatatype) { 380 int rowSize = PSELEMTYPE_SIZEOF(inDatatype)*numCols; 381 for (psS32 row=0;row<numRows;row++) { 382 memcpy(&((psS8*)buffer)[row*rowSize], input->data.V[row], rowSize); 383 } 384 return true; 385 } 386 387 #define PSIMAGE_BUFFER_COPY(INTYPE,OUTTYPE) { \ 388 ps##INTYPE *in; \ 389 ps##OUTTYPE *out = buffer; \ 390 for(psS32 row=0;row<numRows;row++) { \ 391 in = input->data.INTYPE[row]; \ 392 for (psS32 col=0;col<numCols;col++) { \ 393 *(out++) = *(in++); \ 394 } \ 395 } \ 396 } 397 398 #define PSIMAGE_BUFFER_COPY_CASE(OUT,OUTTYPE) { \ 399 switch (inDatatype) { \ 400 case PS_TYPE_S8: \ 401 PSIMAGE_BUFFER_COPY(S8,OUTTYPE); \ 402 break; \ 403 case PS_TYPE_S16: \ 404 PSIMAGE_BUFFER_COPY(S16,OUTTYPE); \ 405 break; \ 406 case PS_TYPE_S32: \ 407 PSIMAGE_BUFFER_COPY(S32,OUTTYPE); \ 408 break; \ 409 case PS_TYPE_S64: \ 410 PSIMAGE_BUFFER_COPY(S64,OUTTYPE); \ 411 break; \ 412 case PS_TYPE_U8: \ 413 PSIMAGE_BUFFER_COPY(U8,OUTTYPE); \ 414 break; \ 415 case PS_TYPE_U16: \ 416 PSIMAGE_BUFFER_COPY(U16,OUTTYPE); \ 417 break; \ 418 case PS_TYPE_U32: \ 419 PSIMAGE_BUFFER_COPY(U32,OUTTYPE); \ 420 break; \ 421 case PS_TYPE_U64: \ 422 PSIMAGE_BUFFER_COPY(U64,OUTTYPE); \ 423 break; \ 424 case PS_TYPE_F32: \ 425 PSIMAGE_BUFFER_COPY(F32,OUTTYPE); \ 426 break; \ 427 case PS_TYPE_F64: \ 428 PSIMAGE_BUFFER_COPY(F64,OUTTYPE); \ 429 break; \ 430 case PS_TYPE_C32: \ 431 PSIMAGE_BUFFER_COPY(C32,OUTTYPE); \ 432 break; \ 433 case PS_TYPE_C64: \ 434 PSIMAGE_BUFFER_COPY(C64,OUTTYPE); \ 435 break; \ 436 default: \ 437 break; \ 438 } \ 439 } 440 441 switch (type) { 442 case PS_TYPE_S8: 443 PSIMAGE_BUFFER_COPY_CASE(output, S8); 444 break; 445 case PS_TYPE_S16: 446 PSIMAGE_BUFFER_COPY_CASE(output, S16); 447 break; 448 case PS_TYPE_S32: 449 PSIMAGE_BUFFER_COPY_CASE(output, S32); 450 break; 451 case PS_TYPE_S64: 452 PSIMAGE_BUFFER_COPY_CASE(output, S64); 453 break; 454 case PS_TYPE_U8: 455 PSIMAGE_BUFFER_COPY_CASE(output, U8); 456 break; 457 case PS_TYPE_U16: 458 PSIMAGE_BUFFER_COPY_CASE(output, U16); 459 break; 460 case PS_TYPE_U32: 461 PSIMAGE_BUFFER_COPY_CASE(output, U32); 462 break; 463 case PS_TYPE_U64: 464 PSIMAGE_BUFFER_COPY_CASE(output, U64); 465 break; 466 case PS_TYPE_F32: 467 PSIMAGE_BUFFER_COPY_CASE(output, F32); 468 break; 469 case PS_TYPE_F64: 470 PSIMAGE_BUFFER_COPY_CASE(output, F64); 471 break; 472 case PS_TYPE_C32: 473 PSIMAGE_BUFFER_COPY_CASE(output, C32); 474 break; 475 case PS_TYPE_C64: 476 PSIMAGE_BUFFER_COPY_CASE(output, C64); 477 break; 478 default: { 479 char* typeStr; 480 PS_TYPE_NAME(typeStr,type); 481 psError(PS_ERR_BAD_PARAMETER_TYPE, true, 482 PS_ERRORTEXT_psImage_IMAGE_TYPE_UNSUPPORTED, 483 typeStr); 484 break; 485 } 486 } 487 return true; 488 } 489 352 490 353 491 psS32 psImageFreeChildren(psImage* image)
Note:
See TracChangeset
for help on using the changeset viewer.
