Changeset 34627
- Timestamp:
- Oct 30, 2012, 2:51:40 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/czw_branch/20120906/psLib/src/imageops/psImagePixelManip.c
r34453 r34627 234 234 pixelsOverlaid += (imageRowLimit - y0) * (imageColLimit - x0); \ 235 235 } 236 237 #define psImageOverlayLoopMask(DATATYPE) { \ 238 for (int row=y0;row<imageRowLimit;row++) { \ 239 ps##DATATYPE* imageRow = image->data.DATATYPE[row]; \ 240 ps##DATATYPE* overlayRow = overlay->data.DATATYPE[row-y0]; \ 241 for (int col=x0;col<imageColLimit;col++) { \ 242 if (!isfinite(imageRow[col])) { \ 243 imageRow[col] = overlayRow[col-x0]; \ 244 } \ 245 else if (!isfinite(overlayRow[col-x0])) { \ 246 imageRow[col] = imageRow[col]; \ 247 } \ 248 else { \ 249 imageRow[col] &= overlayRow[col-x0]; \ 250 } \ 251 } \ 252 } \ 253 pixelsOverlaid += (imageRowLimit - y0) * (imageColLimit - x0); \ 254 } 236 255 237 256 … … 295 314 case 'E': \ 296 315 psImageOverlayLoopClean(DATATYPE,=); \ 297 break; \316 break; \ 298 317 case '/': \ 299 318 psImageOverlayLoopDivide(DATATYPE,BADVALUE); \ … … 309 328 } \ 310 329 break; 330 #define psImageOverlayCaseInt(DATATYPE,BADVALUE) \ 331 case PS_TYPE_##DATATYPE: \ 332 switch (*op) { \ 333 case '+': \ 334 psImageOverlayLoop(DATATYPE,+=); \ 335 break; \ 336 case '-': \ 337 psImageOverlayLoop(DATATYPE,-=); \ 338 break; \ 339 case '*': \ 340 psImageOverlayLoop(DATATYPE,*=); \ 341 break; \ 342 case 'E': \ 343 psImageOverlayLoopClean(DATATYPE,=); \ 344 break; \ 345 case 'M': \ 346 psImageOverlayLoopMask(DATATYPE); \ 347 break; \ 348 case '/': \ 349 psImageOverlayLoopDivide(DATATYPE,BADVALUE); \ 350 break; \ 351 case '=': \ 352 psImageOverlaySetLoop(DATATYPE); \ 353 break; \ 354 default: \ 355 psError(PS_ERR_BAD_PARAMETER_VALUE, true, \ 356 _("Specified operation, '%s', is not supported."), \ 357 op); \ 358 return pixelsOverlaid; \ 359 } \ 360 break; 311 361 312 362 switch (type) { 313 psImageOverlayCase (U8, 0);314 psImageOverlayCase (U16,0);315 psImageOverlayCase (U32,0); // Not a requirement316 psImageOverlayCase (U64,0); // Not a requirement317 psImageOverlayCase (S8, 0);318 psImageOverlayCase (S16,0);319 psImageOverlayCase (S32,0); // Not a requirement320 psImageOverlayCase (S64,0); // Not a requirement363 psImageOverlayCaseInt(U8, 0); 364 psImageOverlayCaseInt(U16,0); 365 psImageOverlayCaseInt(U32,0); // Not a requirement 366 psImageOverlayCaseInt(U64,0); // Not a requirement 367 psImageOverlayCaseInt(S8, 0); 368 psImageOverlayCaseInt(S16,0); 369 psImageOverlayCaseInt(S32,0); // Not a requirement 370 psImageOverlayCaseInt(S64,0); // Not a requirement 321 371 psImageOverlayCase(F32,NAN); 322 372 psImageOverlayCase(F64,NAN);
Note:
See TracChangeset
for help on using the changeset viewer.
