| Index: src/effects/SkPixelXorXfermode.cpp
|
| diff --git a/src/effects/SkPixelXorXfermode.cpp b/src/effects/SkPixelXorXfermode.cpp
|
| index e2ecb0e365364ed6b896da4a0569a024aa7f6a04..a9316cc55e4660492bbbbd346a6964fda87b48b2 100644
|
| --- a/src/effects/SkPixelXorXfermode.cpp
|
| +++ b/src/effects/SkPixelXorXfermode.cpp
|
| @@ -120,7 +120,7 @@ class GLPixelXorFP;
|
|
|
| class PixelXorFP : public GrFragmentProcessor {
|
| public:
|
| - static const GrFragmentProcessor* Create(SkColor opColor, const GrFragmentProcessor* dst) {
|
| + static const GrFragmentProcessor* Create(SkPMColor opColor, const GrFragmentProcessor* dst) {
|
| return new PixelXorFP(opColor, dst);
|
| }
|
|
|
| @@ -134,7 +134,7 @@ public:
|
| return str;
|
| }
|
|
|
| - SkColor opColor() const { return fOpColor; }
|
| + SkPMColor opColor() const { return fOpColor; }
|
|
|
| private:
|
| GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;
|
| @@ -150,7 +150,7 @@ private:
|
| inout->setToUnknown(GrInvariantOutput::kWill_ReadInput);
|
| }
|
|
|
| - PixelXorFP(SkColor opColor, const GrFragmentProcessor* dst)
|
| + PixelXorFP(SkPMColor opColor, const GrFragmentProcessor* dst)
|
| : fOpColor(opColor) {
|
| this->initClassID<PixelXorFP>();
|
|
|
| @@ -159,7 +159,7 @@ private:
|
| SkASSERT(0 == dstIndex);
|
| }
|
|
|
| - SkColor fOpColor;
|
| + SkPMColor fOpColor;
|
|
|
| GR_DECLARE_FRAGMENT_PROCESSOR_TEST;
|
| typedef GrFragmentProcessor INHERITED;
|
| @@ -193,9 +193,9 @@ protected:
|
| void onSetData(const GrGLSLProgramDataManager& pdman, const GrProcessor& proc) override {
|
| const PixelXorFP& pixXor = proc.cast<PixelXorFP>();
|
| pdman.set3f(fOpColorUni,
|
| - SkColorGetR(pixXor.opColor())/255.0f,
|
| - SkColorGetG(pixXor.opColor())/255.0f,
|
| - SkColorGetB(pixXor.opColor())/255.0f);
|
| + SkGetPackedR32(pixXor.opColor())/255.0f,
|
| + SkGetPackedG32(pixXor.opColor())/255.0f,
|
| + SkGetPackedB32(pixXor.opColor())/255.0f);
|
| }
|
|
|
| private:
|
| @@ -218,7 +218,7 @@ const GrFragmentProcessor* PixelXorFP::TestCreate(GrProcessorTestData* d) {
|
| SkColor color = d->fRandom->nextU();
|
|
|
| SkAutoTUnref<const GrFragmentProcessor> dst(GrProcessorUnitTest::CreateChildFP(d));
|
| - return new PixelXorFP(color, dst);
|
| + return new PixelXorFP(SkPreMultiplyColor(color), dst);
|
| }
|
|
|
| GR_DEFINE_FRAGMENT_PROCESSOR_TEST(PixelXorFP);
|
| @@ -229,7 +229,7 @@ GR_DEFINE_FRAGMENT_PROCESSOR_TEST(PixelXorFP);
|
|
|
| class PixelXorXP : public GrXferProcessor {
|
| public:
|
| - PixelXorXP(const DstTexture* dstTexture, bool hasMixedSamples, SkColor opColor)
|
| + PixelXorXP(const DstTexture* dstTexture, bool hasMixedSamples, SkPMColor opColor)
|
| : INHERITED(dstTexture, true, hasMixedSamples)
|
| , fOpColor(opColor) {
|
| this->initClassID<PixelXorXP>();
|
| @@ -239,7 +239,7 @@ public:
|
|
|
| GrGLSLXferProcessor* createGLSLInstance() const override;
|
|
|
| - SkColor opColor() const { return fOpColor; }
|
| + SkPMColor opColor() const { return fOpColor; }
|
|
|
| private:
|
| GrXferProcessor::OptFlags onGetOptimizations(const GrPipelineOptimizations& optimizations,
|
| @@ -257,7 +257,7 @@ private:
|
| return fOpColor == xp.fOpColor;
|
| }
|
|
|
| - SkColor fOpColor;
|
| + SkPMColor fOpColor;
|
|
|
| typedef GrXferProcessor INHERITED;
|
| };
|
| @@ -296,10 +296,10 @@ private:
|
| void onSetData(const GrGLSLProgramDataManager& pdman,
|
| const GrXferProcessor& processor) override {
|
| const PixelXorXP& pixelXor = processor.cast<PixelXorXP>();
|
| - pdman.set3f(fOpColorUni,
|
| - SkColorGetR(pixelXor.opColor())/255.0f,
|
| - SkColorGetG(pixelXor.opColor())/255.0f,
|
| - SkColorGetB(pixelXor.opColor())/255.0f);
|
| + pdman.set3f(fOpColorUni,
|
| + SkGetPackedR32(pixelXor.opColor())/255.0f,
|
| + SkGetPackedG32(pixelXor.opColor())/255.0f,
|
| + SkGetPackedB32(pixelXor.opColor())/255.0f);
|
| };
|
|
|
| GrGLSLProgramDataManager::UniformHandle fOpColorUni;
|
| @@ -319,7 +319,7 @@ GrGLSLXferProcessor* PixelXorXP::createGLSLInstance() const { return new GLPixel
|
|
|
| class GrPixelXorXPFactory : public GrXPFactory {
|
| public:
|
| - static GrXPFactory* Create(SkColor opColor) {
|
| + static GrXPFactory* Create(SkPMColor opColor) {
|
| return new GrPixelXorXPFactory(opColor);
|
| }
|
|
|
| @@ -330,7 +330,7 @@ public:
|
| }
|
|
|
| private:
|
| - GrPixelXorXPFactory(SkColor opColor)
|
| + GrPixelXorXPFactory(SkPMColor opColor)
|
| : fOpColor(opColor) {
|
| this->initClassID<GrPixelXorXPFactory>();
|
| }
|
| @@ -355,7 +355,7 @@ private:
|
|
|
| GR_DECLARE_XP_FACTORY_TEST;
|
|
|
| - SkColor fOpColor;
|
| + SkPMColor fOpColor;
|
|
|
| typedef GrXPFactory INHERITED;
|
| };
|
| @@ -365,13 +365,13 @@ GR_DEFINE_XP_FACTORY_TEST(GrPixelXorXPFactory);
|
| const GrXPFactory* GrPixelXorXPFactory::TestCreate(GrProcessorTestData* d) {
|
| SkColor color = d->fRandom->nextU();
|
|
|
| - return GrPixelXorXPFactory::Create(color);
|
| + return GrPixelXorXPFactory::Create(SkPreMultiplyColor(color));
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|
| bool SkPixelXorXfermode::asFragmentProcessor(const GrFragmentProcessor** output,
|
| - const GrFragmentProcessor* dst) const {
|
| + const GrFragmentProcessor* dst) const {
|
| if (output) {
|
| *output = PixelXorFP::Create(fOpColor, dst);
|
| }
|
|
|