| OLD | NEW |
| 1 | 1 |
| 2 #include "SkBitmap.h" | 2 #include "SkBitmap.h" |
| 3 #include "SkTableColorFilter.h" | 3 #include "SkTableColorFilter.h" |
| 4 #include "SkColorPriv.h" | 4 #include "SkColorPriv.h" |
| 5 #include "SkReadBuffer.h" | 5 #include "SkReadBuffer.h" |
| 6 #include "SkWriteBuffer.h" | 6 #include "SkWriteBuffer.h" |
| 7 #include "SkUnPreMultiply.h" | 7 #include "SkUnPreMultiply.h" |
| 8 #include "SkString.h" | 8 #include "SkString.h" |
| 9 | 9 |
| 10 class SkTable_ColorFilter : public SkColorFilter { | 10 class SkTable_ColorFilter : public SkColorFilter { |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTable_ColorFilter) | 54 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTable_ColorFilter) |
| 55 | 55 |
| 56 enum { | 56 enum { |
| 57 kA_Flag = 1 << 0, | 57 kA_Flag = 1 << 0, |
| 58 kR_Flag = 1 << 1, | 58 kR_Flag = 1 << 1, |
| 59 kG_Flag = 1 << 2, | 59 kG_Flag = 1 << 2, |
| 60 kB_Flag = 1 << 3, | 60 kB_Flag = 1 << 3, |
| 61 }; | 61 }; |
| 62 | 62 |
| 63 protected: | 63 protected: |
| 64 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING |
| 65 SkTable_ColorFilter(SkReadBuffer& buffer); |
| 66 #endif |
| 64 virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; | 67 virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; |
| 65 | 68 |
| 66 private: | 69 private: |
| 67 mutable const SkBitmap* fBitmap; // lazily allocated | 70 mutable const SkBitmap* fBitmap; // lazily allocated |
| 68 | 71 |
| 69 uint8_t fStorage[256 * 4]; | 72 uint8_t fStorage[256 * 4]; |
| 70 unsigned fFlags; | 73 unsigned fFlags; |
| 71 | 74 |
| 72 friend class SkTableColorFilter; | 75 friend class SkTableColorFilter; |
| 73 | 76 |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 217 g = ptr; | 220 g = ptr; |
| 218 ptr += 256; | 221 ptr += 256; |
| 219 } | 222 } |
| 220 if (flags & kB_Flag) { | 223 if (flags & kB_Flag) { |
| 221 b = ptr; | 224 b = ptr; |
| 222 ptr += 256; | 225 ptr += 256; |
| 223 } | 226 } |
| 224 return SkTableColorFilter::CreateARGB(a, r, g, b); | 227 return SkTableColorFilter::CreateARGB(a, r, g, b); |
| 225 } | 228 } |
| 226 | 229 |
| 230 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING |
| 231 SkTable_ColorFilter::SkTable_ColorFilter(SkReadBuffer& buffer) : INHERITED(buffe
r) { |
| 232 fBitmap = NULL; |
| 233 |
| 234 uint8_t storage[5*256]; |
| 235 |
| 236 fFlags = buffer.readInt(); |
| 237 |
| 238 size_t size = buffer.getArrayCount(); |
| 239 SkASSERT(size <= sizeof(storage)); |
| 240 buffer.validate(size <= sizeof(storage)); |
| 241 buffer.readByteArray(storage, size); |
| 242 |
| 243 SkDEBUGCODE(size_t raw = ) SkPackBits::Unpack8(storage, size, fStorage); |
| 244 |
| 245 SkASSERT(raw <= sizeof(fStorage)); |
| 246 SkDEBUGCODE(size_t count = gCountNibBits[fFlags & 0xF]); |
| 247 SkASSERT(raw == count * 256); |
| 248 } |
| 249 #endif |
| 250 |
| 227 bool SkTable_ColorFilter::asComponentTable(SkBitmap* table) const { | 251 bool SkTable_ColorFilter::asComponentTable(SkBitmap* table) const { |
| 228 if (table) { | 252 if (table) { |
| 229 if (NULL == fBitmap) { | 253 if (NULL == fBitmap) { |
| 230 SkBitmap* bmp = SkNEW(SkBitmap); | 254 SkBitmap* bmp = SkNEW(SkBitmap); |
| 231 bmp->allocPixels(SkImageInfo::MakeA8(256, 4)); | 255 bmp->allocPixels(SkImageInfo::MakeA8(256, 4)); |
| 232 uint8_t* bitmapPixels = bmp->getAddr8(0, 0); | 256 uint8_t* bitmapPixels = bmp->getAddr8(0, 0); |
| 233 int offset = 0; | 257 int offset = 0; |
| 234 static const unsigned kFlags[] = { kA_Flag, kR_Flag, kG_Flag, kB_Fla
g }; | 258 static const unsigned kFlags[] = { kA_Flag, kR_Flag, kG_Flag, kB_Fla
g }; |
| 235 | 259 |
| 236 for (int x = 0; x < 4; ++x) { | 260 for (int x = 0; x < 4; ++x) { |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 281 | 305 |
| 282 virtual void onComputeInvariantOutput(GrInvariantOutput* inout) const SK_OVE
RRIDE; | 306 virtual void onComputeInvariantOutput(GrInvariantOutput* inout) const SK_OVE
RRIDE; |
| 283 | 307 |
| 284 ColorTableEffect(GrTexture* texture, GrTextureStripAtlas* atlas, int row, un
signed flags); | 308 ColorTableEffect(GrTexture* texture, GrTextureStripAtlas* atlas, int row, un
signed flags); |
| 285 | 309 |
| 286 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; | 310 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; |
| 287 | 311 |
| 288 GrTextureAccess fTextureAccess; | 312 GrTextureAccess fTextureAccess; |
| 289 | 313 |
| 290 // currently not used in shader code, just to assist onComputeInvariantOutpu
t(). | 314 // currently not used in shader code, just to assist onComputeInvariantOutpu
t(). |
| 291 unsigned fFlags; | 315 unsigned fFlags; |
| 292 | 316 |
| 293 GrTextureStripAtlas* fAtlas; | 317 GrTextureStripAtlas* fAtlas; |
| 294 int fRow; | 318 int fRow; |
| 295 | 319 |
| 296 typedef GrFragmentProcessor INHERITED; | 320 typedef GrFragmentProcessor INHERITED; |
| 297 }; | 321 }; |
| 298 | 322 |
| 299 class GLColorTableEffect : public GrGLFragmentProcessor { | 323 class GLColorTableEffect : public GrGLFragmentProcessor { |
| 300 public: | 324 public: |
| 301 GLColorTableEffect(const GrBackendProcessorFactory&, const GrProcessor&); | 325 GLColorTableEffect(const GrBackendProcessorFactory&, const GrProcessor&); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 327 if (cte.atlas()) { | 351 if (cte.atlas()) { |
| 328 SkScalar yDelta = cte.atlas()->getNormalizedTexelHeight(); | 352 SkScalar yDelta = cte.atlas()->getNormalizedTexelHeight(); |
| 329 rgbaYValues[3] = cte.atlas()->getYOffset(cte.atlasRow()) + SK_ScalarHalf
* yDelta; | 353 rgbaYValues[3] = cte.atlas()->getYOffset(cte.atlasRow()) + SK_ScalarHalf
* yDelta; |
| 330 rgbaYValues[0] = rgbaYValues[3] + yDelta; | 354 rgbaYValues[0] = rgbaYValues[3] + yDelta; |
| 331 rgbaYValues[1] = rgbaYValues[0] + yDelta; | 355 rgbaYValues[1] = rgbaYValues[0] + yDelta; |
| 332 rgbaYValues[2] = rgbaYValues[1] + yDelta; | 356 rgbaYValues[2] = rgbaYValues[1] + yDelta; |
| 333 } else { | 357 } else { |
| 334 rgbaYValues[3] = 0.125; | 358 rgbaYValues[3] = 0.125; |
| 335 rgbaYValues[0] = 0.375; | 359 rgbaYValues[0] = 0.375; |
| 336 rgbaYValues[1] = 0.625; | 360 rgbaYValues[1] = 0.625; |
| 337 rgbaYValues[2] = 0.875; | 361 rgbaYValues[2] = 0.875; |
| 338 } | 362 } |
| 339 pdm.set4fv(fRGBAYValuesUni, 1, rgbaYValues); | 363 pdm.set4fv(fRGBAYValuesUni, 1, rgbaYValues); |
| 340 } | 364 } |
| 341 | 365 |
| 342 void GLColorTableEffect::emitCode(GrGLFPBuilder* builder, | 366 void GLColorTableEffect::emitCode(GrGLFPBuilder* builder, |
| 343 const GrFragmentProcessor&, | 367 const GrFragmentProcessor&, |
| 344 const char* outputColor, | 368 const char* outputColor, |
| 345 const char* inputColor, | 369 const char* inputColor, |
| 346 const TransformedCoordsArray&, | 370 const TransformedCoordsArray&, |
| 347 const TextureSamplerArray& samplers) { | 371 const TextureSamplerArray& samplers) { |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 522 SkColorFilter* SkTableColorFilter::CreateARGB(const uint8_t tableA[256], | 546 SkColorFilter* SkTableColorFilter::CreateARGB(const uint8_t tableA[256], |
| 523 const uint8_t tableR[256], | 547 const uint8_t tableR[256], |
| 524 const uint8_t tableG[256], | 548 const uint8_t tableG[256], |
| 525 const uint8_t tableB[256]) { | 549 const uint8_t tableB[256]) { |
| 526 return SkNEW_ARGS(SkTable_ColorFilter, (tableA, tableR, tableG, tableB)); | 550 return SkNEW_ARGS(SkTable_ColorFilter, (tableA, tableR, tableG, tableB)); |
| 527 } | 551 } |
| 528 | 552 |
| 529 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkTableColorFilter) | 553 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkTableColorFilter) |
| 530 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkTable_ColorFilter) | 554 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkTable_ColorFilter) |
| 531 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END | 555 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END |
| OLD | NEW |