Changeset 2204 for trunk/psLib/src/image/psImage.c
- Timestamp:
- Oct 26, 2004, 2:57:34 PM (22 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/image/psImage.c (modified) (24 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/image/psImage.c
r2105 r2204 10 10 * @author Ross Harman, MHPCC 11 11 * 12 * @version $Revision: 1.5 0$ $Name: not supported by cvs2svn $13 * @date $Date: 2004-10- 14 01:22:59$12 * @version $Revision: 1.51 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2004-10-27 00:57:31 $ 14 14 * 15 15 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 29 29 static void imageFree(psImage* image); 30 30 31 psImage* psImageAlloc( unsigned intnumCols,32 unsigned intnumRows,31 psImage* psImageAlloc(psU32 numCols, 32 psU32 numRows, 33 33 const psElemType type) 34 34 { 35 intarea = 0;36 intelementSize = PSELEMTYPE_SIZEOF(type); // element size in bytes37 introwSize = numCols * elementSize; // row size in bytes.35 psS32 area = 0; 36 psS32 elementSize = PSELEMTYPE_SIZEOF(type); // element size in bytes 37 psS32 rowSize = numCols * elementSize; // row size in bytes. 38 38 39 39 area = numCols * numRows; … … 51 51 p_psMemSetDeallocator(image, (psFreeFcn) imageFree); 52 52 53 image->data.V = psAlloc(sizeof( void *) * numRows);53 image->data.V = psAlloc(sizeof(psPtr ) * numRows); 54 54 55 55 image->rawDataBuffer = psAlloc(area * elementSize); … … 57 57 // set the row pointers. 58 58 image->data.V[0] = image->rawDataBuffer; 59 for ( inti = 1; i < numRows; i++) {60 image->data.V[i] = ( void *)((int8_t *) image->data.V[i - 1] + rowSize);61 } 62 63 *( int*)&image->col0 = 0;64 *( int*)&image->row0 = 0;65 *( unsigned int*)&image->numCols = numCols;66 *( unsigned int*)&image->numRows = numRows;59 for (psS32 i = 1; i < numRows; i++) { 60 image->data.V[i] = (psPtr )((int8_t *) image->data.V[i - 1] + rowSize); 61 } 62 63 *(psS32 *)&image->col0 = 0; 64 *(psS32 *)&image->row0 = 0; 65 *(psU32 *)&image->numCols = numCols; 66 *(psU32 *)&image->numRows = numRows; 67 67 *(psDimen* ) & image->type.dimen = PS_DIMEN_IMAGE; 68 68 *(psElemType* ) & image->type.type = type; … … 81 81 if (image->type.type == PS_TYPE_PTR) { 82 82 // 2-D array of pointers -- must dereference elements 83 unsigned intoldNumRows = image->numRows;84 unsigned intoldNumCols = image->numCols;85 psP TR* rowPtr;86 87 for ( unsigned introw = 0; row < oldNumRows; row++) {83 psU32 oldNumRows = image->numRows; 84 psU32 oldNumCols = image->numCols; 85 psPtr* rowPtr; 86 87 for (psU32 row = 0; row < oldNumRows; row++) { 88 88 rowPtr = image->data.PTR[row]; 89 for ( unsigned intcol = 0; col < oldNumCols; col++) {89 for (psU32 col = 0; col < oldNumCols; col++) { 90 90 psMemDecrRefCounter(rowPtr[col]); 91 91 } … … 105 105 106 106 psImage* psImageRecycle(psImage* old, 107 unsigned intnumCols,108 unsigned intnumRows,107 psU32 numCols, 108 psU32 numRows, 109 109 const psElemType type) 110 110 { 111 intelementSize = PSELEMTYPE_SIZEOF(type); // element size in bytes112 introwSize = numCols * elementSize; // row size in bytes.111 psS32 elementSize = PSELEMTYPE_SIZEOF(type); // element size in bytes 112 psS32 rowSize = numCols * elementSize; // row size in bytes. 113 113 114 114 if (old == NULL) { … … 128 128 // 2-D array of pointers -- must 129 129 // dereference 130 unsigned intoldNumRows = old->numRows;131 unsigned intoldNumCols = old->numCols;132 psP TR* rowPtr;133 134 for ( unsigned introw = 0; row < oldNumRows; row++) {130 psU32 oldNumRows = old->numRows; 131 psU32 oldNumCols = old->numCols; 132 psPtr* rowPtr; 133 134 for (psU32 row = 0; row < oldNumRows; row++) { 135 135 rowPtr = old->data.PTR[row]; 136 for ( unsigned intcol = 0; col < oldNumCols; col++) {136 for (psU32 col = 0; col < oldNumCols; col++) { 137 137 psMemDecrRefCounter(rowPtr[col]); 138 138 rowPtr[col] = NULL; … … 149 149 old->rawDataBuffer = psRealloc(old->data.V[0], 150 150 numCols * numRows * elementSize); 151 old->data.V = ( void **)psRealloc(old->data.V, numRows * sizeof(void *));151 old->data.V = (psPtr *)psRealloc(old->data.V, numRows * sizeof(psPtr )); 152 152 153 153 // recreate the row pointers 154 154 old->data.V[0] = old->rawDataBuffer; 155 for ( inti = 1; i < numRows; i++) {156 old->data.V[i] = ( void *)((int8_t *) old->data.V[i - 1] + rowSize);157 } 158 159 *( unsigned int*)&old->numCols = numCols;160 *( unsigned int*)&old->numRows = numRows;155 for (psS32 i = 1; i < numRows; i++) { 156 old->data.V[i] = (psPtr )((int8_t *) old->data.V[i - 1] + rowSize); 157 } 158 159 *(psU32 *)&old->numCols = numCols; 160 *(psU32 *)&old->numRows = numRows; 161 161 *(psElemType* ) & old->type.type = type; 162 162 … … 169 169 { 170 170 psElemType inDatatype; 171 intelementSize;172 intelements;173 intnumRows;174 intnumCols;171 psS32 elementSize; 172 psS32 elements; 173 psS32 numRows; 174 psS32 numCols; 175 175 176 176 if (input == NULL || input->data.V == NULL) { … … 218 218 // datatype. 219 219 if (type == inDatatype) { 220 for ( introw=0;row<numRows;row++) {220 for (psS32 row=0;row<numRows;row++) { 221 221 memcpy(output->data.V[row], input->data.V[row], elementSize * numCols); 222 222 } … … 227 227 ps##INTYPE *in; \ 228 228 ps##OUTTYPE *out; \ 229 for( introw=0;row<numRows;row++) { \229 for(psS32 row=0;row<numRows;row++) { \ 230 230 in = IN->data.INTYPE[row]; \ 231 231 out = OUT->data.OUTTYPE[row]; \ 232 for ( intcol=0;col<numCols;col++) { \232 for (psS32 col=0;col<numCols;col++) { \ 233 233 *(out++) = *(in++); \ 234 234 } \ … … 331 331 } 332 332 333 intpsImageFreeChildren(psImage* image)333 psS32 psImageFreeChildren(psImage* image) 334 334 { 335 intnumFreed = 0;335 psS32 numFreed = 0; 336 336 337 337 if (image == NULL) { … … 345 345 // orphan the children first 346 346 // (so psFree doesn't try to modify the parent's children array while I'm using it) 347 for ( inti=0;i<numFreed;i++) {347 for (psS32 i=0;i<numFreed;i++) { 348 348 children[i]->parent = NULL; 349 349 } … … 366 366 float y, 367 367 const psImage* mask, 368 unsigned intmaskVal,368 psU32 maskVal, 369 369 psC64 unexposedValue, 370 370 psImageInterpolateMode mode) … … 438 438 float y, \ 439 439 const psImage* mask, \ 440 unsigned intmaskVal, \440 psU32 maskVal, \ 441 441 psF64 unexposedValue) \ 442 442 { \ 443 int intX = (int) round((psF64)(x) - 0.5 + FLT_EPSILON); \444 int intY = (int) round((psF64)(y) - 0.5 + FLT_EPSILON); \445 intlastX = input->numCols - 1; \446 intlastY = input->numRows - 1; \443 psS32 intX = (psS32) round((psF64)(x) - 0.5 + FLT_EPSILON); \ 444 psS32 intY = (psS32) round((psF64)(y) - 0.5 + FLT_EPSILON); \ 445 psS32 lastX = input->numCols - 1; \ 446 psS32 lastY = input->numRows - 1; \ 447 447 \ 448 448 if ((intX < 0) || \ … … 463 463 float y, \ 464 464 const psImage* mask, \ 465 unsigned intmaskVal, \465 psU32 maskVal, \ 466 466 psC64 unexposedValue) \ 467 467 { \ 468 int intX = (int) round((psF64)(x) - 0.5); \469 int intY = (int) round((psF64)(y) - 0.5); \470 intlastX = input->numCols - 1; \471 intlastY = input->numRows - 1; \468 psS32 intX = (psS32) round((psF64)(x) - 0.5); \ 469 psS32 intY = (psS32) round((psF64)(y) - 0.5); \ 470 psS32 lastX = input->numCols - 1; \ 471 psS32 lastY = input->numRows - 1; \ 472 472 \ 473 473 if ((intX < 0) || \ … … 501 501 float y, \ 502 502 const psImage* mask, \ 503 unsigned intmaskVal, \503 psU32 maskVal, \ 504 504 psF64 unexposedValue) \ 505 505 { \ … … 508 508 psF64 fracX = x - 0.5 - floorX; \ 509 509 psF64 fracY = y - 0.5 - floorY; \ 510 int intFloorX = (int) floorX; \511 int intFloorY = (int) floorY; \512 intlastX = input->numCols - 1; \513 intlastY = input->numRows - 1; \510 psS32 intFloorX = (psS32) floorX; \ 511 psS32 intFloorY = (psS32) floorY; \ 512 psS32 lastX = input->numCols - 1; \ 513 psS32 lastY = input->numRows - 1; \ 514 514 ps##TYPE V00; \ 515 515 ps##TYPE V01; \ 516 516 ps##TYPE V10; \ 517 517 ps##TYPE V11; \ 518 bool valid00 = false; \519 bool valid01 = false; \520 bool valid10 = false; \521 bool valid11 = false; \518 psBool valid00 = false; \ 519 psBool valid01 = false; \ 520 psBool valid10 = false; \ 521 psBool valid11 = false; \ 522 522 \ 523 523 if (intFloorY >= 0 && intFloorY <= lastY) { \ … … 556 556 \ 557 557 psF64 V0; \ 558 bool valid0 = true; \558 psBool valid0 = true; \ 559 559 if (valid00 && valid10) { \ 560 560 V0 = V00*(1-fracX)+V10*fracX; \ … … 568 568 \ 569 569 psF64 V1; \ 570 bool valid1 = true; \570 psBool valid1 = true; \ 571 571 if (valid01 && valid11) { \ 572 572 V1 = V01*(1-fracX)+V11*fracX; \ … … 595 595 float y, \ 596 596 const psImage* mask, \ 597 unsigned intmaskVal, \597 psU32 maskVal, \ 598 598 psC64 unexposedValue) \ 599 599 { \ … … 602 602 psF64 fracX = x - 0.5 - floorX; \ 603 603 psF64 fracY = y - 0.5 - floorY; \ 604 int intFloorX = (int) floorX; \605 int intFloorY = (int) floorY; \606 intlastX = input->numCols - 1; \607 intlastY = input->numRows - 1; \604 psS32 intFloorX = (psS32) floorX; \ 605 psS32 intFloorY = (psS32) floorY; \ 606 psS32 lastX = input->numCols - 1; \ 607 psS32 lastY = input->numRows - 1; \ 608 608 ps##TYPE V00; \ 609 609 ps##TYPE V01; \ 610 610 ps##TYPE V10; \ 611 611 ps##TYPE V11; \ 612 bool valid00 = false; \613 bool valid01 = false; \614 bool valid10 = false; \615 bool valid11 = false; \612 psBool valid00 = false; \ 613 psBool valid01 = false; \ 614 psBool valid10 = false; \ 615 psBool valid11 = false; \ 616 616 \ 617 617 if (intFloorY >= 0 && intFloorY <= lastY) { \ … … 650 650 \ 651 651 psC64 V0; \ 652 bool valid0 = true; \652 psBool valid0 = true; \ 653 653 if (valid00 && valid10) { \ 654 654 V0 = V00*(1-fracX)+V10*fracX; \ … … 662 662 \ 663 663 psC64 V1; \ 664 bool valid1 = true; \664 psBool valid1 = true; \ 665 665 if (valid01 && valid11) { \ 666 666 V0 = V01*(1-fracX)+V11*fracX; \
Note:
See TracChangeset
for help on using the changeset viewer.
