diff options
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/SkBlitter_Sprite.cpp | 2 | ||||
-rw-r--r-- | src/core/SkColorFilter.cpp | 2 | ||||
-rw-r--r-- | src/core/SkColorSpaceXform.cpp | 4 | ||||
-rw-r--r-- | src/core/SkColorSpaceXform_A2B.cpp | 3 | ||||
-rw-r--r-- | src/core/SkColorSpace_New.cpp | 20 | ||||
-rw-r--r-- | src/core/SkColorSpace_New.h | 6 | ||||
-rw-r--r-- | src/core/SkConvertPixels.cpp | 2 | ||||
-rw-r--r-- | src/core/SkRasterPipeline.cpp | 10 | ||||
-rw-r--r-- | src/core/SkRasterPipeline.h | 5 | ||||
-rw-r--r-- | src/core/SkRasterPipelineBlitter.cpp | 2 |
10 files changed, 19 insertions, 37 deletions
diff --git a/src/core/SkBlitter_Sprite.cpp b/src/core/SkBlitter_Sprite.cpp index eddb42b25b..3537beaea8 100644 --- a/src/core/SkBlitter_Sprite.cpp +++ b/src/core/SkBlitter_Sprite.cpp @@ -125,7 +125,7 @@ public: } if (fDst.colorSpace() && (!fSource.colorSpace() || fSource.colorSpace()->gammaCloseToSRGB())) { - p.append_from_srgb(fSource.alphaType()); + p.append(SkRasterPipeline::from_srgb); } if (fSource.colorType() == kAlpha_8_SkColorType) { p.append(SkRasterPipeline::set_rgb, &fPaintColor); diff --git a/src/core/SkColorFilter.cpp b/src/core/SkColorFilter.cpp index 9a8b399b9e..3c6beea794 100644 --- a/src/core/SkColorFilter.cpp +++ b/src/core/SkColorFilter.cpp @@ -244,7 +244,7 @@ public: p->append(SkRasterPipeline::to_srgb); break; case Direction::kSRGBToLinear: - p->append_from_srgb(shaderIsOpaque ? kOpaque_SkAlphaType : kUnpremul_SkAlphaType); + p->append(SkRasterPipeline::from_srgb); break; } if (!shaderIsOpaque) { diff --git a/src/core/SkColorSpaceXform.cpp b/src/core/SkColorSpaceXform.cpp index 0792ec894e..9494e249c1 100644 --- a/src/core/SkColorSpaceXform.cpp +++ b/src/core/SkColorSpaceXform.cpp @@ -485,7 +485,7 @@ bool SkColorSpaceXform_XYZ::onApply(ColorFormat dstColorFormat, void* dst, break; case kSRGB_SrcGamma: pipeline.append(SkRasterPipeline::load_u16_be, &src_ctx); - pipeline.append_from_srgb(kUnpremul_SkAlphaType); + pipeline.append(SkRasterPipeline::from_srgb); break; case kTable_SrcGamma: loadTables.fSrc = src; @@ -503,7 +503,7 @@ bool SkColorSpaceXform_XYZ::onApply(ColorFormat dstColorFormat, void* dst, break; case kSRGB_SrcGamma: pipeline.append(SkRasterPipeline::load_rgb_u16_be, &src_ctx); - pipeline.append_from_srgb(kUnpremul_SkAlphaType); + pipeline.append(SkRasterPipeline::from_srgb); break; case kTable_SrcGamma: loadTables.fSrc = src; diff --git a/src/core/SkColorSpaceXform_A2B.cpp b/src/core/SkColorSpaceXform_A2B.cpp index 3543ba40a3..9470247a8d 100644 --- a/src/core/SkColorSpaceXform_A2B.cpp +++ b/src/core/SkColorSpaceXform_A2B.cpp @@ -140,8 +140,7 @@ SkColorSpaceXform_A2B::SkColorSpaceXform_A2B(SkColorSpace_A2B* srcSpace, // Take the fast path for ordinary sRGB. if (3 == currentChannels && kSRGB_SkGammaNamed == e.gammaNamed()) { SkCSXformPrintf("fast path from sRGB\n"); - // Images should always start the pipeline as unpremul - fElementsPipeline.append_from_srgb(kUnpremul_SkAlphaType); + fElementsPipeline.append(SkRasterPipeline::from_srgb); break; } diff --git a/src/core/SkColorSpace_New.cpp b/src/core/SkColorSpace_New.cpp index 0d020c51ed..5db388d07a 100644 --- a/src/core/SkColorSpace_New.cpp +++ b/src/core/SkColorSpace_New.cpp @@ -18,9 +18,9 @@ namespace { return { 1,1, 0,0,0,0,0 }; } - void linearizeDst(SkRasterPipeline*, SkAlphaType) const override {} - void linearizeSrc(SkRasterPipeline*, SkAlphaType) const override {} - void encodeSrc(SkRasterPipeline* ) const override {} + void linearizeDst(SkRasterPipeline*) const override {} + void linearizeSrc(SkRasterPipeline*) const override {} + void encodeSrc(SkRasterPipeline*) const override {} }; struct SRGBTransferFn : public SkColorSpace_New::TransferFn { @@ -28,11 +28,11 @@ namespace { return { 2.4f, 1/1.055f, 0.055f/1.055f, 1/12.92f, 0.04045f, 0, 0 }; } - void linearizeDst(SkRasterPipeline* p, SkAlphaType at) const override { - p->append_from_srgb_dst(at); + void linearizeDst(SkRasterPipeline* p) const override { + p->append(SkRasterPipeline::from_srgb_dst); } - void linearizeSrc(SkRasterPipeline* p, SkAlphaType at) const override { - p->append_from_srgb(at); + void linearizeSrc(SkRasterPipeline* p) const override { + p->append(SkRasterPipeline::from_srgb); } void encodeSrc(SkRasterPipeline* p) const override { p->append(SkRasterPipeline::to_srgb); @@ -49,13 +49,11 @@ namespace { return { fGamma, 1, 0,0,0,0,0 }; } - void linearizeDst(SkRasterPipeline* p, SkAlphaType) const override { + void linearizeDst(SkRasterPipeline* p) const override { p->append(SkRasterPipeline::gamma_dst, &fGamma); - // TODO: use SkAlphaType to clamp like SRGBTransferFn does? } - void linearizeSrc(SkRasterPipeline* p, SkAlphaType) const override { + void linearizeSrc(SkRasterPipeline* p) const override { p->append(SkRasterPipeline::gamma, &fGamma); - // TODO: use SkAlphaType to clamp like SRGBTransferFn does? } void encodeSrc(SkRasterPipeline* p) const override { p->append(SkRasterPipeline::gamma, &fInv); diff --git a/src/core/SkColorSpace_New.h b/src/core/SkColorSpace_New.h index 42d5a9e55f..6f26c3bf4b 100644 --- a/src/core/SkColorSpace_New.h +++ b/src/core/SkColorSpace_New.h @@ -26,9 +26,9 @@ public: virtual SkColorSpaceTransferFn parameterize() const = 0; // Append stages to use this transfer function with SkRasterPipeline-based rendering. - virtual void linearizeDst(SkRasterPipeline*, SkAlphaType) const = 0; - virtual void linearizeSrc(SkRasterPipeline*, SkAlphaType) const = 0; - virtual void encodeSrc(SkRasterPipeline* ) const = 0; + virtual void linearizeDst(SkRasterPipeline*) const = 0; + virtual void linearizeSrc(SkRasterPipeline*) const = 0; + virtual void encodeSrc(SkRasterPipeline*) const = 0; // TODO: Ganesh hooks. diff --git a/src/core/SkConvertPixels.cpp b/src/core/SkConvertPixels.cpp index 2175c8bb8e..725730a1e4 100644 --- a/src/core/SkConvertPixels.cpp +++ b/src/core/SkConvertPixels.cpp @@ -253,7 +253,7 @@ static void convert_with_pipeline(const SkImageInfo& dstInfo, void* dstRow, size SkColorSpaceTransferFn srcFn; if (isColorAware && srcInfo.gammaCloseToSRGB()) { - pipeline.append_from_srgb(premulState); + pipeline.append(SkRasterPipeline::from_srgb); } else if (isColorAware && !srcInfo.colorSpace()->gammaIsLinear()) { SkAssertResult(srcInfo.colorSpace()->isNumericalTransferFn(&srcFn)); if (is_just_gamma(srcFn)) { diff --git a/src/core/SkRasterPipeline.cpp b/src/core/SkRasterPipeline.cpp index 1134bd2acd..c7a0427b1f 100644 --- a/src/core/SkRasterPipeline.cpp +++ b/src/core/SkRasterPipeline.cpp @@ -21,7 +21,6 @@ void SkRasterPipeline::reset() { } void SkRasterPipeline::append(StockStage stage, void* ctx) { - SkASSERT(stage != from_srgb); // Please use append_from_srgb(). SkASSERT(stage != uniform_color); // Please use append_constant_color(). SkASSERT(stage != seed_shader); // Please use append_seed_shader(). this->unchecked_append(stage, ctx); @@ -123,15 +122,6 @@ void SkRasterPipeline::append_constant_color(SkArenaAlloc* alloc, const float rg #undef INC_WHITE #undef INC_COLOR -// TODO: we used to clamp to [0,a]] here if at == kPremul, but don't anymore. -// These should no longer need to be special append() methods. -void SkRasterPipeline::append_from_srgb(SkAlphaType) { - this->unchecked_append(from_srgb, nullptr); -} -void SkRasterPipeline::append_from_srgb_dst(SkAlphaType) { - this->unchecked_append(from_srgb_dst, nullptr); -} - //static int gCounts[5] = { 0, 0, 0, 0, 0 }; void SkRasterPipeline::append_matrix(SkArenaAlloc* alloc, const SkMatrix& matrix) { diff --git a/src/core/SkRasterPipeline.h b/src/core/SkRasterPipeline.h index 005c3dd7ab..ad9fd77a84 100644 --- a/src/core/SkRasterPipeline.h +++ b/src/core/SkRasterPipeline.h @@ -125,11 +125,6 @@ public: void dump() const; - // Conversion from sRGB can be subtly tricky when premultiplication is involved. - // Use these helpers to keep things sane. - void append_from_srgb(SkAlphaType); - void append_from_srgb_dst(SkAlphaType); - // Appends a stage for the specified matrix. // Tries to optimize the stage by analyzing the type of matrix. void append_matrix(SkArenaAlloc*, const SkMatrix&); diff --git a/src/core/SkRasterPipelineBlitter.cpp b/src/core/SkRasterPipelineBlitter.cpp index 098dab8b09..ac8cdd99ad 100644 --- a/src/core/SkRasterPipelineBlitter.cpp +++ b/src/core/SkRasterPipelineBlitter.cpp @@ -238,7 +238,7 @@ void SkRasterPipelineBlitter::append_load_dst(SkRasterPipeline* p) const { default: break; } if (fDst.info().gammaCloseToSRGB()) { - p->append_from_srgb_dst(fDst.info().alphaType()); + p->append(SkRasterPipeline::from_srgb_dst); } if (fDst.info().alphaType() == kUnpremul_SkAlphaType) { p->append(SkRasterPipeline::premul_dst); |