| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkCodecPriv.h" | 8 #include "SkCodecPriv.h" |
| 9 #include "SkColorPriv.h" | 9 #include "SkColorPriv.h" |
| 10 #include "SkMaskSwizzler.h" | 10 #include "SkMaskSwizzler.h" |
| 11 | 11 |
| 12 static SkSwizzler::ResultAlpha swizzle_mask16_to_n32_opaque( | 12 static void swizzle_mask16_to_n32_opaque( |
| 13 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, | 13 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, |
| 14 uint32_t startX, uint32_t sampleX) { | 14 uint32_t startX, uint32_t sampleX) { |
| 15 | 15 |
| 16 // Use the masks to decode to the destination | 16 // Use the masks to decode to the destination |
| 17 uint16_t* srcPtr = ((uint16_t*) srcRow) + startX; | 17 uint16_t* srcPtr = ((uint16_t*) srcRow) + startX; |
| 18 SkPMColor* dstPtr = (SkPMColor*) dstRow; | 18 SkPMColor* dstPtr = (SkPMColor*) dstRow; |
| 19 for (int i = 0; i < width; i++) { | 19 for (int i = 0; i < width; i++) { |
| 20 uint16_t p = srcPtr[0]; | 20 uint16_t p = srcPtr[0]; |
| 21 uint8_t red = masks->getRed(p); | 21 uint8_t red = masks->getRed(p); |
| 22 uint8_t green = masks->getGreen(p); | 22 uint8_t green = masks->getGreen(p); |
| 23 uint8_t blue = masks->getBlue(p); | 23 uint8_t blue = masks->getBlue(p); |
| 24 dstPtr[i] = SkPackARGB32NoCheck(0xFF, red, green, blue); | 24 dstPtr[i] = SkPackARGB32NoCheck(0xFF, red, green, blue); |
| 25 srcPtr += sampleX; | 25 srcPtr += sampleX; |
| 26 } | 26 } |
| 27 return SkSwizzler::kOpaque_ResultAlpha; | |
| 28 } | 27 } |
| 29 | 28 |
| 30 static SkSwizzler::ResultAlpha swizzle_mask16_to_n32_unpremul( | 29 static void swizzle_mask16_to_n32_unpremul( |
| 31 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, | 30 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, |
| 32 uint32_t startX, uint32_t sampleX) { | 31 uint32_t startX, uint32_t sampleX) { |
| 33 | 32 |
| 34 // Use the masks to decode to the destination | 33 // Use the masks to decode to the destination |
| 35 uint16_t* srcPtr = ((uint16_t*) srcRow) + startX; | 34 uint16_t* srcPtr = ((uint16_t*) srcRow) + startX; |
| 36 SkPMColor* dstPtr = (SkPMColor*) dstRow; | 35 SkPMColor* dstPtr = (SkPMColor*) dstRow; |
| 37 INIT_RESULT_ALPHA; | |
| 38 for (int i = 0; i < width; i++) { | 36 for (int i = 0; i < width; i++) { |
| 39 uint16_t p = srcPtr[0]; | 37 uint16_t p = srcPtr[0]; |
| 40 uint8_t red = masks->getRed(p); | 38 uint8_t red = masks->getRed(p); |
| 41 uint8_t green = masks->getGreen(p); | 39 uint8_t green = masks->getGreen(p); |
| 42 uint8_t blue = masks->getBlue(p); | 40 uint8_t blue = masks->getBlue(p); |
| 43 uint8_t alpha = masks->getAlpha(p); | 41 uint8_t alpha = masks->getAlpha(p); |
| 44 UPDATE_RESULT_ALPHA(alpha); | |
| 45 dstPtr[i] = SkPackARGB32NoCheck(alpha, red, green, blue); | 42 dstPtr[i] = SkPackARGB32NoCheck(alpha, red, green, blue); |
| 46 srcPtr += sampleX; | 43 srcPtr += sampleX; |
| 47 } | 44 } |
| 48 return COMPUTE_RESULT_ALPHA; | |
| 49 } | 45 } |
| 50 | 46 |
| 51 static SkSwizzler::ResultAlpha swizzle_mask16_to_n32_premul( | 47 static void swizzle_mask16_to_n32_premul( |
| 52 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, | 48 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, |
| 53 uint32_t startX, uint32_t sampleX) { | 49 uint32_t startX, uint32_t sampleX) { |
| 54 | 50 |
| 55 // Use the masks to decode to the destination | 51 // Use the masks to decode to the destination |
| 56 uint16_t* srcPtr = ((uint16_t*) srcRow) + startX; | 52 uint16_t* srcPtr = ((uint16_t*) srcRow) + startX; |
| 57 SkPMColor* dstPtr = (SkPMColor*) dstRow; | 53 SkPMColor* dstPtr = (SkPMColor*) dstRow; |
| 58 INIT_RESULT_ALPHA; | |
| 59 for (int i = 0; i < width; i++) { | 54 for (int i = 0; i < width; i++) { |
| 60 uint16_t p = srcPtr[0]; | 55 uint16_t p = srcPtr[0]; |
| 61 uint8_t red = masks->getRed(p); | 56 uint8_t red = masks->getRed(p); |
| 62 uint8_t green = masks->getGreen(p); | 57 uint8_t green = masks->getGreen(p); |
| 63 uint8_t blue = masks->getBlue(p); | 58 uint8_t blue = masks->getBlue(p); |
| 64 uint8_t alpha = masks->getAlpha(p); | 59 uint8_t alpha = masks->getAlpha(p); |
| 65 UPDATE_RESULT_ALPHA(alpha); | |
| 66 dstPtr[i] = SkPreMultiplyARGB(alpha, red, green, blue); | 60 dstPtr[i] = SkPreMultiplyARGB(alpha, red, green, blue); |
| 67 srcPtr += sampleX; | 61 srcPtr += sampleX; |
| 68 } | 62 } |
| 69 return COMPUTE_RESULT_ALPHA; | |
| 70 } | 63 } |
| 71 | 64 |
| 72 // TODO (msarett): We have promoted a two byte per pixel image to 8888, only to | 65 // TODO (msarett): We have promoted a two byte per pixel image to 8888, only to |
| 73 // convert it back to 565. Instead, we should swizzle to 565 directly. | 66 // convert it back to 565. Instead, we should swizzle to 565 directly. |
| 74 static SkSwizzler::ResultAlpha swizzle_mask16_to_565( | 67 static void swizzle_mask16_to_565( |
| 75 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, | 68 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, |
| 76 uint32_t startX, uint32_t sampleX) { | 69 uint32_t startX, uint32_t sampleX) { |
| 77 | 70 |
| 78 // Use the masks to decode to the destination | 71 // Use the masks to decode to the destination |
| 79 uint16_t* srcPtr = ((uint16_t*) srcRow) + startX; | 72 uint16_t* srcPtr = ((uint16_t*) srcRow) + startX; |
| 80 uint16_t* dstPtr = (uint16_t*) dstRow; | 73 uint16_t* dstPtr = (uint16_t*) dstRow; |
| 81 for (int i = 0; i < width; i++) { | 74 for (int i = 0; i < width; i++) { |
| 82 uint16_t p = srcPtr[0]; | 75 uint16_t p = srcPtr[0]; |
| 83 uint8_t red = masks->getRed(p); | 76 uint8_t red = masks->getRed(p); |
| 84 uint8_t green = masks->getGreen(p); | 77 uint8_t green = masks->getGreen(p); |
| 85 uint8_t blue = masks->getBlue(p); | 78 uint8_t blue = masks->getBlue(p); |
| 86 dstPtr[i] = SkPack888ToRGB16(red, green, blue); | 79 dstPtr[i] = SkPack888ToRGB16(red, green, blue); |
| 87 srcPtr += sampleX; | 80 srcPtr += sampleX; |
| 88 } | 81 } |
| 89 return SkSwizzler::kOpaque_ResultAlpha; | |
| 90 } | 82 } |
| 91 | 83 |
| 92 static SkSwizzler::ResultAlpha swizzle_mask24_to_n32_opaque( | 84 static void swizzle_mask24_to_n32_opaque( |
| 93 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, | 85 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, |
| 94 uint32_t startX, uint32_t sampleX) { | 86 uint32_t startX, uint32_t sampleX) { |
| 95 | 87 |
| 96 // Use the masks to decode to the destination | 88 // Use the masks to decode to the destination |
| 97 srcRow += 3 * startX; | 89 srcRow += 3 * startX; |
| 98 SkPMColor* dstPtr = (SkPMColor*) dstRow; | 90 SkPMColor* dstPtr = (SkPMColor*) dstRow; |
| 99 for (int i = 0; i < width; i++) { | 91 for (int i = 0; i < width; i++) { |
| 100 uint32_t p = srcRow[0] | (srcRow[1] << 8) | srcRow[2] << 16; | 92 uint32_t p = srcRow[0] | (srcRow[1] << 8) | srcRow[2] << 16; |
| 101 uint8_t red = masks->getRed(p); | 93 uint8_t red = masks->getRed(p); |
| 102 uint8_t green = masks->getGreen(p); | 94 uint8_t green = masks->getGreen(p); |
| 103 uint8_t blue = masks->getBlue(p); | 95 uint8_t blue = masks->getBlue(p); |
| 104 dstPtr[i] = SkPackARGB32NoCheck(0xFF, red, green, blue); | 96 dstPtr[i] = SkPackARGB32NoCheck(0xFF, red, green, blue); |
| 105 srcRow += 3 * sampleX; | 97 srcRow += 3 * sampleX; |
| 106 } | 98 } |
| 107 return SkSwizzler::kOpaque_ResultAlpha; | |
| 108 } | 99 } |
| 109 | 100 |
| 110 static SkSwizzler::ResultAlpha swizzle_mask24_to_n32_unpremul( | 101 static void swizzle_mask24_to_n32_unpremul( |
| 111 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, | 102 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, |
| 112 uint32_t startX, uint32_t sampleX) { | 103 uint32_t startX, uint32_t sampleX) { |
| 113 | 104 |
| 114 // Use the masks to decode to the destination | 105 // Use the masks to decode to the destination |
| 115 srcRow += 3 * startX; | 106 srcRow += 3 * startX; |
| 116 SkPMColor* dstPtr = (SkPMColor*) dstRow; | 107 SkPMColor* dstPtr = (SkPMColor*) dstRow; |
| 117 INIT_RESULT_ALPHA; | |
| 118 for (int i = 0; i < width; i++) { | 108 for (int i = 0; i < width; i++) { |
| 119 uint32_t p = srcRow[0] | (srcRow[1] << 8) | srcRow[2] << 16; | 109 uint32_t p = srcRow[0] | (srcRow[1] << 8) | srcRow[2] << 16; |
| 120 uint8_t red = masks->getRed(p); | 110 uint8_t red = masks->getRed(p); |
| 121 uint8_t green = masks->getGreen(p); | 111 uint8_t green = masks->getGreen(p); |
| 122 uint8_t blue = masks->getBlue(p); | 112 uint8_t blue = masks->getBlue(p); |
| 123 uint8_t alpha = masks->getAlpha(p); | 113 uint8_t alpha = masks->getAlpha(p); |
| 124 UPDATE_RESULT_ALPHA(alpha); | |
| 125 dstPtr[i] = SkPackARGB32NoCheck(alpha, red, green, blue); | 114 dstPtr[i] = SkPackARGB32NoCheck(alpha, red, green, blue); |
| 126 srcRow += 3 * sampleX; | 115 srcRow += 3 * sampleX; |
| 127 } | 116 } |
| 128 return COMPUTE_RESULT_ALPHA; | |
| 129 } | 117 } |
| 130 | 118 |
| 131 static SkSwizzler::ResultAlpha swizzle_mask24_to_n32_premul( | 119 static void swizzle_mask24_to_n32_premul( |
| 132 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, | 120 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, |
| 133 uint32_t startX, uint32_t sampleX) { | 121 uint32_t startX, uint32_t sampleX) { |
| 134 | 122 |
| 135 // Use the masks to decode to the destination | 123 // Use the masks to decode to the destination |
| 136 srcRow += 3 * startX; | 124 srcRow += 3 * startX; |
| 137 SkPMColor* dstPtr = (SkPMColor*) dstRow; | 125 SkPMColor* dstPtr = (SkPMColor*) dstRow; |
| 138 INIT_RESULT_ALPHA; | |
| 139 for (int i = 0; i < width; i++) { | 126 for (int i = 0; i < width; i++) { |
| 140 uint32_t p = srcRow[0] | (srcRow[1] << 8) | srcRow[2] << 16; | 127 uint32_t p = srcRow[0] | (srcRow[1] << 8) | srcRow[2] << 16; |
| 141 uint8_t red = masks->getRed(p); | 128 uint8_t red = masks->getRed(p); |
| 142 uint8_t green = masks->getGreen(p); | 129 uint8_t green = masks->getGreen(p); |
| 143 uint8_t blue = masks->getBlue(p); | 130 uint8_t blue = masks->getBlue(p); |
| 144 uint8_t alpha = masks->getAlpha(p); | 131 uint8_t alpha = masks->getAlpha(p); |
| 145 UPDATE_RESULT_ALPHA(alpha); | |
| 146 dstPtr[i] = SkPreMultiplyARGB(alpha, red, green, blue); | 132 dstPtr[i] = SkPreMultiplyARGB(alpha, red, green, blue); |
| 147 srcRow += 3 * sampleX; | 133 srcRow += 3 * sampleX; |
| 148 } | 134 } |
| 149 return COMPUTE_RESULT_ALPHA; | |
| 150 } | 135 } |
| 151 | 136 |
| 152 static SkSwizzler::ResultAlpha swizzle_mask24_to_565( | 137 static void swizzle_mask24_to_565( |
| 153 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, | 138 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, |
| 154 uint32_t startX, uint32_t sampleX) { | 139 uint32_t startX, uint32_t sampleX) { |
| 155 | 140 |
| 156 // Use the masks to decode to the destination | 141 // Use the masks to decode to the destination |
| 157 srcRow += 3 * startX; | 142 srcRow += 3 * startX; |
| 158 uint16_t* dstPtr = (uint16_t*) dstRow; | 143 uint16_t* dstPtr = (uint16_t*) dstRow; |
| 159 for (int i = 0; i < width; i++) { | 144 for (int i = 0; i < width; i++) { |
| 160 uint32_t p = srcRow[0] | (srcRow[1] << 8) | srcRow[2] << 16; | 145 uint32_t p = srcRow[0] | (srcRow[1] << 8) | srcRow[2] << 16; |
| 161 uint8_t red = masks->getRed(p); | 146 uint8_t red = masks->getRed(p); |
| 162 uint8_t green = masks->getGreen(p); | 147 uint8_t green = masks->getGreen(p); |
| 163 uint8_t blue = masks->getBlue(p); | 148 uint8_t blue = masks->getBlue(p); |
| 164 dstPtr[i] = SkPack888ToRGB16(red, green, blue); | 149 dstPtr[i] = SkPack888ToRGB16(red, green, blue); |
| 165 srcRow += 3 * sampleX; | 150 srcRow += 3 * sampleX; |
| 166 } | 151 } |
| 167 return SkSwizzler::kOpaque_ResultAlpha; | |
| 168 } | 152 } |
| 169 | 153 |
| 170 static SkSwizzler::ResultAlpha swizzle_mask32_to_n32_opaque( | 154 static void swizzle_mask32_to_n32_opaque( |
| 171 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, | 155 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, |
| 172 uint32_t startX, uint32_t sampleX) { | 156 uint32_t startX, uint32_t sampleX) { |
| 173 | 157 |
| 174 // Use the masks to decode to the destination | 158 // Use the masks to decode to the destination |
| 175 uint32_t* srcPtr = ((uint32_t*) srcRow) + startX; | 159 uint32_t* srcPtr = ((uint32_t*) srcRow) + startX; |
| 176 SkPMColor* dstPtr = (SkPMColor*) dstRow; | 160 SkPMColor* dstPtr = (SkPMColor*) dstRow; |
| 177 for (int i = 0; i < width; i++) { | 161 for (int i = 0; i < width; i++) { |
| 178 uint32_t p = srcPtr[0]; | 162 uint32_t p = srcPtr[0]; |
| 179 uint8_t red = masks->getRed(p); | 163 uint8_t red = masks->getRed(p); |
| 180 uint8_t green = masks->getGreen(p); | 164 uint8_t green = masks->getGreen(p); |
| 181 uint8_t blue = masks->getBlue(p); | 165 uint8_t blue = masks->getBlue(p); |
| 182 dstPtr[i] = SkPackARGB32NoCheck(0xFF, red, green, blue); | 166 dstPtr[i] = SkPackARGB32NoCheck(0xFF, red, green, blue); |
| 183 srcPtr += sampleX; | 167 srcPtr += sampleX; |
| 184 } | 168 } |
| 185 return SkSwizzler::kOpaque_ResultAlpha; | |
| 186 } | 169 } |
| 187 | 170 |
| 188 static SkSwizzler::ResultAlpha swizzle_mask32_to_n32_unpremul( | 171 static void swizzle_mask32_to_n32_unpremul( |
| 189 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, | 172 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, |
| 190 uint32_t startX, uint32_t sampleX) { | 173 uint32_t startX, uint32_t sampleX) { |
| 191 | 174 |
| 192 // Use the masks to decode to the destination | 175 // Use the masks to decode to the destination |
| 193 uint32_t* srcPtr = ((uint32_t*) srcRow) + startX; | 176 uint32_t* srcPtr = ((uint32_t*) srcRow) + startX; |
| 194 SkPMColor* dstPtr = (SkPMColor*) dstRow; | 177 SkPMColor* dstPtr = (SkPMColor*) dstRow; |
| 195 INIT_RESULT_ALPHA; | |
| 196 for (int i = 0; i < width; i++) { | 178 for (int i = 0; i < width; i++) { |
| 197 uint32_t p = srcPtr[0]; | 179 uint32_t p = srcPtr[0]; |
| 198 uint8_t red = masks->getRed(p); | 180 uint8_t red = masks->getRed(p); |
| 199 uint8_t green = masks->getGreen(p); | 181 uint8_t green = masks->getGreen(p); |
| 200 uint8_t blue = masks->getBlue(p); | 182 uint8_t blue = masks->getBlue(p); |
| 201 uint8_t alpha = masks->getAlpha(p); | 183 uint8_t alpha = masks->getAlpha(p); |
| 202 UPDATE_RESULT_ALPHA(alpha); | |
| 203 dstPtr[i] = SkPackARGB32NoCheck(alpha, red, green, blue); | 184 dstPtr[i] = SkPackARGB32NoCheck(alpha, red, green, blue); |
| 204 srcPtr += sampleX; | 185 srcPtr += sampleX; |
| 205 } | 186 } |
| 206 return COMPUTE_RESULT_ALPHA; | |
| 207 } | 187 } |
| 208 | 188 |
| 209 static SkSwizzler::ResultAlpha swizzle_mask32_to_n32_premul( | 189 static void swizzle_mask32_to_n32_premul( |
| 210 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, | 190 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, |
| 211 uint32_t startX, uint32_t sampleX) { | 191 uint32_t startX, uint32_t sampleX) { |
| 212 | 192 |
| 213 // Use the masks to decode to the destination | 193 // Use the masks to decode to the destination |
| 214 uint32_t* srcPtr = ((uint32_t*) srcRow) + startX; | 194 uint32_t* srcPtr = ((uint32_t*) srcRow) + startX; |
| 215 SkPMColor* dstPtr = (SkPMColor*) dstRow; | 195 SkPMColor* dstPtr = (SkPMColor*) dstRow; |
| 216 INIT_RESULT_ALPHA; | |
| 217 for (int i = 0; i < width; i++) { | 196 for (int i = 0; i < width; i++) { |
| 218 uint32_t p = srcPtr[0]; | 197 uint32_t p = srcPtr[0]; |
| 219 uint8_t red = masks->getRed(p); | 198 uint8_t red = masks->getRed(p); |
| 220 uint8_t green = masks->getGreen(p); | 199 uint8_t green = masks->getGreen(p); |
| 221 uint8_t blue = masks->getBlue(p); | 200 uint8_t blue = masks->getBlue(p); |
| 222 uint8_t alpha = masks->getAlpha(p); | 201 uint8_t alpha = masks->getAlpha(p); |
| 223 UPDATE_RESULT_ALPHA(alpha); | |
| 224 dstPtr[i] = SkPreMultiplyARGB(alpha, red, green, blue); | 202 dstPtr[i] = SkPreMultiplyARGB(alpha, red, green, blue); |
| 225 srcPtr += sampleX; | 203 srcPtr += sampleX; |
| 226 } | 204 } |
| 227 return COMPUTE_RESULT_ALPHA; | |
| 228 } | 205 } |
| 229 | 206 |
| 230 static SkSwizzler::ResultAlpha swizzle_mask32_to_565( | 207 static void swizzle_mask32_to_565( |
| 231 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, | 208 void* dstRow, const uint8_t* srcRow, int width, SkMasks* masks, |
| 232 uint32_t startX, uint32_t sampleX) { | 209 uint32_t startX, uint32_t sampleX) { |
| 233 // Use the masks to decode to the destination | 210 // Use the masks to decode to the destination |
| 234 uint32_t* srcPtr = ((uint32_t*) srcRow) + startX; | 211 uint32_t* srcPtr = ((uint32_t*) srcRow) + startX; |
| 235 uint16_t* dstPtr = (uint16_t*) dstRow; | 212 uint16_t* dstPtr = (uint16_t*) dstRow; |
| 236 for (int i = 0; i < width; i++) { | 213 for (int i = 0; i < width; i++) { |
| 237 uint32_t p = srcPtr[0]; | 214 uint32_t p = srcPtr[0]; |
| 238 uint8_t red = masks->getRed(p); | 215 uint8_t red = masks->getRed(p); |
| 239 uint8_t green = masks->getGreen(p); | 216 uint8_t green = masks->getGreen(p); |
| 240 uint8_t blue = masks->getBlue(p); | 217 uint8_t blue = masks->getBlue(p); |
| 241 dstPtr[i] = SkPack888ToRGB16(red, green, blue); | 218 dstPtr[i] = SkPack888ToRGB16(red, green, blue); |
| 242 srcPtr += sampleX; | 219 srcPtr += sampleX; |
| 243 } | 220 } |
| 244 return SkSwizzler::kOpaque_ResultAlpha; | |
| 245 } | 221 } |
| 246 | 222 |
| 247 /* | 223 /* |
| 248 * | 224 * |
| 249 * Create a new mask swizzler | 225 * Create a new mask swizzler |
| 250 * | 226 * |
| 251 */ | 227 */ |
| 252 SkMaskSwizzler* SkMaskSwizzler::CreateMaskSwizzler(const SkImageInfo& dstInfo, | 228 SkMaskSwizzler* SkMaskSwizzler::CreateMaskSwizzler(const SkImageInfo& dstInfo, |
| 253 const SkImageInfo& srcInfo, SkMasks* masks, uint32_t bitsPerPixel, | 229 const SkImageInfo& srcInfo, SkMasks* masks, uint32_t bitsPerPixel, |
| 254 const SkCodec::Options& options) { | 230 const SkCodec::Options& options) { |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 387 // check that fX0 is valid | 363 // check that fX0 is valid |
| 388 SkASSERT(fX0 >= 0); | 364 SkASSERT(fX0 >= 0); |
| 389 return fDstWidth; | 365 return fDstWidth; |
| 390 } | 366 } |
| 391 | 367 |
| 392 /* | 368 /* |
| 393 * | 369 * |
| 394 * Swizzle the specified row | 370 * Swizzle the specified row |
| 395 * | 371 * |
| 396 */ | 372 */ |
| 397 SkSwizzler::ResultAlpha SkMaskSwizzler::swizzle(void* dst, const uint8_t* SK_RES
TRICT src) { | 373 void SkMaskSwizzler::swizzle(void* dst, const uint8_t* SK_RESTRICT src) { |
| 398 SkASSERT(nullptr != dst && nullptr != src); | 374 SkASSERT(nullptr != dst && nullptr != src); |
| 399 return fRowProc(dst, src, fDstWidth, fMasks, fX0, fSampleX); | 375 fRowProc(dst, src, fDstWidth, fMasks, fX0, fSampleX); |
| 400 } | 376 } |
| OLD | NEW |