Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(196)

Side by Side Diff: src/core/SkXfermode.cpp

Issue 2396953002: Revert[8] "replace SkXfermode obj with SkBlendMode enum in paints" (Closed)
Patch Set: add tmp virtual to unroll legacy arithmodes Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/core/SkSpriteBlitter_RGB16.cpp ('k') | src/core/SkXfermodeInterpretation.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2006 The Android Open Source Project 2 * Copyright 2006 The Android Open Source Project
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 "SkXfermode.h" 8 #include "SkXfermode.h"
9 #include "SkXfermode_proccoeff.h" 9 #include "SkXfermode_proccoeff.h"
10 #include "SkColorPriv.h" 10 #include "SkColorPriv.h"
(...skipping 1454 matching lines...) Expand 10 before | Expand all | Expand 10 after
1465 case kSoftLight_Mode: p->append(SkRasterPipeline::softlight); return t rue; 1465 case kSoftLight_Mode: p->append(SkRasterPipeline::softlight); return t rue;
1466 1466
1467 // TODO 1467 // TODO
1468 case kColor_Mode: return false; 1468 case kColor_Mode: return false;
1469 case kHue_Mode: return false; 1469 case kHue_Mode: return false;
1470 case kLuminosity_Mode: return false; 1470 case kLuminosity_Mode: return false;
1471 case kSaturation_Mode: return false; 1471 case kSaturation_Mode: return false;
1472 } 1472 }
1473 return false; 1473 return false;
1474 } 1474 }
1475
1476 //////////////////////////////////////////////////////////////////////////////// ///////////////////
1477
1478 bool SkBlendMode_SupportsCoverageAsAlpha(SkBlendMode mode) {
1479 switch (mode) {
1480 case SkBlendMode::kDst:
1481 case SkBlendMode::kSrcOver:
1482 case SkBlendMode::kDstOver:
1483 case SkBlendMode::kDstOut:
1484 case SkBlendMode::kSrcATop:
1485 case SkBlendMode::kXor:
1486 case SkBlendMode::kPlus:
1487 return true;
1488 default:
1489 break;
1490 }
1491 return false;
1492 }
1493
1494 bool SkXfermode::IsOpaque(SkBlendMode mode, SrcColorOpacity opacityType) {
1495 const ProcCoeff rec = gProcCoeffs[(int)mode];
1496
1497 switch (rec.fSC) {
1498 case kDA_Coeff:
1499 case kDC_Coeff:
1500 case kIDA_Coeff:
1501 case kIDC_Coeff:
1502 return false;
1503 default:
1504 break;
1505 }
1506
1507 switch (rec.fDC) {
1508 case kZero_Coeff:
1509 return true;
1510 case kISA_Coeff:
1511 return kOpaque_SrcColorOpacity == opacityType;
1512 case kSA_Coeff:
1513 return kTransparentBlack_SrcColorOpacity == opacityType ||
1514 kTransparentAlpha_SrcColorOpacity == opacityType;
1515 case kSC_Coeff:
1516 return kTransparentBlack_SrcColorOpacity == opacityType;
1517 default:
1518 return false;
1519 }
1520 return false;
1521 }
1522
1523 #if SK_SUPPORT_GPU
1524 sk_sp<GrXPFactory> SkBlendMode_AsXPFactory(SkBlendMode mode) {
1525 const ProcCoeff rec = gProcCoeffs[(int)mode];
1526 if (CANNOT_USE_COEFF != rec.fSC) {
1527 sk_sp<GrXPFactory> result(GrPorterDuffXPFactory::Make(mode));
1528 SkASSERT(result);
1529 return result;
1530 }
1531
1532 SkASSERT(GrCustomXfermode::IsSupportedMode((SkXfermode::Mode)mode));
1533 return GrCustomXfermode::MakeXPFactory((SkXfermode::Mode)mode);
1534 }
1535 #endif
OLDNEW
« no previous file with comments | « src/core/SkSpriteBlitter_RGB16.cpp ('k') | src/core/SkXfermodeInterpretation.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698