diff options
author | Brian Osman <brianosman@google.com> | 2018-03-06 14:28:41 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-03-06 20:01:51 +0000 |
commit | 2c7113309144ff5fb3e7b8d75208bdf1b87b9feb (patch) | |
tree | 89d2cc429043b086fae40116b6296a5fc831dcbb /src/core/SkColorSpaceXform.cpp | |
parent | 8994150a436f0e813e9a7b8a2dc0ad237f4e3513 (diff) |
Cleaning up SkColorSpaceXform a bit
Remove SkColorSpaceXform_base from the inheritance chain. Move some
enums only used within XYZ to be class scoped. Eliminate redundant
context structs, and just use the SkJumper types directly.
SkColorSpaceXform_Base still exists, but just to hold a couple static
functions. Trying to untangle the dst gamma table mess next.
Bug: skia:
Change-Id: I6d2b7807c33e61a0d7df74e334356567d8a2c0e0
Reviewed-on: https://skia-review.googlesource.com/112601
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'src/core/SkColorSpaceXform.cpp')
-rw-r--r-- | src/core/SkColorSpaceXform.cpp | 59 |
1 files changed, 25 insertions, 34 deletions
diff --git a/src/core/SkColorSpaceXform.cpp b/src/core/SkColorSpaceXform.cpp index 5090e9b636..7c53ed52dc 100644 --- a/src/core/SkColorSpaceXform.cpp +++ b/src/core/SkColorSpaceXform.cpp @@ -404,10 +404,9 @@ SkColorSpaceXform_XYZ::SkColorSpaceXform_XYZ(SkColorSpace_XYZ* src, } } - -bool SkColorSpaceXform_XYZ::onApply(ColorFormat dstColorFormat, void* dst, - ColorFormat srcColorFormat, const void* src, - int len, SkAlphaType alphaType) const { +bool SkColorSpaceXform_XYZ::apply(ColorFormat dstColorFormat, void* dst, + ColorFormat srcColorFormat, const void* src, + int len, SkAlphaType alphaType) const { if (fColorSpacesAreIdentical && kPremul_SkAlphaType != alphaType) { if ((kRGBA_8888_ColorFormat == dstColorFormat && kRGBA_8888_ColorFormat == srcColorFormat) || @@ -433,16 +432,16 @@ bool SkColorSpaceXform_XYZ::onApply(ColorFormat dstColorFormat, void* dst, SkJumper_MemoryCtx src_ctx = { (void*)src, 0 }, dst_ctx = { (void*)dst, 0 }; - LoadTablesContext loadTables; + SkJumper_LoadTablesCtx loadTables; switch (srcColorFormat) { case kRGBA_8888_ColorFormat: if (kLinear_SrcGamma == fSrcGamma) { pipeline.append(SkRasterPipeline::load_8888, &src_ctx); } else { - loadTables.fSrc = src; - loadTables.fR = fSrcGammaTables[0]; - loadTables.fG = fSrcGammaTables[1]; - loadTables.fB = fSrcGammaTables[2]; + loadTables.src = src; + loadTables.r = fSrcGammaTables[0]; + loadTables.g = fSrcGammaTables[1]; + loadTables.b = fSrcGammaTables[2]; pipeline.append(SkRasterPipeline::load_tables, &loadTables); } @@ -451,10 +450,10 @@ bool SkColorSpaceXform_XYZ::onApply(ColorFormat dstColorFormat, void* dst, if (kLinear_SrcGamma == fSrcGamma) { pipeline.append(SkRasterPipeline::load_bgra, &src_ctx); } else { - loadTables.fSrc = src; - loadTables.fR = fSrcGammaTables[2]; - loadTables.fG = fSrcGammaTables[1]; - loadTables.fB = fSrcGammaTables[0]; + loadTables.src = src; + loadTables.r = fSrcGammaTables[2]; + loadTables.g = fSrcGammaTables[1]; + loadTables.b = fSrcGammaTables[0]; pipeline.append(SkRasterPipeline::load_tables, &loadTables); pipeline.append(SkRasterPipeline::swap_rb); } @@ -482,10 +481,10 @@ bool SkColorSpaceXform_XYZ::onApply(ColorFormat dstColorFormat, void* dst, pipeline.append(SkRasterPipeline::from_srgb); break; case kTable_SrcGamma: - loadTables.fSrc = src; - loadTables.fR = fSrcGammaTables[0]; - loadTables.fG = fSrcGammaTables[1]; - loadTables.fB = fSrcGammaTables[2]; + loadTables.src = src; + loadTables.r = fSrcGammaTables[0]; + loadTables.g = fSrcGammaTables[1]; + loadTables.b = fSrcGammaTables[2]; pipeline.append(SkRasterPipeline::load_tables_u16_be, &loadTables); break; } @@ -500,10 +499,10 @@ bool SkColorSpaceXform_XYZ::onApply(ColorFormat dstColorFormat, void* dst, pipeline.append(SkRasterPipeline::from_srgb); break; case kTable_SrcGamma: - loadTables.fSrc = src; - loadTables.fR = fSrcGammaTables[0]; - loadTables.fG = fSrcGammaTables[1]; - loadTables.fB = fSrcGammaTables[2]; + loadTables.src = src; + loadTables.r = fSrcGammaTables[0]; + loadTables.g = fSrcGammaTables[1]; + loadTables.b = fSrcGammaTables[2]; pipeline.append(SkRasterPipeline::load_tables_rgb_u16_be, &loadTables); break; } @@ -531,7 +530,7 @@ bool SkColorSpaceXform_XYZ::onApply(ColorFormat dstColorFormat, void* dst, pipeline.append(SkRasterPipeline::premul); } - TablesContext tables; + SkJumper_ByteTablesRGBCtx tables; float to_2dot2 = 1/2.2f; switch (fDstGamma) { case kSRGB_DstGamma: @@ -541,10 +540,10 @@ bool SkColorSpaceXform_XYZ::onApply(ColorFormat dstColorFormat, void* dst, pipeline.append(SkRasterPipeline::gamma, &to_2dot2); break; case kTable_DstGamma: - tables.fR = fDstGammaTables[0]; - tables.fG = fDstGammaTables[1]; - tables.fB = fDstGammaTables[2]; - tables.fCount = SkColorSpaceXform_Base::kDstGammaTableSize; + tables.r = fDstGammaTables[0]; + tables.g = fDstGammaTables[1]; + tables.b = fDstGammaTables[2]; + tables.n = SkColorSpaceXform_Base::kDstGammaTableSize; pipeline.append(SkRasterPipeline::byte_tables_rgb, &tables); default: break; @@ -594,14 +593,6 @@ std::unique_ptr<SkColorSpaceXform> SlowIdentityXform(SkColorSpace_XYZ* space) { return std::move(xform); } -bool SkColorSpaceXform::apply(ColorFormat dstColorFormat, void* dst, - ColorFormat srcColorFormat, const void* src, - int len, SkAlphaType alphaType) const { - return ((SkColorSpaceXform_Base*) this)->onApply(dstColorFormat, dst, - srcColorFormat, src, - len, alphaType); -} - bool SkColorSpaceXform::Apply(SkColorSpace* dstCS, ColorFormat dstFormat, void* dst, SkColorSpace* srcCS, ColorFormat srcFormat, const void* src, int len, AlphaOp op) { |