Changeset 5224 for trunk/psLib/src/imageops/psImagePixelManip.c
- Timestamp:
- Oct 4, 2005, 5:51:43 PM (21 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/imageops/psImagePixelManip.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/imageops/psImagePixelManip.c
r5064 r5224 10 10 * @author Ross Harman, MHPCC 11 11 * 12 * @version $Revision: 1.1 2$ $Name: not supported by cvs2svn $13 * @date $Date: 2005- 09-16 23:56:48$12 * @version $Revision: 1.13 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2005-10-05 03:51:43 $ 14 14 * 15 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 403 403 psMaskType maskValue) 404 404 { 405 406 for (int iy = 0; iy < image->numRows; iy++) {407 for (int ix = 0; ix < image->numCols; ix++) {408 if (ix + image->col0 < region.x0)409 continue;410 if (ix + image->col0 >= region.x1)411 continue;412 if (iy + image->row0 < region.y0)413 continue;414 if (iy + image->row0 >= region.y1)415 continue;416 if ( !strncmp(op, "&", 2) || !strncmp(op, "AND", 5) ) {417 image->data.U8[iy][ix] &= maskValue;418 } else if ( !strncmp(op, "|", 2) || !strncmp(op, "OR", 5) ) {419 image->data.U8[iy][ix] |= maskValue;420 } else if ( !strncmp(op, "=", 2) || !strncmp(op, "EQUAL", 5) ) {421 image->data.U8[iy][ix] = maskValue;422 } else if ( !strncmp(op, "^", 2) || !strncmp(op, "XOR", 5) ) {423 image->data.U8[iy][ix] ^= maskValue;405 for (int j = 0; j < image->numRows; j++) { 406 for (int i = 0; i < image->numCols; i++) { 407 if ( (j + image->row0) >= region.y0 && 408 (j + image->row0) <= region.y1 && 409 (i + image->col0) >= region.x0 && 410 (i + image->col0) <= region.x1 ) { 411 if ( !strncmp(op, "&", 2) || !strncmp(op, "AND", 5) ) { 412 image->data.PS_TYPE_MASK_DATA[j][i] &= maskValue; 413 } else if ( !strncmp(op, "|", 2) || !strncmp(op, "OR", 5) ) { 414 image->data.PS_TYPE_MASK_DATA[j][i] |= maskValue; 415 } else if ( !strncmp(op, "=", 2) || !strncmp(op, "EQUAL", 5) ) { 416 image->data.PS_TYPE_MASK_DATA[j][i] = maskValue; 417 } else if ( !strncmp(op, "^", 2) || !strncmp(op, "XOR", 5) ) { 418 image->data.PS_TYPE_MASK_DATA[j][i] ^= maskValue; 419 } else { 420 psError(PS_ERR_BAD_PARAMETER_VALUE,true, 421 "The logical operation specified is incorrect\n"); 422 return; 423 } 424 424 } 425 425 } 426 426 } 427 /* 428 for (int iy = 0; iy < image->numRows; iy++) { 429 for (int ix = 0; ix < image->numCols; ix++) { 430 if (ix + image->col0 >= region.x0) 431 continue; 432 if (ix + image->col0 <= region.x1) 433 continue; 434 if (iy + image->row0 >= region.y0) 435 continue; 436 if (iy + image->row0 <= region.y1) 437 continue; 438 if ( !strncmp(op, "&", 2) || !strncmp(op, "AND", 5) ) { 439 image->data.PS_TYPE_MASK_DATA[iy][ix] &= maskValue; 440 } else if ( !strncmp(op, "|", 2) || !strncmp(op, "OR", 5) ) { 441 image->data.PS_TYPE_MASK_DATA[iy][ix] |= maskValue; 442 } else if ( !strncmp(op, "=", 2) || !strncmp(op, "EQUAL", 5) ) { 443 image->data.PS_TYPE_MASK_DATA[iy][ix] = maskValue; 444 } else if ( !strncmp(op, "^", 2) || !strncmp(op, "XOR", 5) ) { 445 image->data.PS_TYPE_MASK_DATA[iy][ix] ^= maskValue; 446 } 447 } 448 } 449 */ 427 450 } 428 451 … … 434 457 psMaskType maskValue) 435 458 { 436 437 for (int iy = 0; iy < image->numRows; iy++) { 438 for (int ix = 0; ix < image->numCols; ix++) { 439 if (ix + image->col0 < region.x0) 440 goto maskit; 441 if (ix + image->col0 >= region.x1) 442 goto maskit; 443 if (iy + image->row0 < region.y0) 444 goto maskit; 445 if (iy + image->row0 >= region.y1) 446 goto maskit; 447 continue; 448 maskit: 449 if ( !strncmp(op, "&", 2) || !strncmp(op, "AND", 5) ) { 450 image->data.U8[iy][ix] &= maskValue; 451 } else if ( !strncmp(op, "|", 2) || !strncmp(op, "OR", 5) ) { 452 image->data.U8[iy][ix] |= maskValue; 453 } else if ( !strncmp(op, "=", 2) || !strncmp(op, "EQUAL", 5) ) { 454 image->data.U8[iy][ix] = maskValue; 455 } else if ( !strncmp(op, "^", 2) || !strncmp(op, "XOR", 5) ) { 456 image->data.U8[iy][ix] ^= maskValue; 459 for (int j = 0; j < image->numRows; j++) { 460 for (int i = 0; i < image->numCols; i++) { 461 if ( (j + image->row0) < region.y0 || 462 (j + image->row0) > region.y1 || 463 (i + image->col0) < region.x0 || 464 (i + image->col0) > region.x1 ) { 465 if ( !strncmp(op, "&", 2) || !strncmp(op, "AND", 5) ) { 466 image->data.PS_TYPE_MASK_DATA[j][i] &= maskValue; 467 } else if ( !strncmp(op, "|", 2) || !strncmp(op, "OR", 5) ) { 468 image->data.PS_TYPE_MASK_DATA[j][i] |= maskValue; 469 } else if ( !strncmp(op, "=", 2) || !strncmp(op, "EQUAL", 5) ) { 470 image->data.PS_TYPE_MASK_DATA[j][i] = maskValue; 471 } else if ( !strncmp(op, "^", 2) || !strncmp(op, "XOR", 5) ) { 472 image->data.PS_TYPE_MASK_DATA[j][i] ^= maskValue; 473 } else { 474 psError(PS_ERR_BAD_PARAMETER_VALUE,true, 475 "The logical operation specified is incorrect\n"); 476 return; 477 } 457 478 } 458 479 } 459 480 } 481 /* 482 for (int iy = 0; iy < image->numRows; iy++) { 483 for (int ix = 0; ix < image->numCols; ix++) { 484 if (ix + image->col0 < region.x0) 485 goto maskit; 486 if (ix + image->col0 > region.x1) 487 goto maskit; 488 if (iy + image->row0 < region.y0) 489 goto maskit; 490 if (iy + image->row0 > region.y1) 491 goto maskit; 492 continue; 493 maskit: 494 if ( !strncmp(op, "&", 2) || !strncmp(op, "AND", 5) ) { 495 image->data.PS_TYPE_MASK_DATA[iy][ix] &= maskValue; 496 } else if ( !strncmp(op, "|", 2) || !strncmp(op, "OR", 5) ) { 497 image->data.PS_TYPE_MASK_DATA[iy][ix] |= maskValue; 498 } else if ( !strncmp(op, "=", 2) || !strncmp(op, "EQUAL", 5) ) { 499 image->data.PS_TYPE_MASK_DATA[iy][ix] = maskValue; 500 } else if ( !strncmp(op, "^", 2) || !strncmp(op, "XOR", 5) ) { 501 image->data.PS_TYPE_MASK_DATA[iy][ix] ^= maskValue; 502 } 503 } 504 } 505 */ 460 506 } 461 507 … … 469 515 psMaskType maskValue) 470 516 { 517 if (image == NULL) { 518 psError(PS_ERR_BAD_PARAMETER_NULL, true, 519 "Invalid image input. Image is NULL.\n"); 520 return; 521 } 522 471 523 472 524 double dx, dy, r2, R2; … … 479 531 dy = iy + image->row0 - y; 480 532 r2 = PS_SQR(dx) + PS_SQR(dy); 481 if (r2 > R2) 482 continue; 483 if ( !strncmp(op, "&", 2) || !strncmp(op, "AND", 5) ) { 484 image->data.U8[iy][ix] &= maskValue; 485 } else if ( !strncmp(op, "|", 2) || !strncmp(op, "OR", 5) ) { 486 image->data.U8[iy][ix] |= maskValue; 487 } else if ( !strncmp(op, "=", 2) || !strncmp(op, "EQUAL", 5) ) { 488 image->data.U8[iy][ix] = maskValue; 489 } else if ( !strncmp(op, "^", 2) || !strncmp(op, "XOR", 5) ) { 490 image->data.U8[iy][ix] ^= maskValue; 533 if (r2 <= R2) { 534 if ( !strncmp(op, "&", 2) || !strncmp(op, "AND", 5) ) { 535 image->data.PS_TYPE_MASK_DATA[iy][ix] &= maskValue; 536 } else if ( !strncmp(op, "|", 2) || !strncmp(op, "OR", 5) ) { 537 image->data.PS_TYPE_MASK_DATA[iy][ix] |= maskValue; 538 } else if ( !strncmp(op, "=", 2) || !strncmp(op, "EQUAL", 5) ) { 539 image->data.PS_TYPE_MASK_DATA[iy][ix] = maskValue; 540 } else if ( !strncmp(op, "^", 2) || !strncmp(op, "XOR", 5) ) { 541 image->data.PS_TYPE_MASK_DATA[iy][ix] ^= maskValue; 542 } else { 543 psError(PS_ERR_BAD_PARAMETER_VALUE,true, 544 "The logical operation specified is incorrect\n"); 545 return; 546 } 491 547 } 492 548 } … … 513 569 dy = iy + image->row0 - y; 514 570 r2 = PS_SQR(dx) + PS_SQR(dy); 515 if (r2 < R2) 516 continue; 517 if ( !strncmp(op, "&", 2) || !strncmp(op, "AND", 5) ) { 518 image->data.U8[iy][ix] &= maskValue; 519 } else if ( !strncmp(op, "|", 2) || !strncmp(op, "OR", 5) ) { 520 image->data.U8[iy][ix] |= maskValue; 521 } else if ( !strncmp(op, "=", 2) || !strncmp(op, "EQUAL", 5) ) { 522 image->data.U8[iy][ix] = maskValue; 523 } else if ( !strncmp(op, "^", 2) || !strncmp(op, "XOR", 5) ) { 524 image->data.U8[iy][ix] ^= maskValue; 571 if (r2 > R2) { 572 if ( !strncmp(op, "&", 2) || !strncmp(op, "AND", 5) ) { 573 image->data.PS_TYPE_MASK_DATA[iy][ix] &= maskValue; 574 } else if ( !strncmp(op, "|", 2) || !strncmp(op, "OR", 5) ) { 575 image->data.PS_TYPE_MASK_DATA[iy][ix] |= maskValue; 576 } else if ( !strncmp(op, "=", 2) || !strncmp(op, "EQUAL", 5) ) { 577 image->data.PS_TYPE_MASK_DATA[iy][ix] = maskValue; 578 } else if ( !strncmp(op, "^", 2) || !strncmp(op, "XOR", 5) ) { 579 image->data.PS_TYPE_MASK_DATA[iy][ix] ^= maskValue; 580 } else { 581 psError(PS_ERR_BAD_PARAMETER_VALUE,true, 582 "The logical operation specified is incorrect\n"); 583 return; 584 } 525 585 } 526 586 }
Note:
See TracChangeset
for help on using the changeset viewer.
