151 do { \ 152 if (((R|G|B) >> 8) != 0) { \ 153 ByteClamp1Component(R); \ 154 ByteClamp1Component(G); \ 155 ByteClamp1Component(B); \ 156 } \ 157 } while (0) 158 159 #define StoreByteIndexedFrom1IntRgb(pRas, PREFIX, x, rgb) \ 160 do { \ 161 int r, g, b; \ 162 ExtractIntDcmComponentsX123(rgb, r, g, b); \ 163 StoreByteIndexedFrom3ByteRgb(pRas, PREFIX, x, r, g, b); \ 164 } while (0) 165 166 #define StoreByteIndexedFrom1IntArgb(pRas, PREFIX, x, argb) \ 167 StoreByteIndexedFrom1IntRgb(pRas, PREFIX, x, argb) 168 169 #define StoreByteIndexedFrom3ByteRgb(pRas, PREFIX, x, r, g, b) \ 170 do { \ 171 r += PREFIX ## rerr[PREFIX ## XDither]; \ 172 g += PREFIX ## gerr[PREFIX ## XDither]; \ 173 b += PREFIX ## berr[PREFIX ## XDither]; \ 174 ByteClamp3Components(r, g, b); \ 175 (pRas)[x] = SurfaceData_InvColorMap(PREFIX ## InvLut, r, g, b); \ 176 } while (0) 177 178 #define StoreByteIndexedFrom4ByteArgb(pRas, PREFIX, x, a, r, g, b) \ 179 StoreByteIndexedFrom3ByteRgb(pRas, PREFIX, x, r, g, b) 180 181 #define CopyByteIndexedToIntArgbPre(pRGB, i, PREFIX, pRow, x) \ 182 do { \ 183 jint argb = PREFIX ## Lut[pRow[x]]; \ 184 jint a = URShift(argb, 24); \ 185 if (a == 0) { \ 186 argb = 0; \ 187 } else if (a < 0xff) { \ 188 jint r = (argb >> 16) & 0xff; \ 189 jint g = (argb >> 8) & 0xff; \ 190 jint b = (argb ) & 0xff; \ 191 r = MUL8(a, r); \ 192 g = MUL8(a, g); \ 193 b = MUL8(a, b); \ | 151 do { \ 152 if (((R|G|B) >> 8) != 0) { \ 153 ByteClamp1Component(R); \ 154 ByteClamp1Component(G); \ 155 ByteClamp1Component(B); \ 156 } \ 157 } while (0) 158 159 #define StoreByteIndexedFrom1IntRgb(pRas, PREFIX, x, rgb) \ 160 do { \ 161 int r, g, b; \ 162 ExtractIntDcmComponentsX123(rgb, r, g, b); \ 163 StoreByteIndexedFrom3ByteRgb(pRas, PREFIX, x, r, g, b); \ 164 } while (0) 165 166 #define StoreByteIndexedFrom1IntArgb(pRas, PREFIX, x, argb) \ 167 StoreByteIndexedFrom1IntRgb(pRas, PREFIX, x, argb) 168 169 #define StoreByteIndexedFrom3ByteRgb(pRas, PREFIX, x, r, g, b) \ 170 do { \ 171 if (!(((r == 0) || (r == 255)) && \ 172 ((g == 0) || (g == 255)) && \ 173 ((b == 0) || (b == 255)) && \ 174 (representsPrimary == 1))) { \ 175 r += PREFIX ## rerr[PREFIX ## XDither]; \ 176 g += PREFIX ## gerr[PREFIX ## XDither]; \ 177 b += PREFIX ## berr[PREFIX ## XDither]; \ 178 } \ 179 ByteClamp3Components(r, g, b); \ 180 (pRas)[x] = SurfaceData_InvColorMap(PREFIX ## InvLut, r, g, b); \ 181 } while (0) 182 183 #define StoreByteIndexedFrom4ByteArgb(pRas, PREFIX, x, a, r, g, b) \ 184 StoreByteIndexedFrom3ByteRgb(pRas, PREFIX, x, r, g, b) 185 186 #define CopyByteIndexedToIntArgbPre(pRGB, i, PREFIX, pRow, x) \ 187 do { \ 188 jint argb = PREFIX ## Lut[pRow[x]]; \ 189 jint a = URShift(argb, 24); \ 190 if (a == 0) { \ 191 argb = 0; \ 192 } else if (a < 0xff) { \ 193 jint r = (argb >> 16) & 0xff; \ 194 jint g = (argb >> 8) & 0xff; \ 195 jint b = (argb ) & 0xff; \ 196 r = MUL8(a, r); \ 197 g = MUL8(a, g); \ 198 b = MUL8(a, b); \ |