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

Unified Diff: src/core/SkLinearBitmapPipeline_sample.h

Issue 1877483002: Add clone to Stage. Rename place to mix and PolymorphicUnion to Stage. Cleanup. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Address review comments. Created 4 years, 8 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/SkLinearBitmapPipeline.cpp ('k') | tests/SkColor4fTest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/core/SkLinearBitmapPipeline_sample.h
diff --git a/src/core/SkLinearBitmapPipeline_sample.h b/src/core/SkLinearBitmapPipeline_sample.h
index 93932247cdd9f2e9dda4139bfe5f4d07f7d36d87..7157ffc8ee0b6c0bdae715ae0e235a45781041fb 100644
--- a/src/core/SkLinearBitmapPipeline_sample.h
+++ b/src/core/SkLinearBitmapPipeline_sample.h
@@ -52,22 +52,26 @@ template<typename SourceStrategy, typename Next>
class GeneralSampler {
public:
template<typename... Args>
- GeneralSampler(SkLinearBitmapPipeline::PixelPlacerInterface* next, Args&& ... args)
+ GeneralSampler(SkLinearBitmapPipeline::BlendProcessorInterface* next, Args&& ... args)
: fNext{next}, fStrategy{std::forward<Args>(args)...} { }
+ GeneralSampler(SkLinearBitmapPipeline::BlendProcessorInterface* next,
+ const GeneralSampler& sampler)
+ : fNext{next}, fStrategy{sampler.fStrategy} { }
+
void VECTORCALL nearestListFew(int n, Sk4s xs, Sk4s ys) {
SkASSERT(0 < n && n < 4);
Sk4f px0, px1, px2;
fStrategy.getFewPixels(n, xs, ys, &px0, &px1, &px2);
- if (n >= 1) fNext->placePixel(px0);
- if (n >= 2) fNext->placePixel(px1);
- if (n >= 3) fNext->placePixel(px2);
+ if (n >= 1) fNext->blendPixel(px0);
+ if (n >= 2) fNext->blendPixel(px1);
+ if (n >= 3) fNext->blendPixel(px2);
}
void VECTORCALL nearestList4(Sk4s xs, Sk4s ys) {
Sk4f px0, px1, px2, px3;
fStrategy.get4Pixels(xs, ys, &px0, &px1, &px2, &px3);
- fNext->place4Pixels(px0, px1, px2, px3);
+ fNext->blend4Pixels(px0, px1, px2, px3);
}
void nearestSpan(Span span) {
@@ -102,16 +106,16 @@ public:
return this->bilerNonEdgePixel(xs[index], ys[index]);
};
- if (n >= 1) fNext->placePixel(bilerpPixel(0));
- if (n >= 2) fNext->placePixel(bilerpPixel(1));
- if (n >= 3) fNext->placePixel(bilerpPixel(2));
+ if (n >= 1) fNext->blendPixel(bilerpPixel(0));
+ if (n >= 2) fNext->blendPixel(bilerpPixel(1));
+ if (n >= 3) fNext->blendPixel(bilerpPixel(2));
}
void VECTORCALL bilerpList4(Sk4s xs, Sk4s ys) {
auto bilerpPixel = [&](int index) {
return this->bilerNonEdgePixel(xs[index], ys[index]);
};
- fNext->place4Pixels(bilerpPixel(0), bilerpPixel(1), bilerpPixel(2), bilerpPixel(3));
+ fNext->blend4Pixels(bilerpPixel(0), bilerpPixel(1), bilerpPixel(2), bilerpPixel(3));
}
void VECTORCALL bilerpEdge(Sk4s sampleXs, Sk4s sampleYs) {
@@ -120,7 +124,7 @@ public:
Sk4f ys = Sk4f{sampleYs[0]};
fStrategy.get4Pixels(sampleXs, sampleYs, &px00, &px10, &px01, &px11);
Sk4f pixel = bilerp4(xs, ys, px00, px10, px01, px11);
- fNext->placePixel(pixel);
+ fNext->blendPixel(pixel);
}
void bilerpSpan(Span span) {
@@ -191,11 +195,11 @@ private:
Sk4f px1 = getNextPixel();
Sk4f px2 = getNextPixel();
Sk4f px3 = getNextPixel();
- next->place4Pixels(px0, px1, px2, px3);
+ next->blend4Pixels(px0, px1, px2, px3);
count -= 4;
}
while (count > 0) {
- next->placePixel(getNextPixel());
+ next->blendPixel(getNextPixel());
count -= 1;
}
}
@@ -214,13 +218,13 @@ private:
while (count >= 4) {
Sk4f px0, px1, px2, px3;
fStrategy.get4Pixels(row, ix, &px0, &px1, &px2, &px3);
- next->place4Pixels(px0, px1, px2, px3);
+ next->blend4Pixels(px0, px1, px2, px3);
ix += 4;
count -= 4;
}
while (count > 0) {
- next->placePixel(fStrategy.getPixelAt(row, ix));
+ next->blendPixel(fStrategy.getPixelAt(row, ix));
ix += 1;
count -= 1;
}
@@ -228,13 +232,13 @@ private:
while (count >= 4) {
Sk4f px0, px1, px2, px3;
fStrategy.get4Pixels(row, ix - 3, &px3, &px2, &px1, &px0);
- next->place4Pixels(px0, px1, px2, px3);
+ next->blend4Pixels(px0, px1, px2, px3);
ix -= 4;
count -= 4;
}
while (count > 0) {
- next->placePixel(fStrategy.getPixelAt(row, ix));
+ next->blendPixel(fStrategy.getPixelAt(row, ix));
ix -= 1;
count -= 1;
}
@@ -272,11 +276,11 @@ private:
Sk4f filterPixel = pixelY0 * filterY0 + pixelY1 * filterY1;
int count = span.count();
while (count >= 4) {
- fNext->place4Pixels(filterPixel, filterPixel, filterPixel, filterPixel);
+ fNext->blend4Pixels(filterPixel, filterPixel, filterPixel, filterPixel);
count -= 4;
}
while (count > 0) {
- fNext->placePixel(filterPixel);
+ fNext->blendPixel(filterPixel);
count -= 1;
}
}
@@ -341,12 +345,12 @@ private:
Sk4f fpixel2 = getNextPixel();
Sk4f fpixel3 = getNextPixel();
- fNext->place4Pixels(fpixel0, fpixel1, fpixel2, fpixel3);
+ fNext->blend4Pixels(fpixel0, fpixel1, fpixel2, fpixel3);
count -= 4;
}
while (count > 0) {
- fNext->placePixel(getNextPixel());
+ fNext->blendPixel(getNextPixel());
count -= 1;
}
@@ -416,11 +420,7 @@ private:
Sk4f pxS3 = px30 + px31;
Sk4f px3 = lerp(pxS2, pxS3);
pxB = pxS3;
- fNext->place4Pixels(
- px0,
- px1,
- px2,
- px3);
+ fNext->blend4Pixels(px0, px1, px2, px3);
ix0 += 4;
count -= 4;
}
@@ -428,7 +428,7 @@ private:
Sk4f pixelY0 = fStrategy.getPixelAt(rowY0, ix0);
Sk4f pixelY1 = fStrategy.getPixelAt(rowY1, ix0);
- fNext->placePixel(lerp(pixelY0, pixelY1));
+ fNext->blendPixel(lerp(pixelY0, pixelY1));
ix0 += 1;
count -= 1;
}
@@ -448,11 +448,7 @@ private:
Sk4f pxS0 = px00 + px01;
Sk4f px3 = lerp(pxS0, pxS1);
pxB = pxS0;
- fNext->place4Pixels(
- px0,
- px1,
- px2,
- px3);
+ fNext->blend4Pixels(px0, px1, px2, px3);
ix0 -= 4;
count -= 4;
}
@@ -460,7 +456,7 @@ private:
Sk4f pixelY0 = fStrategy.getPixelAt(rowY0, ix0);
Sk4f pixelY1 = fStrategy.getPixelAt(rowY1, ix0);
- fNext->placePixel(lerp(pixelY0, pixelY1));
+ fNext->blendPixel(lerp(pixelY0, pixelY1));
ix0 -= 1;
count -= 1;
}
@@ -488,7 +484,7 @@ private:
fStrategy.get4Pixels(rowY0, ix, &px00, &px10, &px20, &px30);
Sk4f px01, px11, px21, px31;
fStrategy.get4Pixels(rowY1, ix, &px01, &px11, &px21, &px31);
- fNext->place4Pixels(
+ fNext->blend4Pixels(
lerp(&px00, &px01), lerp(&px10, &px11), lerp(&px20, &px21), lerp(&px30, &px31));
ix += 4;
count -= 4;
@@ -497,7 +493,7 @@ private:
Sk4f pixelY0 = fStrategy.getPixelAt(rowY0, ix);
Sk4f pixelY1 = fStrategy.getPixelAt(rowY1, ix);
- fNext->placePixel(lerp(&pixelY0, &pixelY1));
+ fNext->blendPixel(lerp(&pixelY0, &pixelY1));
ix += 1;
count -= 1;
}
@@ -508,7 +504,7 @@ private:
fStrategy.get4Pixels(rowY0, ix - 3, &px30, &px20, &px10, &px00);
Sk4f px01, px11, px21, px31;
fStrategy.get4Pixels(rowY1, ix - 3, &px31, &px21, &px11, &px01);
- fNext->place4Pixels(
+ fNext->blend4Pixels(
lerp(&px00, &px01), lerp(&px10, &px11), lerp(&px20, &px21), lerp(&px30, &px31));
ix -= 4;
count -= 4;
@@ -517,7 +513,7 @@ private:
Sk4f pixelY0 = fStrategy.getPixelAt(rowY0, ix);
Sk4f pixelY1 = fStrategy.getPixelAt(rowY1, ix);
- fNext->placePixel(lerp(&pixelY0, &pixelY1));
+ fNext->blendPixel(lerp(&pixelY0, &pixelY1));
ix -= 1;
count -= 1;
}
@@ -657,6 +653,15 @@ public:
}
}
+ PixelIndex8(const PixelIndex8& strategy)
+ : fSrc{strategy.fSrc}, fWidth{strategy.fWidth} {
+ fColorTable = (Sk4f*)SkAlign16((intptr_t)fColorTableStorage.get());
+ // TODO: figure out the count.
+ for (int i = 0; i < 256; i++) {
+ fColorTable[i] = strategy.fColorTable[i];
+ }
+ }
+
void VECTORCALL getFewPixels(int n, Sk4s xs, Sk4s ys, Sk4f* px0, Sk4f* px1, Sk4f* px2) {
Sk4i XIs = SkNx_cast<int, SkScalar>(xs);
Sk4i YIs = SkNx_cast<int, SkScalar>(ys);
« no previous file with comments | « src/core/SkLinearBitmapPipeline.cpp ('k') | tests/SkColor4fTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698