aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkRasterPipeline.cpp
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2017-08-03 10:22:42 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-08-03 15:37:37 +0000
commit16776dfb4b307c70d08e316f2ecf2a53953f2e0d (patch)
treeb95896287b957f1286a8f99c872fda9673def4ae /src/core/SkRasterPipeline.cpp
parent073073e4a49993818a7fc4996a7fb42f3ec79640 (diff)
funnel all constant colors through append_constant_color()
My next step is to change the uniform_color context to struct { float r,g,b,a; uint32_t rgba; }; so that it's trivial to load in both float and 8-bit pipelines. Change-Id: If9bdde353ced3bf9eb0c63204b4770ed614ad16b Reviewed-on: https://skia-review.googlesource.com/30481 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'src/core/SkRasterPipeline.cpp')
-rw-r--r--src/core/SkRasterPipeline.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/core/SkRasterPipeline.cpp b/src/core/SkRasterPipeline.cpp
index bdb3795915..ba07467dfc 100644
--- a/src/core/SkRasterPipeline.cpp
+++ b/src/core/SkRasterPipeline.cpp
@@ -19,7 +19,8 @@ void SkRasterPipeline::reset() {
}
void SkRasterPipeline::append(StockStage stage, void* ctx) {
- SkASSERT(stage != from_srgb);
+ SkASSERT(stage != from_srgb); // Please use append_from_srgb().
+ SkASSERT(stage != uniform_color); // Please use append_constant_color().
this->unchecked_append(stage, ctx);
}
void SkRasterPipeline::unchecked_append(StockStage stage, void* ctx) {
@@ -78,17 +79,17 @@ void SkRasterPipeline::dump() const {
#define INC_COLOR
#endif
-void SkRasterPipeline::append_constant_color(SkArenaAlloc* alloc, const SkPM4f& c) {
- if (c.r() == 0 && c.g() == 0 && c.b() == 0 && c.a() == 1) {
+void SkRasterPipeline::append_constant_color(SkArenaAlloc* alloc, const float rgba[4]) {
+ if (rgba[0] == 0 && rgba[1] == 0 && rgba[2] == 0 && rgba[3] == 1) {
this->append(black_color);
INC_BLACK;
- } else if (c.r() == 1 && c.g() == 1 && c.b() == 1 && c.a() == 1) {
+ } else if (rgba[0] == 1 && rgba[1] == 1 && rgba[2] == 1 && rgba[3] == 1) {
this->append(white_color);
INC_WHITE;
} else {
float* storage = alloc->makeArray<float>(4);
- memcpy(storage, c.fVec, 4 * sizeof(float));
- this->append(uniform_color, storage);
+ memcpy(storage, rgba, 4 * sizeof(float));
+ this->unchecked_append(uniform_color, storage);
INC_COLOR;
}