< prev index next >
modules/javafx.graphics/src/main/java/com/sun/marlin/MaskMarlinAlphaConsumer.java
Print this page
*** 246,255 ****
--- 246,257 ----
final int _BLK_SIZE_LG = MarlinConst.BLOCK_SIZE_LG;
// traverse flagged blocks:
final int blkW = (from >> _BLK_SIZE_LG);
final int blkE = (ato >> _BLK_SIZE_LG) + 1;
+ // ensure last block flag = 0 to process final block:
+ blkFlags[blkE] = 0;
// Perform run-length encoding and store results in the piscesCache
int curAlpha = 0;
final int _MAX_VALUE = Integer.MAX_VALUE;
*** 288,298 ****
// skip alpha = 0
if (curAlpha == 0) {
i = cx;
} else {
val = _unsafe.getByte(addr_alpha + curAlpha);
-
do {
out[off + i] = val;
i++;
} while (i < cx);
}
--- 290,299 ----
*** 304,319 ****
}
}
}
// Process remaining span:
! val = _unsafe.getByte(addr_alpha + curAlpha);
!
! do {
! out[off + i] = val;
! i++;
! } while (i < ato);
} else {
int i = 0;
while (i < from) {
--- 305,321 ----
}
}
}
// Process remaining span:
! if (curAlpha != 0) {
! val = _unsafe.getByte(addr_alpha + curAlpha);
! while (i < ato) {
! out[off + i] = val;
! i++;
! }
! }
} else {
int i = 0;
while (i < from) {
*** 343,353 ****
alphaDeltas[cx] = 0;
// fill span:
if (cx != i) {
val = _unsafe.getByte(addr_alpha + curAlpha);
-
do {
out[off + i] = val;
i++;
} while (i < cx);
}
--- 345,354 ----
*** 358,373 ****
}
}
}
// Process remaining span:
! val = _unsafe.getByte(addr_alpha + curAlpha);
!
! do {
! out[off + i] = val;
! i++;
! } while (i < ato);
while (i < w) {
out[off + i] = 0;
i++;
}
--- 359,375 ----
}
}
}
// Process remaining span:
! if (curAlpha != 0) {
! val = _unsafe.getByte(addr_alpha + curAlpha);
! while (i < ato) {
! out[off + i] = val;
! i++;
! }
! }
while (i < w) {
out[off + i] = 0;
i++;
}
< prev index next >