| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2006 The Android Open Source Project | 3 * Copyright 2006 The Android Open Source Project |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 | 9 |
| 10 #include "SkXfermode.h" | 10 #include "SkXfermode.h" |
| (...skipping 1219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1230 int mode = rand->nextRangeU(SkXfermode::kLastCoeffMode + 1, SkXfermode::kLas
tSeparableMode); | 1230 int mode = rand->nextRangeU(SkXfermode::kLastCoeffMode + 1, SkXfermode::kLas
tSeparableMode); |
| 1231 | 1231 |
| 1232 return SkNEW_ARGS(XferEffect, (static_cast<SkXfermode::Mode>(mode), NULL)); | 1232 return SkNEW_ARGS(XferEffect, (static_cast<SkXfermode::Mode>(mode), NULL)); |
| 1233 } | 1233 } |
| 1234 | 1234 |
| 1235 #endif | 1235 #endif |
| 1236 | 1236 |
| 1237 /////////////////////////////////////////////////////////////////////////////// | 1237 /////////////////////////////////////////////////////////////////////////////// |
| 1238 /////////////////////////////////////////////////////////////////////////////// | 1238 /////////////////////////////////////////////////////////////////////////////// |
| 1239 | 1239 |
| 1240 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING |
| 1241 SkProcCoeffXfermode::SkProcCoeffXfermode(SkReadBuffer& buffer) : INHERITED(buffe
r) { |
| 1242 uint32_t mode32 = buffer.read32() % SK_ARRAY_COUNT(gProcCoeffs); |
| 1243 if (mode32 >= SK_ARRAY_COUNT(gProcCoeffs)) { |
| 1244 // out of range, just set to something harmless |
| 1245 mode32 = SkXfermode::kSrcOut_Mode; |
| 1246 } |
| 1247 fMode = (SkXfermode::Mode)mode32; |
| 1248 |
| 1249 const ProcCoeff& rec = gProcCoeffs[fMode]; |
| 1250 fProc = rec.fProc; |
| 1251 // these may be valid, or may be CANNOT_USE_COEFF |
| 1252 fSrcCoeff = rec.fSC; |
| 1253 fDstCoeff = rec.fDC; |
| 1254 } |
| 1255 #endif |
| 1256 |
| 1240 SkFlattenable* SkProcCoeffXfermode::CreateProc(SkReadBuffer& buffer) { | 1257 SkFlattenable* SkProcCoeffXfermode::CreateProc(SkReadBuffer& buffer) { |
| 1241 uint32_t mode32 = buffer.read32(); | 1258 uint32_t mode32 = buffer.read32(); |
| 1242 if (!buffer.validate(mode32 < SK_ARRAY_COUNT(gProcCoeffs))) { | 1259 if (!buffer.validate(mode32 < SK_ARRAY_COUNT(gProcCoeffs))) { |
| 1243 return NULL; | 1260 return NULL; |
| 1244 } | 1261 } |
| 1245 return SkXfermode::Create((SkXfermode::Mode)mode32); | 1262 return SkXfermode::Create((SkXfermode::Mode)mode32); |
| 1246 } | 1263 } |
| 1247 | 1264 |
| 1248 void SkProcCoeffXfermode::flatten(SkWriteBuffer& buffer) const { | 1265 void SkProcCoeffXfermode::flatten(SkWriteBuffer& buffer) const { |
| 1249 buffer.write32(fMode); | 1266 buffer.write32(fMode); |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1419 return SkNEW_ARGS(SkClearXfermode, (rec)); | 1436 return SkNEW_ARGS(SkClearXfermode, (rec)); |
| 1420 } | 1437 } |
| 1421 | 1438 |
| 1422 virtual void xfer32(SkPMColor*, const SkPMColor*, int, const SkAlpha*) const
SK_OVERRIDE; | 1439 virtual void xfer32(SkPMColor*, const SkPMColor*, int, const SkAlpha*) const
SK_OVERRIDE; |
| 1423 virtual void xferA8(SkAlpha*, const SkPMColor*, int, const SkAlpha*) const S
K_OVERRIDE; | 1440 virtual void xferA8(SkAlpha*, const SkPMColor*, int, const SkAlpha*) const S
K_OVERRIDE; |
| 1424 | 1441 |
| 1425 SK_TO_STRING_OVERRIDE() | 1442 SK_TO_STRING_OVERRIDE() |
| 1426 | 1443 |
| 1427 private: | 1444 private: |
| 1428 SkClearXfermode(const ProcCoeff& rec) : SkProcCoeffXfermode(rec, kClear_Mode
) {} | 1445 SkClearXfermode(const ProcCoeff& rec) : SkProcCoeffXfermode(rec, kClear_Mode
) {} |
| 1446 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING |
| 1447 SkClearXfermode(SkReadBuffer& buffer) : SkProcCoeffXfermode(buffer) {} |
| 1448 #endif |
| 1429 | 1449 |
| 1430 typedef SkProcCoeffXfermode INHERITED; | 1450 typedef SkProcCoeffXfermode INHERITED; |
| 1431 }; | 1451 }; |
| 1432 | 1452 |
| 1433 void SkClearXfermode::xfer32(SkPMColor* SK_RESTRICT dst, | 1453 void SkClearXfermode::xfer32(SkPMColor* SK_RESTRICT dst, |
| 1434 const SkPMColor* SK_RESTRICT, int count, | 1454 const SkPMColor* SK_RESTRICT, int count, |
| 1435 const SkAlpha* SK_RESTRICT aa) const { | 1455 const SkAlpha* SK_RESTRICT aa) const { |
| 1436 SkASSERT(dst && count >= 0); | 1456 SkASSERT(dst && count >= 0); |
| 1437 | 1457 |
| 1438 if (NULL == aa) { | 1458 if (NULL == aa) { |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1481 return SkNEW_ARGS(SkSrcXfermode, (rec)); | 1501 return SkNEW_ARGS(SkSrcXfermode, (rec)); |
| 1482 } | 1502 } |
| 1483 | 1503 |
| 1484 virtual void xfer32(SkPMColor*, const SkPMColor*, int, const SkAlpha*) const
SK_OVERRIDE; | 1504 virtual void xfer32(SkPMColor*, const SkPMColor*, int, const SkAlpha*) const
SK_OVERRIDE; |
| 1485 virtual void xferA8(SkAlpha*, const SkPMColor*, int, const SkAlpha*) const S
K_OVERRIDE; | 1505 virtual void xferA8(SkAlpha*, const SkPMColor*, int, const SkAlpha*) const S
K_OVERRIDE; |
| 1486 | 1506 |
| 1487 SK_TO_STRING_OVERRIDE() | 1507 SK_TO_STRING_OVERRIDE() |
| 1488 | 1508 |
| 1489 private: | 1509 private: |
| 1490 SkSrcXfermode(const ProcCoeff& rec) : SkProcCoeffXfermode(rec, kSrc_Mode) {} | 1510 SkSrcXfermode(const ProcCoeff& rec) : SkProcCoeffXfermode(rec, kSrc_Mode) {} |
| 1511 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING |
| 1512 SkSrcXfermode(SkReadBuffer& buffer) : SkProcCoeffXfermode(buffer) {} |
| 1513 #endif |
| 1491 typedef SkProcCoeffXfermode INHERITED; | 1514 typedef SkProcCoeffXfermode INHERITED; |
| 1492 }; | 1515 }; |
| 1493 | 1516 |
| 1494 void SkSrcXfermode::xfer32(SkPMColor* SK_RESTRICT dst, | 1517 void SkSrcXfermode::xfer32(SkPMColor* SK_RESTRICT dst, |
| 1495 const SkPMColor* SK_RESTRICT src, int count, | 1518 const SkPMColor* SK_RESTRICT src, int count, |
| 1496 const SkAlpha* SK_RESTRICT aa) const { | 1519 const SkAlpha* SK_RESTRICT aa) const { |
| 1497 SkASSERT(dst && src && count >= 0); | 1520 SkASSERT(dst && src && count >= 0); |
| 1498 | 1521 |
| 1499 if (NULL == aa) { | 1522 if (NULL == aa) { |
| 1500 memcpy(dst, src, count << 2); | 1523 memcpy(dst, src, count << 2); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1546 static SkDstInXfermode* Create(const ProcCoeff& rec) { | 1569 static SkDstInXfermode* Create(const ProcCoeff& rec) { |
| 1547 return SkNEW_ARGS(SkDstInXfermode, (rec)); | 1570 return SkNEW_ARGS(SkDstInXfermode, (rec)); |
| 1548 } | 1571 } |
| 1549 | 1572 |
| 1550 virtual void xfer32(SkPMColor*, const SkPMColor*, int, const SkAlpha*) const
SK_OVERRIDE; | 1573 virtual void xfer32(SkPMColor*, const SkPMColor*, int, const SkAlpha*) const
SK_OVERRIDE; |
| 1551 | 1574 |
| 1552 SK_TO_STRING_OVERRIDE() | 1575 SK_TO_STRING_OVERRIDE() |
| 1553 | 1576 |
| 1554 private: | 1577 private: |
| 1555 SkDstInXfermode(const ProcCoeff& rec) : SkProcCoeffXfermode(rec, kDstIn_Mode
) {} | 1578 SkDstInXfermode(const ProcCoeff& rec) : SkProcCoeffXfermode(rec, kDstIn_Mode
) {} |
| 1579 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING |
| 1580 SkDstInXfermode(SkReadBuffer& buffer) : INHERITED(buffer) {} |
| 1581 #endif |
| 1556 | 1582 |
| 1557 typedef SkProcCoeffXfermode INHERITED; | 1583 typedef SkProcCoeffXfermode INHERITED; |
| 1558 }; | 1584 }; |
| 1559 | 1585 |
| 1560 void SkDstInXfermode::xfer32(SkPMColor* SK_RESTRICT dst, | 1586 void SkDstInXfermode::xfer32(SkPMColor* SK_RESTRICT dst, |
| 1561 const SkPMColor* SK_RESTRICT src, int count, | 1587 const SkPMColor* SK_RESTRICT src, int count, |
| 1562 const SkAlpha* SK_RESTRICT aa) const { | 1588 const SkAlpha* SK_RESTRICT aa) const { |
| 1563 SkASSERT(dst && src); | 1589 SkASSERT(dst && src); |
| 1564 | 1590 |
| 1565 if (count <= 0) { | 1591 if (count <= 0) { |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1590 static SkDstOutXfermode* Create(const ProcCoeff& rec) { | 1616 static SkDstOutXfermode* Create(const ProcCoeff& rec) { |
| 1591 return SkNEW_ARGS(SkDstOutXfermode, (rec)); | 1617 return SkNEW_ARGS(SkDstOutXfermode, (rec)); |
| 1592 } | 1618 } |
| 1593 | 1619 |
| 1594 virtual void xfer32(SkPMColor*, const SkPMColor*, int, const SkAlpha*) const
SK_OVERRIDE; | 1620 virtual void xfer32(SkPMColor*, const SkPMColor*, int, const SkAlpha*) const
SK_OVERRIDE; |
| 1595 | 1621 |
| 1596 SK_TO_STRING_OVERRIDE() | 1622 SK_TO_STRING_OVERRIDE() |
| 1597 | 1623 |
| 1598 private: | 1624 private: |
| 1599 SkDstOutXfermode(const ProcCoeff& rec) : SkProcCoeffXfermode(rec, kDstOut_Mo
de) {} | 1625 SkDstOutXfermode(const ProcCoeff& rec) : SkProcCoeffXfermode(rec, kDstOut_Mo
de) {} |
| 1626 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING |
| 1627 SkDstOutXfermode(SkReadBuffer& buffer) : INHERITED(buffer) {} |
| 1628 #endif |
| 1600 | 1629 |
| 1601 typedef SkProcCoeffXfermode INHERITED; | 1630 typedef SkProcCoeffXfermode INHERITED; |
| 1602 }; | 1631 }; |
| 1603 | 1632 |
| 1604 void SkDstOutXfermode::xfer32(SkPMColor* SK_RESTRICT dst, | 1633 void SkDstOutXfermode::xfer32(SkPMColor* SK_RESTRICT dst, |
| 1605 const SkPMColor* SK_RESTRICT src, int count, | 1634 const SkPMColor* SK_RESTRICT src, int count, |
| 1606 const SkAlpha* SK_RESTRICT aa) const { | 1635 const SkAlpha* SK_RESTRICT aa) const { |
| 1607 SkASSERT(dst && src); | 1636 SkASSERT(dst && src); |
| 1608 | 1637 |
| 1609 if (count <= 0) { | 1638 if (count <= 0) { |
| (...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1924 } else { | 1953 } else { |
| 1925 proc16 = rec.fProc16_General; | 1954 proc16 = rec.fProc16_General; |
| 1926 } | 1955 } |
| 1927 } | 1956 } |
| 1928 return proc16; | 1957 return proc16; |
| 1929 } | 1958 } |
| 1930 | 1959 |
| 1931 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkXfermode) | 1960 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkXfermode) |
| 1932 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkProcCoeffXfermode) | 1961 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkProcCoeffXfermode) |
| 1933 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END | 1962 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END |
| OLD | NEW |