| 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 1357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1368 static AutoEffectUnref gEffect(SkNEW_ARGS(XferEffect, (static_cast<SkXfermod
e::Mode>(mode), NULL))); | 1368 static AutoEffectUnref gEffect(SkNEW_ARGS(XferEffect, (static_cast<SkXfermod
e::Mode>(mode), NULL))); |
| 1369 return CreateEffectRef(gEffect); | 1369 return CreateEffectRef(gEffect); |
| 1370 } | 1370 } |
| 1371 | 1371 |
| 1372 #endif | 1372 #endif |
| 1373 | 1373 |
| 1374 /////////////////////////////////////////////////////////////////////////////// | 1374 /////////////////////////////////////////////////////////////////////////////// |
| 1375 /////////////////////////////////////////////////////////////////////////////// | 1375 /////////////////////////////////////////////////////////////////////////////// |
| 1376 | 1376 |
| 1377 class SkProcCoeffXfermode : public SkProcXfermode { | 1377 class SkProcCoeffXfermode : public SkProcXfermode { |
| 1378 typedef SkProcXfermode INHERITED; |
| 1379 |
| 1378 public: | 1380 public: |
| 1379 SkProcCoeffXfermode(const ProcCoeff& rec, Mode mode) | 1381 SkProcCoeffXfermode(const ProcCoeff& rec, Mode mode) |
| 1380 : INHERITED(rec.fProc) { | 1382 : INHERITED(rec.fProc) { |
| 1381 fMode = mode; | 1383 fMode = mode; |
| 1382 // these may be valid, or may be CANNOT_USE_COEFF | 1384 // these may be valid, or may be CANNOT_USE_COEFF |
| 1383 fSrcCoeff = rec.fSC; | 1385 fSrcCoeff = rec.fSC; |
| 1384 fDstCoeff = rec.fDC; | 1386 fDstCoeff = rec.fDC; |
| 1385 } | 1387 } |
| 1386 | 1388 |
| 1387 virtual bool asMode(Mode* mode) const SK_OVERRIDE { | 1389 virtual bool asMode(Mode* mode) const SK_OVERRIDE { |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1441 } | 1443 } |
| 1442 | 1444 |
| 1443 virtual void flatten(SkFlattenableWriteBuffer& buffer) const SK_OVERRIDE { | 1445 virtual void flatten(SkFlattenableWriteBuffer& buffer) const SK_OVERRIDE { |
| 1444 this->INHERITED::flatten(buffer); | 1446 this->INHERITED::flatten(buffer); |
| 1445 buffer.write32(fMode); | 1447 buffer.write32(fMode); |
| 1446 } | 1448 } |
| 1447 | 1449 |
| 1448 private: | 1450 private: |
| 1449 Mode fMode; | 1451 Mode fMode; |
| 1450 Coeff fSrcCoeff, fDstCoeff; | 1452 Coeff fSrcCoeff, fDstCoeff; |
| 1451 | |
| 1452 typedef SkProcXfermode INHERITED; | |
| 1453 }; | 1453 }; |
| 1454 | 1454 |
| 1455 const char* SkXfermode::ModeName(Mode mode) { | 1455 const char* SkXfermode::ModeName(Mode mode) { |
| 1456 SkASSERT((unsigned) mode <= (unsigned)kLastMode); | 1456 SkASSERT((unsigned) mode <= (unsigned)kLastMode); |
| 1457 const char* gModeStrings[] = { | 1457 const char* gModeStrings[] = { |
| 1458 "Clear", "Src", "Dst", "SrcOver", "DstOver", "SrcIn", "DstIn", | 1458 "Clear", "Src", "Dst", "SrcOver", "DstOver", "SrcIn", "DstIn", |
| 1459 "SrcOut", "DstOut", "SrcATop", "DstATop", "Xor", "Plus", | 1459 "SrcOut", "DstOut", "SrcATop", "DstATop", "Xor", "Plus", |
| 1460 "Modulate", "Screen", "Overlay", "Darken", "Lighten", "ColorDodge", | 1460 "Modulate", "Screen", "Overlay", "Darken", "Lighten", "ColorDodge", |
| 1461 "ColorBurn", "HardLight", "SoftLight", "Difference", "Exclusion", | 1461 "ColorBurn", "HardLight", "SoftLight", "Difference", "Exclusion", |
| 1462 "Multiply", "Hue", "Saturation", "Color", "Luminosity" | 1462 "Multiply", "Hue", "Saturation", "Color", "Luminosity" |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1488 str->append("can't use"); | 1488 str->append("can't use"); |
| 1489 } else { | 1489 } else { |
| 1490 str->append(gCoeffStrings[fDstCoeff]); | 1490 str->append(gCoeffStrings[fDstCoeff]); |
| 1491 } | 1491 } |
| 1492 } | 1492 } |
| 1493 #endif | 1493 #endif |
| 1494 | 1494 |
| 1495 /////////////////////////////////////////////////////////////////////////////// | 1495 /////////////////////////////////////////////////////////////////////////////// |
| 1496 | 1496 |
| 1497 class SkClearXfermode : public SkProcCoeffXfermode { | 1497 class SkClearXfermode : public SkProcCoeffXfermode { |
| 1498 typedef SkProcCoeffXfermode INHERITED; |
| 1499 |
| 1498 public: | 1500 public: |
| 1499 SkClearXfermode(const ProcCoeff& rec) : SkProcCoeffXfermode(rec, kClear_Mode
) {} | 1501 SkClearXfermode(const ProcCoeff& rec) : SkProcCoeffXfermode(rec, kClear_Mode
) {} |
| 1500 | 1502 |
| 1501 virtual void xfer32(SkPMColor*, const SkPMColor*, int, const SkAlpha*) const
SK_OVERRIDE; | 1503 virtual void xfer32(SkPMColor*, const SkPMColor*, int, const SkAlpha*) const
SK_OVERRIDE; |
| 1502 virtual void xferA8(SkAlpha*, const SkPMColor*, int, const SkAlpha*) const S
K_OVERRIDE; | 1504 virtual void xferA8(SkAlpha*, const SkPMColor*, int, const SkAlpha*) const S
K_OVERRIDE; |
| 1503 | 1505 |
| 1504 SK_DEVELOPER_TO_STRING() | 1506 SK_DEVELOPER_TO_STRING() |
| 1505 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkClearXfermode) | 1507 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkClearXfermode) |
| 1506 | 1508 |
| 1507 private: | 1509 private: |
| 1508 SkClearXfermode(SkFlattenableReadBuffer& buffer) | 1510 SkClearXfermode(SkFlattenableReadBuffer& buffer) |
| 1509 : SkProcCoeffXfermode(buffer) {} | 1511 : SkProcCoeffXfermode(buffer) {} |
| 1510 | |
| 1511 typedef SkProcCoeffXfermode INHERITED; | |
| 1512 }; | 1512 }; |
| 1513 | 1513 |
| 1514 void SkClearXfermode::xfer32(SkPMColor* SK_RESTRICT dst, | 1514 void SkClearXfermode::xfer32(SkPMColor* SK_RESTRICT dst, |
| 1515 const SkPMColor* SK_RESTRICT, int count, | 1515 const SkPMColor* SK_RESTRICT, int count, |
| 1516 const SkAlpha* SK_RESTRICT aa) const { | 1516 const SkAlpha* SK_RESTRICT aa) const { |
| 1517 SkASSERT(dst && count >= 0); | 1517 SkASSERT(dst && count >= 0); |
| 1518 | 1518 |
| 1519 if (NULL == aa) { | 1519 if (NULL == aa) { |
| 1520 memset(dst, 0, count << 2); | 1520 memset(dst, 0, count << 2); |
| 1521 } else { | 1521 } else { |
| (...skipping 28 matching lines...) Expand all Loading... |
| 1550 | 1550 |
| 1551 #ifdef SK_DEVELOPER | 1551 #ifdef SK_DEVELOPER |
| 1552 void SkClearXfermode::toString(SkString* str) const { | 1552 void SkClearXfermode::toString(SkString* str) const { |
| 1553 this->INHERITED::toString(str); | 1553 this->INHERITED::toString(str); |
| 1554 } | 1554 } |
| 1555 #endif | 1555 #endif |
| 1556 | 1556 |
| 1557 /////////////////////////////////////////////////////////////////////////////// | 1557 /////////////////////////////////////////////////////////////////////////////// |
| 1558 | 1558 |
| 1559 class SkSrcXfermode : public SkProcCoeffXfermode { | 1559 class SkSrcXfermode : public SkProcCoeffXfermode { |
| 1560 typedef SkProcCoeffXfermode INHERITED; |
| 1561 |
| 1560 public: | 1562 public: |
| 1561 SkSrcXfermode(const ProcCoeff& rec) : SkProcCoeffXfermode(rec, kSrc_Mode) {} | 1563 SkSrcXfermode(const ProcCoeff& rec) : SkProcCoeffXfermode(rec, kSrc_Mode) {} |
| 1562 | 1564 |
| 1563 virtual void xfer32(SkPMColor*, const SkPMColor*, int, const SkAlpha*) const
SK_OVERRIDE; | 1565 virtual void xfer32(SkPMColor*, const SkPMColor*, int, const SkAlpha*) const
SK_OVERRIDE; |
| 1564 virtual void xferA8(SkAlpha*, const SkPMColor*, int, const SkAlpha*) const S
K_OVERRIDE; | 1566 virtual void xferA8(SkAlpha*, const SkPMColor*, int, const SkAlpha*) const S
K_OVERRIDE; |
| 1565 | 1567 |
| 1566 SK_DEVELOPER_TO_STRING() | 1568 SK_DEVELOPER_TO_STRING() |
| 1567 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkSrcXfermode) | 1569 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkSrcXfermode) |
| 1568 | 1570 |
| 1569 private: | 1571 private: |
| 1570 SkSrcXfermode(SkFlattenableReadBuffer& buffer) | 1572 SkSrcXfermode(SkFlattenableReadBuffer& buffer) |
| 1571 : SkProcCoeffXfermode(buffer) {} | 1573 : SkProcCoeffXfermode(buffer) {} |
| 1572 | |
| 1573 typedef SkProcCoeffXfermode INHERITED; | |
| 1574 }; | 1574 }; |
| 1575 | 1575 |
| 1576 void SkSrcXfermode::xfer32(SkPMColor* SK_RESTRICT dst, | 1576 void SkSrcXfermode::xfer32(SkPMColor* SK_RESTRICT dst, |
| 1577 const SkPMColor* SK_RESTRICT src, int count, | 1577 const SkPMColor* SK_RESTRICT src, int count, |
| 1578 const SkAlpha* SK_RESTRICT aa) const { | 1578 const SkAlpha* SK_RESTRICT aa) const { |
| 1579 SkASSERT(dst && src && count >= 0); | 1579 SkASSERT(dst && src && count >= 0); |
| 1580 | 1580 |
| 1581 if (NULL == aa) { | 1581 if (NULL == aa) { |
| 1582 memcpy(dst, src, count << 2); | 1582 memcpy(dst, src, count << 2); |
| 1583 } else { | 1583 } else { |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1617 } | 1617 } |
| 1618 #ifdef SK_DEVELOPER | 1618 #ifdef SK_DEVELOPER |
| 1619 void SkSrcXfermode::toString(SkString* str) const { | 1619 void SkSrcXfermode::toString(SkString* str) const { |
| 1620 this->INHERITED::toString(str); | 1620 this->INHERITED::toString(str); |
| 1621 } | 1621 } |
| 1622 #endif | 1622 #endif |
| 1623 | 1623 |
| 1624 /////////////////////////////////////////////////////////////////////////////// | 1624 /////////////////////////////////////////////////////////////////////////////// |
| 1625 | 1625 |
| 1626 class SkDstInXfermode : public SkProcCoeffXfermode { | 1626 class SkDstInXfermode : public SkProcCoeffXfermode { |
| 1627 typedef SkProcCoeffXfermode INHERITED; |
| 1628 |
| 1627 public: | 1629 public: |
| 1628 SkDstInXfermode(const ProcCoeff& rec) : SkProcCoeffXfermode(rec, kDstIn_Mode
) {} | 1630 SkDstInXfermode(const ProcCoeff& rec) : SkProcCoeffXfermode(rec, kDstIn_Mode
) {} |
| 1629 | 1631 |
| 1630 virtual void xfer32(SkPMColor*, const SkPMColor*, int, const SkAlpha*) const
SK_OVERRIDE; | 1632 virtual void xfer32(SkPMColor*, const SkPMColor*, int, const SkAlpha*) const
SK_OVERRIDE; |
| 1631 | 1633 |
| 1632 SK_DEVELOPER_TO_STRING() | 1634 SK_DEVELOPER_TO_STRING() |
| 1633 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDstInXfermode) | 1635 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDstInXfermode) |
| 1634 | 1636 |
| 1635 private: | 1637 private: |
| 1636 SkDstInXfermode(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {} | 1638 SkDstInXfermode(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {} |
| 1637 | |
| 1638 typedef SkProcCoeffXfermode INHERITED; | |
| 1639 }; | 1639 }; |
| 1640 | 1640 |
| 1641 void SkDstInXfermode::xfer32(SkPMColor* SK_RESTRICT dst, | 1641 void SkDstInXfermode::xfer32(SkPMColor* SK_RESTRICT dst, |
| 1642 const SkPMColor* SK_RESTRICT src, int count, | 1642 const SkPMColor* SK_RESTRICT src, int count, |
| 1643 const SkAlpha* SK_RESTRICT aa) const { | 1643 const SkAlpha* SK_RESTRICT aa) const { |
| 1644 SkASSERT(dst && src); | 1644 SkASSERT(dst && src); |
| 1645 | 1645 |
| 1646 if (count <= 0) { | 1646 if (count <= 0) { |
| 1647 return; | 1647 return; |
| 1648 } | 1648 } |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1660 | 1660 |
| 1661 #ifdef SK_DEVELOPER | 1661 #ifdef SK_DEVELOPER |
| 1662 void SkDstInXfermode::toString(SkString* str) const { | 1662 void SkDstInXfermode::toString(SkString* str) const { |
| 1663 this->INHERITED::toString(str); | 1663 this->INHERITED::toString(str); |
| 1664 } | 1664 } |
| 1665 #endif | 1665 #endif |
| 1666 | 1666 |
| 1667 /////////////////////////////////////////////////////////////////////////////// | 1667 /////////////////////////////////////////////////////////////////////////////// |
| 1668 | 1668 |
| 1669 class SkDstOutXfermode : public SkProcCoeffXfermode { | 1669 class SkDstOutXfermode : public SkProcCoeffXfermode { |
| 1670 typedef SkProcCoeffXfermode INHERITED; |
| 1671 |
| 1670 public: | 1672 public: |
| 1671 SkDstOutXfermode(const ProcCoeff& rec) : SkProcCoeffXfermode(rec, kDstOut_Mo
de) {} | 1673 SkDstOutXfermode(const ProcCoeff& rec) : SkProcCoeffXfermode(rec, kDstOut_Mo
de) {} |
| 1672 | 1674 |
| 1673 virtual void xfer32(SkPMColor*, const SkPMColor*, int, const SkAlpha*) const
SK_OVERRIDE; | 1675 virtual void xfer32(SkPMColor*, const SkPMColor*, int, const SkAlpha*) const
SK_OVERRIDE; |
| 1674 | 1676 |
| 1675 SK_DEVELOPER_TO_STRING() | 1677 SK_DEVELOPER_TO_STRING() |
| 1676 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDstOutXfermode) | 1678 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDstOutXfermode) |
| 1677 | 1679 |
| 1678 private: | 1680 private: |
| 1679 SkDstOutXfermode(SkFlattenableReadBuffer& buffer) | 1681 SkDstOutXfermode(SkFlattenableReadBuffer& buffer) |
| 1680 : INHERITED(buffer) {} | 1682 : INHERITED(buffer) {} |
| 1681 | |
| 1682 typedef SkProcCoeffXfermode INHERITED; | |
| 1683 }; | 1683 }; |
| 1684 | 1684 |
| 1685 void SkDstOutXfermode::xfer32(SkPMColor* SK_RESTRICT dst, | 1685 void SkDstOutXfermode::xfer32(SkPMColor* SK_RESTRICT dst, |
| 1686 const SkPMColor* SK_RESTRICT src, int count, | 1686 const SkPMColor* SK_RESTRICT src, int count, |
| 1687 const SkAlpha* SK_RESTRICT aa) const { | 1687 const SkAlpha* SK_RESTRICT aa) const { |
| 1688 SkASSERT(dst && src); | 1688 SkASSERT(dst && src); |
| 1689 | 1689 |
| 1690 if (count <= 0) { | 1690 if (count <= 0) { |
| 1691 return; | 1691 return; |
| 1692 } | 1692 } |
| (...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1963 return proc16; | 1963 return proc16; |
| 1964 } | 1964 } |
| 1965 | 1965 |
| 1966 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkXfermode) | 1966 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkXfermode) |
| 1967 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkProcCoeffXfermode) | 1967 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkProcCoeffXfermode) |
| 1968 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkClearXfermode) | 1968 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkClearXfermode) |
| 1969 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSrcXfermode) | 1969 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSrcXfermode) |
| 1970 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDstInXfermode) | 1970 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDstInXfermode) |
| 1971 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDstOutXfermode) | 1971 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDstOutXfermode) |
| 1972 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END | 1972 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END |
| OLD | NEW |