< prev index next >
src/java.desktop/share/native/libawt/java2d/loops/ByteIndexed.h
Print this page
@@ -41,11 +41,11 @@
#define DeclareByteIndexedLoadVars(PREFIX) \
jint *PREFIX ## Lut;
#define DeclareByteIndexedStoreVars(PREFIX) \
- int PREFIX ## XDither, PREFIX ## YDither; \
+ int PREFIX ## XDither, PREFIX ## YDither, PREFIX ## RepPrims; \
char *PREFIX ## rerr, *PREFIX ## gerr, *PREFIX ## berr; \
unsigned char *PREFIX ## InvLut;
#define SetByteIndexedStoreVarsYPos(PREFIX, pRasInfo, LOC) \
do { \
@@ -68,10 +68,11 @@
*/
#define InitByteIndexedStoreVarsY(PREFIX, pRasInfo) \
do { \
SetByteIndexedStoreVarsYPos(PREFIX, pRasInfo, (pRasInfo)->bounds.y1); \
PREFIX ## InvLut = (pRasInfo)->invColorTable; \
+ PREFIX ## RepPrims = (pRasInfo)->representsPrimaries; \
} while (0)
#define InitByteIndexedStoreVarsX(PREFIX, pRasInfo) \
SetByteIndexedStoreVarsXPos(PREFIX, pRasInfo, (pRasInfo)->bounds.x1);
@@ -166,13 +167,18 @@
#define StoreByteIndexedFrom1IntArgb(pRas, PREFIX, x, argb) \
StoreByteIndexedFrom1IntRgb(pRas, PREFIX, x, argb)
#define StoreByteIndexedFrom3ByteRgb(pRas, PREFIX, x, r, g, b) \
do { \
+ if (!(((r == 0) || (r == 255)) && \
+ ((g == 0) || (g == 255)) && \
+ ((b == 0) || (b == 255)) && \
+ PREFIX ## RepPrims)) { \
r += PREFIX ## rerr[PREFIX ## XDither]; \
g += PREFIX ## gerr[PREFIX ## XDither]; \
b += PREFIX ## berr[PREFIX ## XDither]; \
+ } \
ByteClamp3Components(r, g, b); \
(pRas)[x] = SurfaceData_InvColorMap(PREFIX ## InvLut, r, g, b); \
} while (0)
#define StoreByteIndexedFrom4ByteArgb(pRas, PREFIX, x, a, r, g, b) \
< prev index next >