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

Unified Diff: src/core/SkColorSpaceXform.cpp

Issue 2390263002: Add SkColorSpaceXform to the public API (Closed)
Patch Set: Remove type on enum 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/core/SkColorSpaceXform.h ('k') | src/core/SkColorSpaceXform_Base.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/core/SkColorSpaceXform.cpp
diff --git a/src/core/SkColorSpaceXform.cpp b/src/core/SkColorSpaceXform.cpp
index 1c0dd880e779669e2ae6ef186eb6ee1e342c29ac..beca9034d1a1898b12c49a809cc4e875fa19f7c9 100644
--- a/src/core/SkColorSpaceXform.cpp
+++ b/src/core/SkColorSpaceXform.cpp
@@ -8,7 +8,7 @@
#include "SkColorPriv.h"
#include "SkColorSpace_Base.h"
#include "SkColorSpacePriv.h"
-#include "SkColorSpaceXform.h"
+#include "SkColorSpaceXform_Base.h"
#include "SkHalf.h"
#include "SkOpts.h"
#include "SkSRGB.h"
@@ -584,8 +584,9 @@ static void interp_3d_clut(float dst[3], float src[3], const SkColorLookUpTable*
}
}
-static void handle_color_lut(uint32_t* dst, const uint32_t* src, int len,
+static void handle_color_lut(uint32_t* dst, const void* vsrc, int len,
SkColorLookUpTable* colorLUT) {
+ const uint32_t* src = (const uint32_t*) vsrc;
while (len-- > 0) {
uint8_t r = (*src >> 0) & 0xFF,
g = (*src >> 8) & 0xFF,
@@ -1012,10 +1013,11 @@ typedef decltype(store_generic_1<kRGBA_Order> )* Store1Fn;
template <SkAlphaType kAlphaType,
ColorSpaceMatch kCSM>
-static inline void do_color_xform(void* dst, const uint32_t* src, int len,
+static inline void do_color_xform(void* dst, const void* vsrc, int len,
const float* const srcTables[3], const float matrix[16],
const uint8_t* const dstTables[3], LoadFn load, Load1Fn load_1,
StoreFn store, Store1Fn store_1, size_t sizeOfDstPixel) {
+ const uint32_t* src = (const uint32_t*) vsrc;
Sk4f rXgXbX, rYgYbY, rZgZbZ, rTgTbT;
load_matrix(matrix, rXgXbX, rYgYbY, rZgZbZ, rTgTbT);
@@ -1117,7 +1119,7 @@ template <SrcFormat kSrc,
DstFormat kDst,
SkAlphaType kAlphaType,
ColorSpaceMatch kCSM>
-static void color_xform_RGBA(void* dst, const uint32_t* src, int len,
+static void color_xform_RGBA(void* dst, const void* src, int len,
const float* const srcTables[3], const float matrix[16],
const uint8_t* const dstTables[3]) {
LoadFn load;
@@ -1276,27 +1278,29 @@ SkColorSpaceXform_Base<kSrc, kDst, kCSM>
///////////////////////////////////////////////////////////////////////////////////////////////////
template <SrcFormat kSrc, DstFormat kDst, ColorSpaceMatch kCSM>
-static inline void apply_set_alpha(void* dst, const uint32_t* src, int len, SkAlphaType alphaType,
+static inline bool apply_set_alpha(void* dst, const void* src, int len, SkAlphaType alphaType,
const float* const srcTables[3], const float matrix[16],
const uint8_t* const dstTables[3]) {
switch (alphaType) {
case kOpaque_SkAlphaType:
- return color_xform_RGBA<kSrc, kDst, kOpaque_SkAlphaType, kCSM>
+ color_xform_RGBA<kSrc, kDst, kOpaque_SkAlphaType, kCSM>
(dst, src, len, srcTables, matrix, dstTables);
+ return true;
case kPremul_SkAlphaType:
- return color_xform_RGBA<kSrc, kDst, kPremul_SkAlphaType, kCSM>
+ color_xform_RGBA<kSrc, kDst, kPremul_SkAlphaType, kCSM>
(dst, src, len, srcTables, matrix, dstTables);
+ return true;
case kUnpremul_SkAlphaType:
- return color_xform_RGBA<kSrc, kDst, kUnpremul_SkAlphaType, kCSM>
+ color_xform_RGBA<kSrc, kDst, kUnpremul_SkAlphaType, kCSM>
(dst, src, len, srcTables, matrix, dstTables);
+ return true;
default:
- SkASSERT(false);
- return;
+ return false;
}
}
template <SrcGamma kSrc, DstFormat kDst, ColorSpaceMatch kCSM>
-static inline void apply_set_src(void* dst, const uint32_t* src, int len, SkAlphaType alphaType,
+static inline bool apply_set_src(void* dst, const void* src, int len, SkAlphaType alphaType,
const float* const srcTables[3], const float matrix[16],
const uint8_t* const dstTables[3],
SkColorSpaceXform::ColorFormat srcColorFormat) {
@@ -1320,15 +1324,14 @@ static inline void apply_set_src(void* dst, const uint32_t* src, int len, SkAlph
(dst, src, len, alphaType, srcTables, matrix, dstTables);
}
default:
- SkASSERT(false);
+ return false;
}
}
template <SrcGamma kSrc, DstGamma kDst, ColorSpaceMatch kCSM>
-void SkColorSpaceXform_Base<kSrc, kDst, kCSM>
-::apply(void* dst, const uint32_t* src, int len, ColorFormat dstColorFormat,
- ColorFormat srcColorFormat, SkAlphaType alphaType)
-const
+bool SkColorSpaceXform_Base<kSrc, kDst, kCSM>
+::onApply(ColorFormat dstColorFormat, void* dst, ColorFormat srcColorFormat, const void* src,
+ int len, SkAlphaType alphaType) const
{
if (kFull_ColorSpaceMatch == kCSM) {
switch (alphaType) {
@@ -1339,16 +1342,17 @@ const
default:
switch (dstColorFormat) {
case kRGBA_8888_ColorFormat:
- return (void) memcpy(dst, src, len * sizeof(uint32_t));
+ memcpy(dst, src, len * sizeof(uint32_t));
+ return true;
case kBGRA_8888_ColorFormat:
- return SkOpts::RGBA_to_BGRA((uint32_t*) dst, src, len);
+ SkOpts::RGBA_to_BGRA((uint32_t*) dst, src, len);
+ return true;
case kRGBA_F16_ColorFormat:
case kRGBA_F32_ColorFormat:
// There's still work to do to xform to linear floats.
break;
default:
- SkASSERT(false);
- return;
+ return false;
}
}
}
@@ -1412,8 +1416,7 @@ const
(dst, src, len, alphaType, fSrcGammaTables, fSrcToDst, nullptr,
srcColorFormat);
default:
- SkASSERT(false);
- return;
+ return false;
}
case kRGBA_F32_ColorFormat:
switch (kDst) {
@@ -1422,12 +1425,10 @@ const
(dst, src, len, alphaType, fSrcGammaTables, fSrcToDst, nullptr,
srcColorFormat);
default:
- SkASSERT(false);
- return;
+ return false;
}
default:
- SkASSERT(false);
- return;
+ return false;
}
}
« no previous file with comments | « src/core/SkColorSpaceXform.h ('k') | src/core/SkColorSpaceXform_Base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698