aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkColorSpaceXform.cpp
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2018-03-06 14:28:41 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-03-06 20:01:51 +0000
commit2c7113309144ff5fb3e7b8d75208bdf1b87b9feb (patch)
tree89d2cc429043b086fae40116b6296a5fc831dcbb /src/core/SkColorSpaceXform.cpp
parent8994150a436f0e813e9a7b8a2dc0ad237f4e3513 (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.cpp59
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) {